about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-07-06 15:10:37 +0000
committerbors <bors@rust-lang.org>2022-07-06 15:10:37 +0000
commit049308cf8b48e9d67e54d6d0b01c10c79d1efc3a (patch)
treebeb9d9547194a26f8c61a8afb20da147847860b1 /src
parent0aef72017f0db429d0a2f9fae36c9c5b5d0a1225 (diff)
parent7f62a719afb3b7f1c0a4fed0c921e8b314636edb (diff)
downloadrust-049308cf8b48e9d67e54d6d0b01c10c79d1efc3a.tar.gz
rust-049308cf8b48e9d67e54d6d0b01c10c79d1efc3a.zip
Auto merge of #98970 - Dylan-DPC:rollup-j0od37w, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #98881 (Only compute DefKind through the query.)
 - #98884 (macros: `LintDiagnostic` derive)
 - #98964 (fix typo in function name)
 - #98967 (fix typo in note about multiple inaccessible type aliases)
 - #98968 (assert Scalar sanity)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/passes/check_code_block_syntax.rs5
-rw-r--r--src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs19
-rw-r--r--src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr24
-rw-r--r--src/test/ui/consts/const-enum-cast.rs15
-rw-r--r--src/test/ui/imports/inaccessible_type_aliases.rs14
-rw-r--r--src/test/ui/imports/inaccessible_type_aliases.stderr30
6 files changed, 103 insertions, 4 deletions
diff --git a/src/librustdoc/passes/check_code_block_syntax.rs b/src/librustdoc/passes/check_code_block_syntax.rs
index e3b349af661..8bf0971ccb5 100644
--- a/src/librustdoc/passes/check_code_block_syntax.rs
+++ b/src/librustdoc/passes/check_code_block_syntax.rs
@@ -1,7 +1,8 @@
 //! Validates syntax inside Rust code blocks (\`\`\`rust).
 use rustc_data_structures::sync::{Lock, Lrc};
-use rustc_errors::{emitter::Emitter, Applicability, Diagnostic, Handler, LazyFallbackBundle};
-use rustc_middle::lint::LintDiagnosticBuilder;
+use rustc_errors::{
+    emitter::Emitter, Applicability, Diagnostic, Handler, LazyFallbackBundle, LintDiagnosticBuilder,
+};
 use rustc_parse::parse_stream_from_source_str;
 use rustc_session::parse::ParseSess;
 use rustc_span::hygiene::{AstPass, ExpnData, ExpnKind, LocalExpnId};
diff --git a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs
index 18283c19cb4..56e95d70fd5 100644
--- a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs
+++ b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.rs
@@ -17,7 +17,7 @@ use rustc_span::symbol::Ident;
 use rustc_span::Span;
 
 extern crate rustc_macros;
-use rustc_macros::{SessionDiagnostic, SessionSubdiagnostic};
+use rustc_macros::{SessionDiagnostic, LintDiagnostic, SessionSubdiagnostic};
 
 extern crate rustc_middle;
 use rustc_middle::ty::Ty;
@@ -535,3 +535,20 @@ struct LabelWithTrailingList {
     //~^ ERROR `#[label(...)]` is not a valid attribute
     span: Span,
 }
+
+#[derive(SessionDiagnostic)]
+#[lint(typeck::ambiguous_lifetime_bound)]
+//~^ ERROR only `#[error(..)]` and `#[warn(..)]` are supported
+struct LintsBad {
+}
+
+#[derive(LintDiagnostic)]
+#[lint(typeck::ambiguous_lifetime_bound)]
+struct LintsGood {
+}
+
+#[derive(LintDiagnostic)]
+#[error(typeck::ambiguous_lifetime_bound)]
+//~^ ERROR only `#[lint(..)]` is supported
+struct ErrorsBad {
+}
diff --git a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr
index 9e2e34e4bec..98c22af387e 100644
--- a/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr
+++ b/src/test/ui-fulldeps/session-diagnostic/diagnostic-derive.stderr
@@ -363,6 +363,28 @@ error: `#[label(...)]` is not a valid attribute
 LL |     #[label(typeck::label, foo("..."))]
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+error: only `#[error(..)]` and `#[warn(..)]` are supported
+  --> $DIR/diagnostic-derive.rs:540:1
+   |
+LL | / #[lint(typeck::ambiguous_lifetime_bound)]
+LL | |
+LL | | struct LintsBad {
+LL | | }
+   | |_^
+   |
+   = help: use the `#[error(...)]` attribute to create a error
+
+error: only `#[lint(..)]` is supported
+  --> $DIR/diagnostic-derive.rs:551:1
+   |
+LL | / #[error(typeck::ambiguous_lifetime_bound)]
+LL | |
+LL | | struct ErrorsBad {
+LL | | }
+   | |_^
+   |
+   = help: use the `#[lint(...)]` attribute to create a lint
+
 error: cannot find attribute `nonsense` in this scope
   --> $DIR/diagnostic-derive.rs:53:3
    |
@@ -395,7 +417,7 @@ LL |         arg: impl IntoDiagnosticArg,
    |                   ^^^^^^^^^^^^^^^^^ required by this bound in `DiagnosticBuilder::<'a, G>::set_arg`
    = note: this error originates in the derive macro `SessionDiagnostic` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: aborting due to 46 previous errors
+error: aborting due to 48 previous errors
 
 Some errors have detailed explanations: E0277, E0425.
 For more information about an error, try `rustc --explain E0277`.
diff --git a/src/test/ui/consts/const-enum-cast.rs b/src/test/ui/consts/const-enum-cast.rs
index a3255c2f601..39968495144 100644
--- a/src/test/ui/consts/const-enum-cast.rs
+++ b/src/test/ui/consts/const-enum-cast.rs
@@ -4,6 +4,19 @@
 enum A { A1, A2 }
 enum B { B1=4, B2=2 }
 
+#[allow(dead_code)]
+#[repr(align(8))]
+enum Aligned {
+    Zero = 0,
+    One = 1,
+}
+
+// regression test for https://github.com/rust-lang/rust/issues/96185
+const X: u8 = {
+    let aligned = Aligned::Zero;
+    aligned as u8
+};
+
 pub fn main () {
     static c1: isize = A::A2 as isize;
     static c2: isize = B::B2 as isize;
@@ -23,4 +36,6 @@ pub fn main () {
     assert_eq!(c2_2, 4);
     assert_eq!(a1_2, 0);
     assert_eq!(a2_2, 4);
+
+    assert_eq!(X, 0);
 }
diff --git a/src/test/ui/imports/inaccessible_type_aliases.rs b/src/test/ui/imports/inaccessible_type_aliases.rs
new file mode 100644
index 00000000000..c3d4214e282
--- /dev/null
+++ b/src/test/ui/imports/inaccessible_type_aliases.rs
@@ -0,0 +1,14 @@
+mod a {
+    type Foo = u64;
+    type Bar = u64;
+}
+
+mod b {
+    type Foo = u64;
+}
+
+fn main() {
+    let x: Foo = 100; //~ ERROR: cannot find type `Foo` in this scope
+    let y: Bar = 100; //~ ERROR: cannot find type `Bar` in this scope
+    println!("x: {}, y: {}", x, y);
+}
diff --git a/src/test/ui/imports/inaccessible_type_aliases.stderr b/src/test/ui/imports/inaccessible_type_aliases.stderr
new file mode 100644
index 00000000000..ef224246061
--- /dev/null
+++ b/src/test/ui/imports/inaccessible_type_aliases.stderr
@@ -0,0 +1,30 @@
+error[E0412]: cannot find type `Foo` in this scope
+  --> $DIR/inaccessible_type_aliases.rs:11:12
+   |
+LL |     let x: Foo = 100;
+   |            ^^^ not found in this scope
+   |
+note: these type aliases exist but are inaccessible
+  --> $DIR/inaccessible_type_aliases.rs:2:5
+   |
+LL |     type Foo = u64;
+   |     ^^^^^^^^^^^^^^^ `a::Foo`: not accessible
+...
+LL |     type Foo = u64;
+   |     ^^^^^^^^^^^^^^^ `b::Foo`: not accessible
+
+error[E0412]: cannot find type `Bar` in this scope
+  --> $DIR/inaccessible_type_aliases.rs:12:12
+   |
+LL |     let y: Bar = 100;
+   |            ^^^ not found in this scope
+   |
+note: type alias `a::Bar` exists but is inaccessible
+  --> $DIR/inaccessible_type_aliases.rs:3:5
+   |
+LL |     type Bar = u64;
+   |     ^^^^^^^^^^^^^^^ not accessible
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0412`.