about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/symbol-names/const-generics-demangling.legacy.stderr74
-rw-r--r--src/test/ui/symbol-names/const-generics-demangling.rs68
-rw-r--r--src/test/ui/symbol-names/const-generics-demangling.stderr74
-rw-r--r--src/test/ui/symbol-names/const-generics-demangling.v0.stderr74
-rw-r--r--src/test/ui/symbol-names/types.legacy.stderr470
-rw-r--r--src/test/ui/symbol-names/types.rs170
-rw-r--r--src/test/ui/symbol-names/types.verbose-legacy.stderr470
m---------src/tools/rust-analyzer34
8 files changed, 1322 insertions, 112 deletions
diff --git a/src/test/ui/symbol-names/const-generics-demangling.legacy.stderr b/src/test/ui/symbol-names/const-generics-demangling.legacy.stderr
new file mode 100644
index 00000000000..bebbb7aac98
--- /dev/null
+++ b/src/test/ui/symbol-names/const-generics-demangling.legacy.stderr
@@ -0,0 +1,74 @@
+error: symbol-name(_ZN1c21Unsigned$LT$11_u8$GT$1f17h[HASH]E)
+  --> $DIR/const-generics-demangling.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(c::Unsigned<11_u8>::f::h[HASH])
+  --> $DIR/const-generics-demangling.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(c::Unsigned<11_u8>::f)
+  --> $DIR/const-generics-demangling.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1c22Signed$LT$.152_i16$GT$1f17h[HASH]E)
+  --> $DIR/const-generics-demangling.rs:26:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(c::Signed<.152_i16>::f::h[HASH])
+  --> $DIR/const-generics-demangling.rs:26:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(c::Signed<.152_i16>::f)
+  --> $DIR/const-generics-demangling.rs:26:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1c13Bool$LT$_$GT$1f17h[HASH]E)
+  --> $DIR/const-generics-demangling.rs:39:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(c::Bool<_>::f::h[HASH])
+  --> $DIR/const-generics-demangling.rs:39:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(c::Bool<_>::f)
+  --> $DIR/const-generics-demangling.rs:39:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1c13Char$LT$_$GT$1f17h[HASH]E)
+  --> $DIR/const-generics-demangling.rs:52:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(c::Char<_>::f::h[HASH])
+  --> $DIR/const-generics-demangling.rs:52:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(c::Char<_>::f)
+  --> $DIR/const-generics-demangling.rs:52:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 12 previous errors
+
diff --git a/src/test/ui/symbol-names/const-generics-demangling.rs b/src/test/ui/symbol-names/const-generics-demangling.rs
index 5c40c391a9e..4a04eca67fd 100644
--- a/src/test/ui/symbol-names/const-generics-demangling.rs
+++ b/src/test/ui/symbol-names/const-generics-demangling.rs
@@ -1,38 +1,62 @@
 // build-fail
-// compile-flags: -C symbol-mangling-version=v0 --crate-name=c
-// normalize-stderr-test: "c\[.*?\]" -> "c[HASH]"
+// revisions: legacy v0
+// compile-flags: --crate-name=c
+//[legacy]compile-flags: -C symbol-mangling-version=legacy -Z unstable-options
+//    [v0]compile-flags: -C symbol-mangling-version=v0
+//[legacy]normalize-stderr-test: "h[[:xdigit:]]{16}" -> "h[HASH]"
+//    [v0]normalize-stderr-test: "c\[.*?\]" -> "c[HASH]"
 #![feature(rustc_attrs)]
 
 pub struct Unsigned<const F: u8>;
 
-#[rustc_symbol_name]
-//~^ ERROR symbol-name(_RMCs
-//~| ERROR demangling(<c[
-//~| ERROR demangling-alt(<c::Unsigned<11>>)
-impl Unsigned<11> {}
+impl Unsigned<11> {
+    #[rustc_symbol_name]
+    //[v0]~^ ERROR symbol-name(_RNvMCs
+    //[v0]~| ERROR demangling(<c[
+    //[v0]~| ERROR demangling-alt(<c::Unsigned<11>>::f)
+    //[legacy]~^^^^ ERROR symbol-name(_ZN1c21Unsigned$LT$11_u8$GT$
+    //[legacy]~|    ERROR demangling(c::Unsigned<11_u8>::f::
+    //[legacy]~|    ERROR demangling-alt(c::Unsigned<11_u8>::f)
+    fn f() {}
+}
 
 pub struct Signed<const F: i16>;
 
-#[rustc_symbol_name]
-//~^ ERROR symbol-name(_RMs_Cs
-//~| ERROR demangling(<c[
-//~| ERROR demangling-alt(<c::Signed<-152>>)
-impl Signed<-152> {}
+impl Signed<-152> {
+    #[rustc_symbol_name]
+    //[v0]~^ ERROR symbol-name(_RNvMs_Cs
+    //[v0]~| ERROR demangling(<c[
+    //[v0]~| ERROR demangling-alt(<c::Signed<-152>>::f)
+    //[legacy]~^^^^ ERROR symbol-name(_ZN1c22Signed$LT$.152_i16$GT$
+    //[legacy]~|    ERROR demangling(c::Signed<.152_i16>::f::
+    //[legacy]~|    ERROR demangling-alt(c::Signed<.152_i16>::f)
+    fn f() {}
+}
 
 pub struct Bool<const F: bool>;
 
-#[rustc_symbol_name]
-//~^ ERROR symbol-name(_RMs0_Cs
-//~| ERROR demangling(<c[
-//~| ERROR demangling-alt(<c::Bool<true>>)
-impl Bool<true> {}
+impl Bool<true> {
+    #[rustc_symbol_name]
+    //[v0]~^ ERROR symbol-name(_RNvMs0_Cs
+    //[v0]~| ERROR demangling(<c[
+    //[v0]~| ERROR demangling-alt(<c::Bool<true>>::f)
+    //[legacy]~^^^^ ERROR symbol-name(_ZN1c13Bool$LT$_$GT$
+    //[legacy]~|    ERROR demangling(c::Bool<_>::f::
+    //[legacy]~|    ERROR demangling-alt(c::Bool<_>::f)
+    fn f() {}
+}
 
 pub struct Char<const F: char>;
 
-#[rustc_symbol_name]
-//~^ ERROR symbol-name(_RMs1_Cs
-//~| ERROR demangling(<c[
-//~| ERROR demangling-alt(<c::Char<'∂'>>)
-impl Char<'∂'> {}
+impl Char<'∂'> {
+    #[rustc_symbol_name]
+    //[v0]~^ ERROR symbol-name(_RNvMs1_Cs
+    //[v0]~| ERROR demangling(<c[
+    //[v0]~| ERROR demangling-alt(<c::Char<'∂'>>::f)
+    //[legacy]~^^^^ ERROR symbol-name(_ZN1c13Char$LT$_$GT$
+    //[legacy]~|    ERROR demangling(c::Char<_>::f::
+    //[legacy]~|    ERROR demangling-alt(c::Char<_>::f)
+    fn f() {}
+}
 
 fn main() {}
diff --git a/src/test/ui/symbol-names/const-generics-demangling.stderr b/src/test/ui/symbol-names/const-generics-demangling.stderr
deleted file mode 100644
index 8aa08b8a22c..00000000000
--- a/src/test/ui/symbol-names/const-generics-demangling.stderr
+++ /dev/null
@@ -1,74 +0,0 @@
-error: symbol-name(_RMCsCRATE_HASH_1cINtB<REF>_8UnsignedKhb_E)
-  --> $DIR/const-generics-demangling.rs:8:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling(<c[HASH]::Unsigned<11u8>>)
-  --> $DIR/const-generics-demangling.rs:8:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling-alt(<c::Unsigned<11>>)
-  --> $DIR/const-generics-demangling.rs:8:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: symbol-name(_RMs_CsCRATE_HASH_1cINtB<REF>_6SignedKsn98_E)
-  --> $DIR/const-generics-demangling.rs:16:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling(<c[HASH]::Signed<-152i16>>)
-  --> $DIR/const-generics-demangling.rs:16:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling-alt(<c::Signed<-152>>)
-  --> $DIR/const-generics-demangling.rs:16:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: symbol-name(_RMs0_CsCRATE_HASH_1cINtB<REF>_4BoolKb1_E)
-  --> $DIR/const-generics-demangling.rs:24:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling(<c[HASH]::Bool<true>>)
-  --> $DIR/const-generics-demangling.rs:24:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling-alt(<c::Bool<true>>)
-  --> $DIR/const-generics-demangling.rs:24:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: symbol-name(_RMs1_CsCRATE_HASH_1cINtB<REF>_4CharKc2202_E)
-  --> $DIR/const-generics-demangling.rs:32:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling(<c[HASH]::Char<'∂'>>)
-  --> $DIR/const-generics-demangling.rs:32:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: demangling-alt(<c::Char<'∂'>>)
-  --> $DIR/const-generics-demangling.rs:32:1
-   |
-LL | #[rustc_symbol_name]
-   | ^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 12 previous errors
-
diff --git a/src/test/ui/symbol-names/const-generics-demangling.v0.stderr b/src/test/ui/symbol-names/const-generics-demangling.v0.stderr
new file mode 100644
index 00000000000..7238a849332
--- /dev/null
+++ b/src/test/ui/symbol-names/const-generics-demangling.v0.stderr
@@ -0,0 +1,74 @@
+error: symbol-name(_RNvMCsCRATE_HASH_1cINtB<REF>_8UnsignedKhb_E1f)
+  --> $DIR/const-generics-demangling.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(<c[HASH]::Unsigned<11u8>>::f)
+  --> $DIR/const-generics-demangling.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(<c::Unsigned<11>>::f)
+  --> $DIR/const-generics-demangling.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_RNvMs_CsCRATE_HASH_1cINtB<REF>_6SignedKsn98_E1f)
+  --> $DIR/const-generics-demangling.rs:26:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(<c[HASH]::Signed<-152i16>>::f)
+  --> $DIR/const-generics-demangling.rs:26:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(<c::Signed<-152>>::f)
+  --> $DIR/const-generics-demangling.rs:26:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_RNvMs0_CsCRATE_HASH_1cINtB<REF>_4BoolKb1_E1f)
+  --> $DIR/const-generics-demangling.rs:39:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(<c[HASH]::Bool<true>>::f)
+  --> $DIR/const-generics-demangling.rs:39:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(<c::Bool<true>>::f)
+  --> $DIR/const-generics-demangling.rs:39:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_RNvMs1_CsCRATE_HASH_1cINtB<REF>_4CharKc2202_E1f)
+  --> $DIR/const-generics-demangling.rs:52:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(<c[HASH]::Char<'∂'>>::f)
+  --> $DIR/const-generics-demangling.rs:52:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(<c::Char<'∂'>>::f)
+  --> $DIR/const-generics-demangling.rs:52:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 12 previous errors
+
diff --git a/src/test/ui/symbol-names/types.legacy.stderr b/src/test/ui/symbol-names/types.legacy.stderr
new file mode 100644
index 00000000000..a4984d5629f
--- /dev/null
+++ b/src/test/ui/symbol-names/types.legacy.stderr
@@ -0,0 +1,470 @@
+error: symbol-name(_ZN1a1b16Type$LT$bool$GT$17h[HASH]E)
+  --> $DIR/types.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<bool>::h[HASH])
+  --> $DIR/types.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<bool>)
+  --> $DIR/types.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b16Type$LT$char$GT$17h[HASH]E)
+  --> $DIR/types.rs:19:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<char>::h[HASH])
+  --> $DIR/types.rs:19:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<char>)
+  --> $DIR/types.rs:19:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b14Type$LT$i8$GT$17h[HASH]E)
+  --> $DIR/types.rs:25:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i8>::h[HASH])
+  --> $DIR/types.rs:25:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i8>)
+  --> $DIR/types.rs:25:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$i16$GT$17h[HASH]E)
+  --> $DIR/types.rs:31:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i16>::h[HASH])
+  --> $DIR/types.rs:31:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i16>)
+  --> $DIR/types.rs:31:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$i32$GT$17h[HASH]E)
+  --> $DIR/types.rs:37:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i32>::h[HASH])
+  --> $DIR/types.rs:37:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i32>)
+  --> $DIR/types.rs:37:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$i64$GT$17h[HASH]E)
+  --> $DIR/types.rs:43:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i64>::h[HASH])
+  --> $DIR/types.rs:43:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i64>)
+  --> $DIR/types.rs:43:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b14Type$LT$u8$GT$17h[HASH]E)
+  --> $DIR/types.rs:49:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u8>::h[HASH])
+  --> $DIR/types.rs:49:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u8>)
+  --> $DIR/types.rs:49:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$u16$GT$17h[HASH]E)
+  --> $DIR/types.rs:55:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u16>::h[HASH])
+  --> $DIR/types.rs:55:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u16>)
+  --> $DIR/types.rs:55:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$u32$GT$17h[HASH]E)
+  --> $DIR/types.rs:61:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u32>::h[HASH])
+  --> $DIR/types.rs:61:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u32>)
+  --> $DIR/types.rs:61:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$u64$GT$17h[HASH]E)
+  --> $DIR/types.rs:67:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u64>::h[HASH])
+  --> $DIR/types.rs:67:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u64>)
+  --> $DIR/types.rs:67:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$f32$GT$17h[HASH]E)
+  --> $DIR/types.rs:73:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<f32>::h[HASH])
+  --> $DIR/types.rs:73:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<f32>)
+  --> $DIR/types.rs:73:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$f64$GT$17h[HASH]E)
+  --> $DIR/types.rs:79:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<f64>::h[HASH])
+  --> $DIR/types.rs:79:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<f64>)
+  --> $DIR/types.rs:79:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$str$GT$17h[HASH]E)
+  --> $DIR/types.rs:85:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<str>::h[HASH])
+  --> $DIR/types.rs:85:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<str>)
+  --> $DIR/types.rs:85:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b17Type$LT$$u21$$GT$17h[HASH]E)
+  --> $DIR/types.rs:91:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<!>::h[HASH])
+  --> $DIR/types.rs:91:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<!>)
+  --> $DIR/types.rs:91:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b20Type$LT$$LP$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:97:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<()>::h[HASH])
+  --> $DIR/types.rs:97:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<()>)
+  --> $DIR/types.rs:97:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b25Type$LT$$LP$u8$C$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:103:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<(u8,)>::h[HASH])
+  --> $DIR/types.rs:103:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<(u8,)>)
+  --> $DIR/types.rs:103:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b28Type$LT$$LP$u8$C$u16$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:109:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<(u8,u16)>::h[HASH])
+  --> $DIR/types.rs:109:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<(u8,u16)>)
+  --> $DIR/types.rs:109:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b34Type$LT$$LP$u8$C$u16$C$u32$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:115:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<(u8,u16,u32)>::h[HASH])
+  --> $DIR/types.rs:115:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<(u8,u16,u32)>)
+  --> $DIR/types.rs:115:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b28Type$LT$$BP$const$u20$u8$GT$17h[HASH]E)
+  --> $DIR/types.rs:121:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<*const u8>::h[HASH])
+  --> $DIR/types.rs:121:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<*const u8>)
+  --> $DIR/types.rs:121:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b26Type$LT$$BP$mut$u20$u8$GT$17h[HASH]E)
+  --> $DIR/types.rs:127:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<*mut u8>::h[HASH])
+  --> $DIR/types.rs:127:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<*mut u8>)
+  --> $DIR/types.rs:127:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b19Type$LT$$RF$str$GT$17h[HASH]E)
+  --> $DIR/types.rs:133:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<&str>::h[HASH])
+  --> $DIR/types.rs:133:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<&str>)
+  --> $DIR/types.rs:133:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b27Type$LT$$RF$mut$u20$str$GT$17h[HASH]E)
+  --> $DIR/types.rs:139:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<&mut str>::h[HASH])
+  --> $DIR/types.rs:139:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<&mut str>)
+  --> $DIR/types.rs:139:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$0$u5d$$GT$17h[HASH]E)
+  --> $DIR/types.rs:145:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<[u8; 0]>::h[HASH])
+  --> $DIR/types.rs:145:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<[u8; 0]>)
+  --> $DIR/types.rs:145:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b22Type$LT$fn$LP$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:151:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<fn()>::h[HASH])
+  --> $DIR/types.rs:151:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<fn()>)
+  --> $DIR/types.rs:151:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b60Type$LT$unsafe$u20$extern$u20$$u22$C$u22$$u20$fn$LP$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:157:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<unsafe extern "C" fn()>::h[HASH])
+  --> $DIR/types.rs:157:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<unsafe extern "C" fn()>)
+  --> $DIR/types.rs:157:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b34Type$LT$$u5b$T$u3b$$u20$N$u5d$$GT$17h[HASH]E)
+  --> $DIR/types.rs:163:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<[T; N]>::h[HASH])
+  --> $DIR/types.rs:163:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<[T; N]>)
+  --> $DIR/types.rs:163:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 78 previous errors
+
diff --git a/src/test/ui/symbol-names/types.rs b/src/test/ui/symbol-names/types.rs
new file mode 100644
index 00000000000..0ae699c93c2
--- /dev/null
+++ b/src/test/ui/symbol-names/types.rs
@@ -0,0 +1,170 @@
+// build-fail
+// revisions: legacy verbose-legacy
+// compile-flags: --crate-name=a -C symbol-mangling-version=legacy -Z unstable-options
+//[verbose-legacy]compile-flags: -Zverbose
+// normalize-stderr-test: "h[[:xdigit:]]{16}" -> "h[HASH]"
+
+#![feature(never_type)]
+#![feature(rustc_attrs)]
+
+pub fn b() {
+    struct Type<T: ?Sized>(T);
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b16Type$LT$bool$GT$
+    //~| ERROR demangling(a::b::Type<bool>::
+    //~| ERROR demangling-alt(a::b::Type<bool>)
+    impl Type<bool> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b16Type$LT$char$GT$
+    //~| ERROR demangling(a::b::Type<char>::
+    //~| ERROR demangling-alt(a::b::Type<char>)
+    impl Type<char> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b14Type$LT$i8$GT$
+    //~| ERROR demangling(a::b::Type<i8>::
+    //~| ERROR demangling-alt(a::b::Type<i8>)
+    impl Type<i8> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$i16$GT$
+    //~| ERROR demangling(a::b::Type<i16>::
+    //~| ERROR demangling-alt(a::b::Type<i16>)
+    impl Type<i16> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$i32$GT$
+    //~| ERROR demangling(a::b::Type<i32>::
+    //~| ERROR demangling-alt(a::b::Type<i32>)
+    impl Type<i32> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$i64$GT$
+    //~| ERROR demangling(a::b::Type<i64>::
+    //~| ERROR demangling-alt(a::b::Type<i64>)
+    impl Type<i64> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b14Type$LT$u8$GT$
+    //~| ERROR demangling(a::b::Type<u8>::
+    //~| ERROR demangling-alt(a::b::Type<u8>)
+    impl Type<u8> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$u16$GT$
+    //~| ERROR demangling(a::b::Type<u16>::
+    //~| ERROR demangling-alt(a::b::Type<u16>)
+    impl Type<u16> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$u32$GT$
+    //~| ERROR demangling(a::b::Type<u32>::
+    //~| ERROR demangling-alt(a::b::Type<u32>)
+    impl Type<u32> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$u64$GT$
+    //~| ERROR demangling(a::b::Type<u64>::
+    //~| ERROR demangling-alt(a::b::Type<u64>)
+    impl Type<u64> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$f32$GT$
+    //~| ERROR demangling(a::b::Type<f32>::
+    //~| ERROR demangling-alt(a::b::Type<f32>)
+    impl Type<f32> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$f64$GT$
+    //~| ERROR demangling(a::b::Type<f64>::
+    //~| ERROR demangling-alt(a::b::Type<f64>)
+    impl Type<f64> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b15Type$LT$str$GT$
+    //~| ERROR demangling(a::b::Type<str>::
+    //~| ERROR demangling-alt(a::b::Type<str>)
+    impl Type<str> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b17Type$LT$$u21$$GT$
+    //~| ERROR demangling(a::b::Type<!>::
+    //~| ERROR demangling-alt(a::b::Type<!>)
+    impl Type<!> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b20Type$LT$$LP$$RP$$GT
+    //~| ERROR demangling(a::b::Type<()>::
+    //~| ERROR demangling-alt(a::b::Type<()>)
+    impl Type<()> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b25Type$LT$$LP$u8$C$$RP$$GT$
+    //~| ERROR demangling(a::b::Type<(u8,)>::
+    //~| ERROR demangling-alt(a::b::Type<(u8,)>)
+    impl Type<(u8,)> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b28Type$LT$$LP$u8$C$u16$RP$$GT$
+    //~| ERROR demangling(a::b::Type<(u8,u16)>::
+    //~| ERROR demangling-alt(a::b::Type<(u8,u16)>)
+    impl Type<(u8,u16)> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b34Type$LT$$LP$u8$C$u16$C$u32$RP$$GT$
+    //~| ERROR demangling(a::b::Type<(u8,u16,u32)>::
+    //~| ERROR demangling-alt(a::b::Type<(u8,u16,u32)>)
+    impl Type<(u8,u16,u32)> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b28Type$LT$$BP$const$u20$u8$GT$
+    //~| ERROR demangling(a::b::Type<*const u8>::
+    //~| ERROR demangling-alt(a::b::Type<*const u8>)
+    impl Type<*const u8> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b26Type$LT$$BP$mut$u20$u8$GT$
+    //~| ERROR demangling(a::b::Type<*mut u8>::
+    //~| ERROR demangling-alt(a::b::Type<*mut u8>)
+    impl Type<*mut u8> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b19Type$LT$$RF$str$GT$
+    //~| ERROR demangling(a::b::Type<&str>::
+    //~| ERROR demangling-alt(a::b::Type<&str>)
+    impl Type<&str> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b27Type$LT$$RF$mut$u20$str$GT$
+    //~| ERROR demangling(a::b::Type<&mut str>::
+    //~| ERROR demangling-alt(a::b::Type<&mut str>)
+    impl Type<&mut str> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$0$u5d$$GT$
+    //~| ERROR demangling(a::b::Type<[u8; 0]>::
+    //~| ERROR demangling-alt(a::b::Type<[u8; 0]>)
+    impl Type<[u8; 0]> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b22Type$LT$fn$LP$$RP$$GT$
+    //~| ERROR demangling(a::b::Type<fn()>::
+    //~| ERROR demangling-alt(a::b::Type<fn()>)
+    impl Type<fn()> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b60Type$LT$unsafe$u20$extern$u20$$u22$C$u22$$u20$fn$LP$$RP$$GT$
+    //~| ERROR demangling(a::b::Type<unsafe extern "C" fn()>::
+    //~| ERROR demangling-alt(a::b::Type<unsafe extern "C" fn()>)
+    impl Type<unsafe extern "C" fn()> {}
+
+    #[rustc_symbol_name]
+    //~^ ERROR symbol-name(_ZN1a1b34Type$LT$$u5b$T$u3b$$u20$N$u5d$$GT$
+    //~| ERROR demangling(a::b::Type<[T; N]>::
+    //~| ERROR demangling-alt(a::b::Type<[T; N]>)
+    impl<const N: usize, T> Type<[T; N]> {}
+}
+
+fn main() {}
diff --git a/src/test/ui/symbol-names/types.verbose-legacy.stderr b/src/test/ui/symbol-names/types.verbose-legacy.stderr
new file mode 100644
index 00000000000..a4984d5629f
--- /dev/null
+++ b/src/test/ui/symbol-names/types.verbose-legacy.stderr
@@ -0,0 +1,470 @@
+error: symbol-name(_ZN1a1b16Type$LT$bool$GT$17h[HASH]E)
+  --> $DIR/types.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<bool>::h[HASH])
+  --> $DIR/types.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<bool>)
+  --> $DIR/types.rs:13:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b16Type$LT$char$GT$17h[HASH]E)
+  --> $DIR/types.rs:19:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<char>::h[HASH])
+  --> $DIR/types.rs:19:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<char>)
+  --> $DIR/types.rs:19:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b14Type$LT$i8$GT$17h[HASH]E)
+  --> $DIR/types.rs:25:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i8>::h[HASH])
+  --> $DIR/types.rs:25:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i8>)
+  --> $DIR/types.rs:25:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$i16$GT$17h[HASH]E)
+  --> $DIR/types.rs:31:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i16>::h[HASH])
+  --> $DIR/types.rs:31:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i16>)
+  --> $DIR/types.rs:31:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$i32$GT$17h[HASH]E)
+  --> $DIR/types.rs:37:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i32>::h[HASH])
+  --> $DIR/types.rs:37:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i32>)
+  --> $DIR/types.rs:37:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$i64$GT$17h[HASH]E)
+  --> $DIR/types.rs:43:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<i64>::h[HASH])
+  --> $DIR/types.rs:43:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<i64>)
+  --> $DIR/types.rs:43:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b14Type$LT$u8$GT$17h[HASH]E)
+  --> $DIR/types.rs:49:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u8>::h[HASH])
+  --> $DIR/types.rs:49:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u8>)
+  --> $DIR/types.rs:49:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$u16$GT$17h[HASH]E)
+  --> $DIR/types.rs:55:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u16>::h[HASH])
+  --> $DIR/types.rs:55:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u16>)
+  --> $DIR/types.rs:55:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$u32$GT$17h[HASH]E)
+  --> $DIR/types.rs:61:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u32>::h[HASH])
+  --> $DIR/types.rs:61:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u32>)
+  --> $DIR/types.rs:61:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$u64$GT$17h[HASH]E)
+  --> $DIR/types.rs:67:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<u64>::h[HASH])
+  --> $DIR/types.rs:67:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<u64>)
+  --> $DIR/types.rs:67:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$f32$GT$17h[HASH]E)
+  --> $DIR/types.rs:73:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<f32>::h[HASH])
+  --> $DIR/types.rs:73:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<f32>)
+  --> $DIR/types.rs:73:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$f64$GT$17h[HASH]E)
+  --> $DIR/types.rs:79:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<f64>::h[HASH])
+  --> $DIR/types.rs:79:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<f64>)
+  --> $DIR/types.rs:79:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b15Type$LT$str$GT$17h[HASH]E)
+  --> $DIR/types.rs:85:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<str>::h[HASH])
+  --> $DIR/types.rs:85:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<str>)
+  --> $DIR/types.rs:85:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b17Type$LT$$u21$$GT$17h[HASH]E)
+  --> $DIR/types.rs:91:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<!>::h[HASH])
+  --> $DIR/types.rs:91:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<!>)
+  --> $DIR/types.rs:91:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b20Type$LT$$LP$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:97:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<()>::h[HASH])
+  --> $DIR/types.rs:97:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<()>)
+  --> $DIR/types.rs:97:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b25Type$LT$$LP$u8$C$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:103:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<(u8,)>::h[HASH])
+  --> $DIR/types.rs:103:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<(u8,)>)
+  --> $DIR/types.rs:103:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b28Type$LT$$LP$u8$C$u16$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:109:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<(u8,u16)>::h[HASH])
+  --> $DIR/types.rs:109:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<(u8,u16)>)
+  --> $DIR/types.rs:109:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b34Type$LT$$LP$u8$C$u16$C$u32$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:115:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<(u8,u16,u32)>::h[HASH])
+  --> $DIR/types.rs:115:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<(u8,u16,u32)>)
+  --> $DIR/types.rs:115:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b28Type$LT$$BP$const$u20$u8$GT$17h[HASH]E)
+  --> $DIR/types.rs:121:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<*const u8>::h[HASH])
+  --> $DIR/types.rs:121:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<*const u8>)
+  --> $DIR/types.rs:121:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b26Type$LT$$BP$mut$u20$u8$GT$17h[HASH]E)
+  --> $DIR/types.rs:127:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<*mut u8>::h[HASH])
+  --> $DIR/types.rs:127:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<*mut u8>)
+  --> $DIR/types.rs:127:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b19Type$LT$$RF$str$GT$17h[HASH]E)
+  --> $DIR/types.rs:133:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<&str>::h[HASH])
+  --> $DIR/types.rs:133:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<&str>)
+  --> $DIR/types.rs:133:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b27Type$LT$$RF$mut$u20$str$GT$17h[HASH]E)
+  --> $DIR/types.rs:139:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<&mut str>::h[HASH])
+  --> $DIR/types.rs:139:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<&mut str>)
+  --> $DIR/types.rs:139:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$0$u5d$$GT$17h[HASH]E)
+  --> $DIR/types.rs:145:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<[u8; 0]>::h[HASH])
+  --> $DIR/types.rs:145:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<[u8; 0]>)
+  --> $DIR/types.rs:145:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b22Type$LT$fn$LP$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:151:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<fn()>::h[HASH])
+  --> $DIR/types.rs:151:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<fn()>)
+  --> $DIR/types.rs:151:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b60Type$LT$unsafe$u20$extern$u20$$u22$C$u22$$u20$fn$LP$$RP$$GT$17h[HASH]E)
+  --> $DIR/types.rs:157:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<unsafe extern "C" fn()>::h[HASH])
+  --> $DIR/types.rs:157:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<unsafe extern "C" fn()>)
+  --> $DIR/types.rs:157:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: symbol-name(_ZN1a1b34Type$LT$$u5b$T$u3b$$u20$N$u5d$$GT$17h[HASH]E)
+  --> $DIR/types.rs:163:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling(a::b::Type<[T; N]>::h[HASH])
+  --> $DIR/types.rs:163:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: demangling-alt(a::b::Type<[T; N]>)
+  --> $DIR/types.rs:163:5
+   |
+LL |     #[rustc_symbol_name]
+   |     ^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 78 previous errors
+
diff --git a/src/tools/rust-analyzer b/src/tools/rust-analyzer
-Subproject d6ed146a1caa41c65a831efbc80d79067c8f595
+Subproject 4e72700e38421a12993fe5fa5c33d712652bc6c