about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-09-17 23:30:49 +0200
committerGitHub <noreply@github.com>2022-09-17 23:30:49 +0200
commita6b34cd928f663acdeb36b1f0467f55516ca37da (patch)
treefc8e71bbfa6c1a8f05d2cd77db063484ce4af89d /src/test/ui
parent83623215adfe49f81ad9e3786c7c22e073070bb6 (diff)
parentd7b9221405c7f852663a7c5bef660582cb5cd972 (diff)
downloadrust-a6b34cd928f663acdeb36b1f0467f55516ca37da.tar.gz
rust-a6b34cd928f663acdeb36b1f0467f55516ca37da.zip
Rollup merge of #101713 - Bryanskiy:AccessLevels, r=petrochenkov
change AccessLevels representation

Part of RFC (https://github.com/rust-lang/rust/issues/48054). This patch implements effective visibility table with basic methods and change AccessLevels table representation according to it.

r? ``@petrochenkov``
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/privacy/access_levels.rs69
-rw-r--r--src/test/ui/privacy/access_levels.stderr151
2 files changed, 106 insertions, 114 deletions
diff --git a/src/test/ui/privacy/access_levels.rs b/src/test/ui/privacy/access_levels.rs
index d51d2b57267..aa718ab9254 100644
--- a/src/test/ui/privacy/access_levels.rs
+++ b/src/test/ui/privacy/access_levels.rs
@@ -1,49 +1,62 @@
 #![feature(rustc_attrs)]
 
-#[rustc_access_level] mod outer { //~ ERROR None
-    #[rustc_access_level] pub mod inner { //~ ERROR Some(Exported)
-        #[rustc_access_level]
-        extern "C" { //~ ERROR Some(Exported)
-            #[rustc_access_level] static a: u8; //~ ERROR None
-            #[rustc_access_level] pub fn b(); //~ ERROR Some(Exported)
-        }
-        #[rustc_access_level]
-        pub trait Trait { //~ ERROR Some(Exported)
-            #[rustc_access_level] const A: i32; //~ ERROR Some(Exported)
-            #[rustc_access_level] type B; //~ ERROR Some(Exported)
+#[rustc_effective_visibility]
+mod outer { //~ ERROR Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
+    #[rustc_effective_visibility]
+    pub mod inner1 { //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+
+        #[rustc_effective_visibility]
+        extern "C" {} //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+
+        #[rustc_effective_visibility]
+        pub trait PubTrait { //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+            #[rustc_effective_visibility]
+            const A: i32; //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+            #[rustc_effective_visibility]
+            type B; //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
         }
 
-        #[rustc_access_level]
-        pub struct Struct { //~ ERROR Some(Exported)
-            #[rustc_access_level] a: u8, //~ ERROR None
-            #[rustc_access_level] pub b: u8, //~ ERROR Some(Exported)
-        }
+        #[rustc_effective_visibility]
+        struct PrivStruct; //~ ERROR Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
 
-        #[rustc_access_level]
-        pub union Union { //~ ERROR Some(Exported)
-            #[rustc_access_level] a: u8, //~ ERROR None
-            #[rustc_access_level] pub b: u8, //~ ERROR Some(Exported)
+        #[rustc_effective_visibility]
+        pub union PubUnion { //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+            #[rustc_effective_visibility]
+            a: u8, //~ ERROR Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
+            #[rustc_effective_visibility]
+            pub b: u8, //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
         }
 
-        #[rustc_access_level]
-        pub enum Enum { //~ ERROR Some(Exported)
-            #[rustc_access_level] A( //~ ERROR Some(Exported)
-                #[rustc_access_level] Struct, //~ ERROR Some(Exported)
-                #[rustc_access_level] Union,  //~ ERROR Some(Exported)
+        #[rustc_effective_visibility]
+        pub enum Enum { //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+            #[rustc_effective_visibility]
+            A( //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+                #[rustc_effective_visibility]
+                PubUnion,  //~ ERROR Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
             ),
         }
     }
 
-    #[rustc_access_level] macro_rules! none_macro { //~ ERROR None
+    #[rustc_effective_visibility]
+    macro_rules! none_macro { //~ Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
         () => {};
     }
 
     #[macro_export]
-    #[rustc_access_level] macro_rules! public_macro { //~ ERROR Some(Public)
+    #[rustc_effective_visibility]
+    macro_rules! public_macro { //~ Public: pub, Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
         () => {};
     }
+
+    #[rustc_effective_visibility]
+    pub struct ReachableStruct { //~ ERROR Public: pub(self), Exported: pub(self), Reachable: pub, ReachableFromImplTrait: pub
+        #[rustc_effective_visibility]
+        pub a: u8, //~ ERROR Public: pub(self), Exported: pub(self), Reachable: pub, ReachableFromImplTrait: pub
+    }
 }
 
-pub use outer::inner;
+pub use outer::inner1;
+
+pub fn foo() -> outer::ReachableStruct { outer::ReachableStruct {a: 0} }
 
 fn main() {}
diff --git a/src/test/ui/privacy/access_levels.stderr b/src/test/ui/privacy/access_levels.stderr
index f326293c384..2ed6c330a2f 100644
--- a/src/test/ui/privacy/access_levels.stderr
+++ b/src/test/ui/privacy/access_levels.stderr
@@ -1,125 +1,104 @@
-error: None
-  --> $DIR/access_levels.rs:3:23
+error: Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
+  --> $DIR/access_levels.rs:4:1
    |
-LL | #[rustc_access_level] mod outer {
-   |                       ^^^^^^^^^
+LL | mod outer {
+   | ^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:4:27
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:6:5
    |
-LL |     #[rustc_access_level] pub mod inner {
-   |                           ^^^^^^^^^^^^^
+LL |     pub mod inner1 {
+   |     ^^^^^^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:6:9
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:9:9
    |
-LL | /         extern "C" {
-LL | |             #[rustc_access_level] static a: u8;
-LL | |             #[rustc_access_level] pub fn b();
-LL | |         }
-   | |_________^
+LL |         extern "C" {}
+   |         ^^^^^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:11:9
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:12:9
    |
-LL |         pub trait Trait {
-   |         ^^^^^^^^^^^^^^^
+LL |         pub trait PubTrait {
+   |         ^^^^^^^^^^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:17:9
+error: Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
+  --> $DIR/access_levels.rs:20:9
    |
-LL |         pub struct Struct {
+LL |         struct PrivStruct;
    |         ^^^^^^^^^^^^^^^^^
 
-error: None
-  --> $DIR/access_levels.rs:18:35
-   |
-LL |             #[rustc_access_level] a: u8,
-   |                                   ^^^^^
-
-error: Some(Exported)
-  --> $DIR/access_levels.rs:19:35
-   |
-LL |             #[rustc_access_level] pub b: u8,
-   |                                   ^^^^^^^^^
-
-error: Some(Exported)
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
   --> $DIR/access_levels.rs:23:9
    |
-LL |         pub union Union {
-   |         ^^^^^^^^^^^^^^^
+LL |         pub union PubUnion {
+   |         ^^^^^^^^^^^^^^^^^^
 
-error: None
-  --> $DIR/access_levels.rs:24:35
+error: Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
+  --> $DIR/access_levels.rs:25:13
    |
-LL |             #[rustc_access_level] a: u8,
-   |                                   ^^^^^
+LL |             a: u8,
+   |             ^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:25:35
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:27:13
    |
-LL |             #[rustc_access_level] pub b: u8,
-   |                                   ^^^^^^^^^
+LL |             pub b: u8,
+   |             ^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:29:9
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:31:9
    |
 LL |         pub enum Enum {
    |         ^^^^^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:30:35
-   |
-LL |             #[rustc_access_level] A(
-   |                                   ^
-
-error: Some(Exported)
-  --> $DIR/access_levels.rs:31:39
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:33:13
    |
-LL |                 #[rustc_access_level] Struct,
-   |                                       ^^^^^^
+LL |             A(
+   |             ^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:32:39
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:35:17
    |
-LL |                 #[rustc_access_level] Union,
-   |                                       ^^^^^
+LL |                 PubUnion,
+   |                 ^^^^^^^^
 
-error: None
-  --> $DIR/access_levels.rs:37:27
+error: Public: pub(self), Exported: pub(self), Reachable: pub(self), ReachableFromImplTrait: pub(self)
+  --> $DIR/access_levels.rs:41:5
    |
-LL |     #[rustc_access_level] macro_rules! none_macro {
-   |                           ^^^^^^^^^^^^^^^^^^^^^^^
+LL |     macro_rules! none_macro {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^
 
-error: Some(Public)
-  --> $DIR/access_levels.rs:42:27
+error: Public: pub, Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:47:5
    |
-LL |     #[rustc_access_level] macro_rules! public_macro {
-   |                           ^^^^^^^^^^^^^^^^^^^^^^^^^
+LL |     macro_rules! public_macro {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:12:35
+error: Public: pub(self), Exported: pub(self), Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:52:5
    |
-LL |             #[rustc_access_level] const A: i32;
-   |                                   ^^^^^^^^^^^^
+LL |     pub struct ReachableStruct {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:13:35
+error: Public: pub(self), Exported: pub(self), Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:54:9
    |
-LL |             #[rustc_access_level] type B;
-   |                                   ^^^^^^
+LL |         pub a: u8,
+   |         ^^^^^^^^^
 
-error: None
-  --> $DIR/access_levels.rs:7:35
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:14:13
    |
-LL |             #[rustc_access_level] static a: u8;
-   |                                   ^^^^^^^^^^^^
+LL |             const A: i32;
+   |             ^^^^^^^^^^^^
 
-error: Some(Exported)
-  --> $DIR/access_levels.rs:8:35
+error: Public: pub(self), Exported: pub, Reachable: pub, ReachableFromImplTrait: pub
+  --> $DIR/access_levels.rs:16:13
    |
-LL |             #[rustc_access_level] pub fn b();
-   |                                   ^^^^^^^^^^
+LL |             type B;
+   |             ^^^^^^
 
-error: aborting due to 20 previous errors
+error: aborting due to 17 previous errors