From: Muhammad Mahad Date: Sun, 3 Sep 2023 06:13:53 +0000 (+0500) Subject: gccrs: [E0603] Use of private item outside scope X-Git-Tag: basepoints/gcc-15~2175 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1e4553be001fab0836d82ca4322af6d6c655c0fd;p=thirdparty%2Fgcc.git gccrs: [E0603] Use of private item outside scope gcc/rust/ChangeLog: * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::check_for_privacy_violation): Added errorcode & richlocation. gcc/testsuite/ChangeLog: * rust/compile/privacy1.rs: Added errorcode. * rust/compile/privacy3.rs: likewise. * rust/compile/privacy4.rs: likewise. * rust/compile/privacy5.rs: likewise. Signed-off-by: Muhammad Mahad --- diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc index 2c9f4b75a065..7c3b4149d61d 100644 --- a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc +++ b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc @@ -166,7 +166,12 @@ PrivacyReporter::check_for_privacy_violation (const NodeId &use_id, } if (!valid) - rust_error_at (locus, "definition is private in this context"); + { + rich_location richloc (line_table, locus); + richloc.add_fixit_replace ("item is private"); + rust_error_at (richloc, ErrorCode::E0603, + "definition is private in this context"); + } } void diff --git a/gcc/testsuite/rust/compile/privacy1.rs b/gcc/testsuite/rust/compile/privacy1.rs index 1cc83c04abe8..61a2ae936356 100644 --- a/gcc/testsuite/rust/compile/privacy1.rs +++ b/gcc/testsuite/rust/compile/privacy1.rs @@ -4,7 +4,7 @@ mod orange { pub fn doux() {} } - fn brown() { + fn brown() {// E0603 green::sain(); // { dg-error "definition is private in this context" } green::doux(); } diff --git a/gcc/testsuite/rust/compile/privacy3.rs b/gcc/testsuite/rust/compile/privacy3.rs index d48acea47868..8c8c199258f1 100644 --- a/gcc/testsuite/rust/compile/privacy3.rs +++ b/gcc/testsuite/rust/compile/privacy3.rs @@ -8,7 +8,7 @@ mod orange { } fn brown() { - if green::sain() { + if green::sain() {// E0603 // { dg-error "definition is private in this context" "" { target *-*-* } .-1 } green::doux(); } diff --git a/gcc/testsuite/rust/compile/privacy4.rs b/gcc/testsuite/rust/compile/privacy4.rs index 648b7b9adb76..7865f6a3d479 100644 --- a/gcc/testsuite/rust/compile/privacy4.rs +++ b/gcc/testsuite/rust/compile/privacy4.rs @@ -8,7 +8,7 @@ mod orange { } } - fn brown() { + fn brown() {// E0603 green::bean::(false); // { dg-error "definition is private in this context" "" { target *-*-* } .-1 } let a = green::bean::(15); diff --git a/gcc/testsuite/rust/compile/privacy5.rs b/gcc/testsuite/rust/compile/privacy5.rs index 0e0e496dde23..16445ddc3e3b 100644 --- a/gcc/testsuite/rust/compile/privacy5.rs +++ b/gcc/testsuite/rust/compile/privacy5.rs @@ -5,7 +5,7 @@ mod orange { pub struct Baz; } - fn brown() { + fn brown() {// E0603 let _ = green::Foo; // { dg-error "definition is private in this context" } let _ = green::Bar; let _ = green::Baz;