diff options
author | Muhammad Mahad <mahadtxt@gmail.com> | 2023-09-03 11:13:53 +0500 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-09-03 18:04:55 +0000 |
commit | 45d892b542d1a4d5052842d9cc512d23a2770ac5 (patch) | |
tree | c1b2ae4b612672f5d05e80ae3a6987417258e991 | |
parent | b1956a4f70ee26dd6f02e7dc77787c456907943e (diff) | |
download | gcc-45d892b542d1a4d5052842d9cc512d23a2770ac5.zip gcc-45d892b542d1a4d5052842d9cc512d23a2770ac5.tar.gz gcc-45d892b542d1a4d5052842d9cc512d23a2770ac5.tar.bz2 |
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 <mahadtxt@gmail.com>
-rw-r--r-- | gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc | 7 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/privacy1.rs | 2 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/privacy3.rs | 2 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/privacy4.rs | 2 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/privacy5.rs | 2 |
5 files changed, 10 insertions, 5 deletions
diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc index 8f0d04c..fb24159 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 1cc83c0..61a2ae9 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 d48acea..8c8c199 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 648b7b9..7865f6a 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::<bool>(false); // { dg-error "definition is private in this context" "" { target *-*-* } .-1 } let a = green::bean::<i32>(15); diff --git a/gcc/testsuite/rust/compile/privacy5.rs b/gcc/testsuite/rust/compile/privacy5.rs index 0e0e496..16445dd 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; |