// it is usually better to focus on `the_value` rather
// than the entirety of block(s) surrounding it.
let adjusted_span = (|| {
- if let ExprKind::Block { body } = &expr.kind {
- if let Some(tail_expr) = body.expr {
- let mut expr = &this.thir[tail_expr];
- while let ExprKind::Block {
- body: Block { expr: Some(nested_expr), .. },
- }
- | ExprKind::Scope { value: nested_expr, .. } = expr.kind
- {
- expr = &this.thir[nested_expr];
- }
- this.block_context.push(BlockFrame::TailExpr {
- tail_result_is_ignored: true,
- span: expr.span,
- });
- return Some(expr.span);
+ if let ExprKind::Block { body } = &expr.kind && let Some(tail_ex) = body.expr {
+ let mut expr = &this.thir[tail_ex];
+ while let ExprKind::Block {
+ body: Block { expr: Some(nested_expr), .. },
}
+ | ExprKind::Scope { value: nested_expr, .. } = expr.kind
+ {
+ expr = &this.thir[nested_expr];
+ }
+ this.block_context.push(BlockFrame::TailExpr {
+ tail_result_is_ignored: true,
+ span: expr.span,
+ });
+ return Some(expr.span);
}
None
})();
}
// Insert a Shallow borrow of any places that is switched on.
- if let Some(fb) = fake_borrows {
- if let Ok(match_place_resolved) =
- match_place.clone().try_upvars_resolved(self.tcx, self.typeck_results)
- {
- let resolved_place = match_place_resolved.into_place(self.tcx, self.typeck_results);
- fb.insert(resolved_place);
- }
+ if let Some(fb) = fake_borrows && let Ok(match_place_resolved) =
+ match_place.clone().try_upvars_resolved(self.tcx, self.typeck_results)
+ {
+ let resolved_place = match_place_resolved.into_place(self.tcx, self.typeck_results);
+ fb.insert(resolved_place);
}
// perform the test, branching to one of N blocks. For each of
let arg_local = self.local_decls.push(LocalDecl::with_source_info(ty, source_info));
// If this is a simple binding pattern, give debuginfo a nice name.
- if let Some(arg) = arg_opt {
- if let Some(ident) = arg.pat.simple_ident() {
- self.var_debug_info.push(VarDebugInfo {
- name: ident.name,
- source_info,
- value: VarDebugInfoContents::Place(arg_local.into()),
- });
- }
+ if let Some(arg) = arg_opt && let Some(ident) = arg.pat.simple_ident() {
+ self.var_debug_info.push(VarDebugInfo {
+ name: ident.name,
+ source_info,
+ value: VarDebugInfoContents::Place(arg_local.into()),
+ });
}
}
}
ExprKind::Field { lhs, .. } => {
let lhs = &self.thir[lhs];
- if let ty::Adt(adt_def, _) = lhs.ty.kind() {
- if adt_def.is_union() {
- if let Some((assigned_ty, assignment_span)) = self.assignment_info {
- // To avoid semver hazard, we only consider `Copy` and `ManuallyDrop` non-dropping.
- if !(assigned_ty
- .ty_adt_def()
- .map_or(false, |adt| adt.is_manually_drop())
- || assigned_ty
- .is_copy_modulo_regions(self.tcx.at(expr.span), self.param_env))
- {
- self.requires_unsafe(assignment_span, AssignToDroppingUnionField);
- } else {
- // write to non-drop union field, safe
- }
+ if let ty::Adt(adt_def, _) = lhs.ty.kind() && adt_def.is_union() {
+ if let Some((assigned_ty, assignment_span)) = self.assignment_info {
+ // To avoid semver hazard, we only consider `Copy` and `ManuallyDrop` non-dropping.
+ if !(assigned_ty
+ .ty_adt_def()
+ .map_or(false, |adt| adt.is_manually_drop())
+ || assigned_ty
+ .is_copy_modulo_regions(self.tcx.at(expr.span), self.param_env))
+ {
+ self.requires_unsafe(assignment_span, AssignToDroppingUnionField);
} else {
- self.requires_unsafe(expr.span, AccessToUnionField);
+ // write to non-drop union field, safe
}
+ } else {
+ self.requires_unsafe(expr.span, AccessToUnionField);
}
}
}
}
ExprKind::Let { expr: expr_id, .. } => {
let let_expr = &self.thir[expr_id];
- if let ty::Adt(adt_def, _) = let_expr.ty.kind() {
- if adt_def.is_union() {
- self.requires_unsafe(expr.span, AccessToUnionField);
- }
+ if let ty::Adt(adt_def, _) = let_expr.ty.kind() && adt_def.is_union() {
+ self.requires_unsafe(expr.span, AccessToUnionField);
}
}
_ => {}
//! Construction of MIR from HIR.
//!
//! This crate also contains the match exhaustiveness and usefulness checking.
+#![allow(rustc::potential_query_instability)]
+#![feature(bool_to_option)]
#![feature(box_patterns)]
#![feature(control_flow_enum)]
#![feature(crate_visibility_modifier)]
-#![feature(bool_to_option)]
+#![feature(let_chains)]
#![feature(let_else)]
-#![feature(once_cell)]
#![feature(min_specialization)]
+#![feature(once_cell)]
#![recursion_limit = "256"]
-#![allow(rustc::potential_query_instability)]
#[macro_use]
extern crate tracing;
rf: RefutableFlag,
) {
pat.walk_always(|p| {
- if let hir::PatKind::Binding(_, _, ident, None) = p.kind {
- if let Some(ty::BindByValue(hir::Mutability::Not)) =
+ if let hir::PatKind::Binding(_, _, ident, None) = p.kind
+ && let Some(ty::BindByValue(hir::Mutability::Not)) =
cx.typeck_results.extract_binding_mode(cx.tcx.sess, p.hir_id, p.span)
- {
- let pat_ty = cx.typeck_results.pat_ty(p).peel_refs();
- if let ty::Adt(edef, _) = pat_ty.kind() {
- if edef.is_enum()
- && edef.variants.iter().any(|variant| {
- variant.ident(cx.tcx) == ident && variant.ctor_kind == CtorKind::Const
- })
- {
- let variant_count = edef.variants.len();
- cx.tcx.struct_span_lint_hir(
- BINDINGS_WITH_VARIANT_NAME,
- p.hir_id,
+ && let pat_ty = cx.typeck_results.pat_ty(p).peel_refs()
+ && let ty::Adt(edef, _) = pat_ty.kind()
+ && edef.is_enum()
+ && edef.variants.iter().any(|variant| {
+ variant.ident(cx.tcx) == ident && variant.ctor_kind == CtorKind::Const
+ })
+ {
+ let variant_count = edef.variants.len();
+ cx.tcx.struct_span_lint_hir(
+ BINDINGS_WITH_VARIANT_NAME,
+ p.hir_id,
+ p.span,
+ |lint| {
+ let ty_path = cx.tcx.def_path_str(edef.did);
+ let mut err = lint.build(&format!(
+ "pattern binding `{}` is named the same as one \
+ of the variants of the type `{}`",
+ ident, ty_path
+ ));
+ err.code(error_code!(E0170));
+ // If this is an irrefutable pattern, and there's > 1 variant,
+ // then we can't actually match on this. Applying the below
+ // suggestion would produce code that breaks on `check_irrefutable`.
+ if rf == Refutable || variant_count == 1 {
+ err.span_suggestion(
p.span,
- |lint| {
- let ty_path = cx.tcx.def_path_str(edef.did);
- let mut err = lint.build(&format!(
- "pattern binding `{}` is named the same as one \
- of the variants of the type `{}`",
- ident, ty_path
- ));
- err.code(error_code!(E0170));
- // If this is an irrefutable pattern, and there's > 1 variant,
- // then we can't actually match on this. Applying the below
- // suggestion would produce code that breaks on `check_irrefutable`.
- if rf == Refutable || variant_count == 1 {
- err.span_suggestion(
- p.span,
- "to match on the variant, qualify the path",
- format!("{}::{}", ty_path, ident),
- Applicability::MachineApplicable,
- );
- }
- err.emit();
- },
- )
+ "to match on the variant, qualify the path",
+ format!("{}::{}", ty_path, ident),
+ Applicability::MachineApplicable,
+ );
}
- }
- }
+ err.emit();
+ },
+ )
}
});
}
let mut covered = vec![];
for pattern in patterns {
if let Variant(variant_index) = pattern.ctor() {
- if let ty::Adt(this_def, _) = pattern.ty().kind() {
- if this_def.did != def.did {
- continue;
- }
+ if let ty::Adt(this_def, _) = pattern.ty().kind() && this_def.did != def.did {
+ continue;
}
let sp = def.variants[*variant_index].ident(cx.tcx).span;
if covered.contains(&sp) {
///
/// This means that the variant has a stdlib unstable feature marking it.
pub(super) fn is_unstable_variant(&self, pcx: PatCtxt<'_, '_, 'tcx>) -> bool {
- if let Constructor::Variant(idx) = self {
- if let ty::Adt(adt, _) = pcx.ty.kind() {
- let variant_def_id = adt.variants[*idx].def_id;
- // Filter variants that depend on a disabled unstable feature.
- return matches!(
- pcx.cx.tcx.eval_stability(variant_def_id, None, DUMMY_SP, None),
- EvalResult::Deny { .. }
- );
- }
+ if let Constructor::Variant(idx) = self && let ty::Adt(adt, _) = pcx.ty.kind() {
+ let variant_def_id = adt.variants[*idx].def_id;
+ // Filter variants that depend on a disabled unstable feature.
+ return matches!(
+ pcx.cx.tcx.eval_stability(variant_def_id, None, DUMMY_SP, None),
+ EvalResult::Deny { .. }
+ );
}
false
}
/// Checks if the `Constructor` is a `Constructor::Variant` with a `#[doc(hidden)]`
/// attribute.
pub(super) fn is_doc_hidden_variant(&self, pcx: PatCtxt<'_, '_, 'tcx>) -> bool {
- if let Constructor::Variant(idx) = self {
- if let ty::Adt(adt, _) = pcx.ty.kind() {
- let variant_def_id = adt.variants[*idx].def_id;
- return pcx.cx.tcx.is_doc_hidden(variant_def_id);
- }
+ if let Constructor::Variant(idx) = self && let ty::Adt(adt, _) = pcx.ty.kind() {
+ let variant_def_id = adt.variants[*idx].def_id;
+ return pcx.cx.tcx.is_doc_hidden(variant_def_id);
}
false
}
};
}
- if let ty::Str = ty.kind() {
- if let (
- ty::ConstKind::Value(a_val @ ConstValue::Slice { .. }),
- ty::ConstKind::Value(b_val @ ConstValue::Slice { .. }),
- ) = (a.val(), b.val())
- {
- let a_bytes = get_slice_bytes(&tcx, a_val);
- let b_bytes = get_slice_bytes(&tcx, b_val);
- return from_bool(a_bytes == b_bytes);
- }
+ if let ty::Str = ty.kind() && let (
+ ty::ConstKind::Value(a_val @ ConstValue::Slice { .. }),
+ ty::ConstKind::Value(b_val @ ConstValue::Slice { .. }),
+ ) = (a.val(), b.val())
+ {
+ let a_bytes = get_slice_bytes(&tcx, a_val);
+ let b_bytes = get_slice_bytes(&tcx, b_val);
+ return from_bool(a_bytes == b_bytes);
}
fallback()
}
Ok(self)
}
- fn print_type(self, ty: Ty<'tcx>) -> Result<Self::Type, Self::Error> {
+ fn print_type(mut self, ty: Ty<'tcx>) -> Result<Self::Type, Self::Error> {
match *ty.kind() {
// Print all nominal types as paths (unlike `pretty_print_type`).
ty::FnDef(def_id, substs)
| ty::Projection(ty::ProjectionTy { item_def_id: def_id, substs })
| ty::Closure(def_id, substs)
| ty::Generator(def_id, substs, _) => self.print_def_path(def_id, substs),
+
+ // The `pretty_print_type` formatting of array size depends on
+ // -Zverbose flag, so we cannot reuse it here.
+ ty::Array(ty, size) => {
+ self.write_str("[")?;
+ self = self.print_type(ty)?;
+ self.write_str("; ")?;
+ if let Some(size) = size.val().try_to_bits(self.tcx().data_layout.pointer_size) {
+ write!(self, "{}", size)?
+ } else if let ty::ConstKind::Param(param) = size.val() {
+ self = param.print(self)?
+ } else {
+ self.write_str("_")?
+ }
+ self.write_str("]")?;
+ Ok(self)
+ }
+
_ => self.pretty_print_type(ty),
}
}
fn print_const(self, ct: ty::Const<'tcx>) -> Result<Self::Const, Self::Error> {
// only print integers
- if let ty::ConstKind::Value(ConstValue::Scalar(Scalar::Int { .. })) = ct.val() {
- if ct.ty().is_integral() {
- return self.pretty_print_const(ct, true);
+ match (ct.val(), ct.ty().kind()) {
+ (
+ ty::ConstKind::Value(ConstValue::Scalar(Scalar::Int(scalar))),
+ ty::Int(_) | ty::Uint(_),
+ ) => {
+ // The `pretty_print_const` formatting depends on -Zverbose
+ // flag, so we cannot reuse it here.
+ let signed = matches!(ct.ty().kind(), ty::Int(_));
+ write!(
+ self,
+ "{:#?}",
+ ty::ConstInt::new(scalar, signed, ct.ty().is_ptr_sized_integral())
+ )?;
}
+ _ => self.write_str("_")?,
}
- self.write_str("_")?;
Ok(self)
}
--- /dev/null
+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
+
// 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() {}
+++ /dev/null
-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
-
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+// 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() {}
--- /dev/null
+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
+
-Subproject commit d6ed146a1caa41c65a831efbc80d79067c8f5955
+Subproject commit 4e72700e38421a12993fe5fa5c33d712652bc6c8