Rollup merge of #143361 - cjgillot:split-disambig, r=oli-obk
Stop passing resolver disambiguator state to AST lowering. AST->HIR lowering can use a disjoint set of `DefPathData` as the resolver, so we don't need to pass the disambiguator state. r? `@oli-obk`
This commit is contained in:
@@ -7,6 +7,7 @@ use rustc_data_structures::stack::ensure_sufficient_stack;
|
|||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_hir::attrs::AttributeKind;
|
use rustc_hir::attrs::AttributeKind;
|
||||||
use rustc_hir::def::{DefKind, Res};
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::definitions::DefPathData;
|
||||||
use rustc_hir::{HirId, Target, find_attr};
|
use rustc_hir::{HirId, Target, find_attr};
|
||||||
use rustc_middle::span_bug;
|
use rustc_middle::span_bug;
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
@@ -461,7 +462,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
for (idx, arg) in args.iter().cloned().enumerate() {
|
for (idx, arg) in args.iter().cloned().enumerate() {
|
||||||
if legacy_args_idx.contains(&idx) {
|
if legacy_args_idx.contains(&idx) {
|
||||||
let node_id = self.next_node_id();
|
let node_id = self.next_node_id();
|
||||||
self.create_def(node_id, None, DefKind::AnonConst, f.span);
|
self.create_def(
|
||||||
|
node_id,
|
||||||
|
None,
|
||||||
|
DefKind::AnonConst,
|
||||||
|
DefPathData::LateAnonConst,
|
||||||
|
f.span,
|
||||||
|
);
|
||||||
let mut visitor = WillCreateDefIdsVisitor {};
|
let mut visitor = WillCreateDefIdsVisitor {};
|
||||||
let const_value = if let ControlFlow::Break(span) = visitor.visit_expr(&arg) {
|
let const_value = if let ControlFlow::Break(span) = visitor.visit_expr(&arg) {
|
||||||
Box::new(Expr {
|
Box::new(Expr {
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ use rustc_data_structures::tagged_ptr::TaggedRef;
|
|||||||
use rustc_errors::{DiagArgFromDisplay, DiagCtxtHandle};
|
use rustc_errors::{DiagArgFromDisplay, DiagCtxtHandle};
|
||||||
use rustc_hir::def::{DefKind, LifetimeRes, Namespace, PartialRes, PerNS, Res};
|
use rustc_hir::def::{DefKind, LifetimeRes, Namespace, PartialRes, PerNS, Res};
|
||||||
use rustc_hir::def_id::{CRATE_DEF_ID, LOCAL_CRATE, LocalDefId};
|
use rustc_hir::def_id::{CRATE_DEF_ID, LOCAL_CRATE, LocalDefId};
|
||||||
|
use rustc_hir::definitions::{DefPathData, DisambiguatorState};
|
||||||
use rustc_hir::lints::DelayedLint;
|
use rustc_hir::lints::DelayedLint;
|
||||||
use rustc_hir::{
|
use rustc_hir::{
|
||||||
self as hir, AngleBrackets, ConstArg, GenericArg, HirId, ItemLocalMap, LifetimeSource,
|
self as hir, AngleBrackets, ConstArg, GenericArg, HirId, ItemLocalMap, LifetimeSource,
|
||||||
@@ -93,6 +94,7 @@ rustc_fluent_macro::fluent_messages! { "../messages.ftl" }
|
|||||||
struct LoweringContext<'a, 'hir> {
|
struct LoweringContext<'a, 'hir> {
|
||||||
tcx: TyCtxt<'hir>,
|
tcx: TyCtxt<'hir>,
|
||||||
resolver: &'a mut ResolverAstLowering,
|
resolver: &'a mut ResolverAstLowering,
|
||||||
|
disambiguator: DisambiguatorState,
|
||||||
|
|
||||||
/// Used to allocate HIR nodes.
|
/// Used to allocate HIR nodes.
|
||||||
arena: &'hir hir::Arena<'hir>,
|
arena: &'hir hir::Arena<'hir>,
|
||||||
@@ -155,6 +157,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
// Pseudo-globals.
|
// Pseudo-globals.
|
||||||
tcx,
|
tcx,
|
||||||
resolver,
|
resolver,
|
||||||
|
disambiguator: DisambiguatorState::new(),
|
||||||
arena: tcx.hir_arena,
|
arena: tcx.hir_arena,
|
||||||
|
|
||||||
// HirId handling.
|
// HirId handling.
|
||||||
@@ -546,6 +549,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
node_id: ast::NodeId,
|
node_id: ast::NodeId,
|
||||||
name: Option<Symbol>,
|
name: Option<Symbol>,
|
||||||
def_kind: DefKind,
|
def_kind: DefKind,
|
||||||
|
def_path_data: DefPathData,
|
||||||
span: Span,
|
span: Span,
|
||||||
) -> LocalDefId {
|
) -> LocalDefId {
|
||||||
let parent = self.current_hir_id_owner.def_id;
|
let parent = self.current_hir_id_owner.def_id;
|
||||||
@@ -561,7 +565,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
let def_id = self
|
let def_id = self
|
||||||
.tcx
|
.tcx
|
||||||
.at(span)
|
.at(span)
|
||||||
.create_def(parent, name, def_kind, None, &mut self.resolver.disambiguator)
|
.create_def(parent, name, def_kind, Some(def_path_data), &mut self.disambiguator)
|
||||||
.def_id();
|
.def_id();
|
||||||
|
|
||||||
debug!("create_def: def_id_to_node_id[{:?}] <-> {:?}", def_id, node_id);
|
debug!("create_def: def_id_to_node_id[{:?}] <-> {:?}", def_id, node_id);
|
||||||
@@ -846,6 +850,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
param,
|
param,
|
||||||
Some(kw::UnderscoreLifetime),
|
Some(kw::UnderscoreLifetime),
|
||||||
DefKind::LifetimeParam,
|
DefKind::LifetimeParam,
|
||||||
|
DefPathData::DesugaredAnonymousLifetime,
|
||||||
ident.span,
|
ident.span,
|
||||||
);
|
);
|
||||||
debug!(?_def_id);
|
debug!(?_def_id);
|
||||||
@@ -2290,7 +2295,13 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
// We're lowering a const argument that was originally thought to be a type argument,
|
// We're lowering a const argument that was originally thought to be a type argument,
|
||||||
// so the def collector didn't create the def ahead of time. That's why we have to do
|
// so the def collector didn't create the def ahead of time. That's why we have to do
|
||||||
// it here.
|
// it here.
|
||||||
let def_id = self.create_def(node_id, None, DefKind::AnonConst, span);
|
let def_id = self.create_def(
|
||||||
|
node_id,
|
||||||
|
None,
|
||||||
|
DefKind::AnonConst,
|
||||||
|
DefPathData::LateAnonConst,
|
||||||
|
span,
|
||||||
|
);
|
||||||
let hir_id = self.lower_node_id(node_id);
|
let hir_id = self.lower_node_id(node_id);
|
||||||
|
|
||||||
let path_expr = Expr {
|
let path_expr = Expr {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ use std::sync::Arc;
|
|||||||
use rustc_ast::*;
|
use rustc_ast::*;
|
||||||
use rustc_data_structures::stack::ensure_sufficient_stack;
|
use rustc_data_structures::stack::ensure_sufficient_stack;
|
||||||
use rustc_hir::def::{DefKind, Res};
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::definitions::DefPathData;
|
||||||
use rustc_hir::{self as hir, LangItem, Target};
|
use rustc_hir::{self as hir, LangItem, Target};
|
||||||
use rustc_middle::span_bug;
|
use rustc_middle::span_bug;
|
||||||
use rustc_span::source_map::{Spanned, respan};
|
use rustc_span::source_map::{Spanned, respan};
|
||||||
@@ -527,7 +528,8 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
// We're generating a range end that didn't exist in the AST,
|
// We're generating a range end that didn't exist in the AST,
|
||||||
// so the def collector didn't create the def ahead of time. That's why we have to do
|
// so the def collector didn't create the def ahead of time. That's why we have to do
|
||||||
// it here.
|
// it here.
|
||||||
let def_id = self.create_def(node_id, None, DefKind::AnonConst, span);
|
let def_id =
|
||||||
|
self.create_def(node_id, None, DefKind::AnonConst, DefPathData::LateAnonConst, span);
|
||||||
let hir_id = self.lower_node_id(node_id);
|
let hir_id = self.lower_node_id(node_id);
|
||||||
|
|
||||||
let unstable_span = self.mark_span_with_reason(
|
let unstable_span = self.mark_span_with_reason(
|
||||||
|
|||||||
@@ -302,6 +302,10 @@ pub enum DefPathData {
|
|||||||
Ctor,
|
Ctor,
|
||||||
/// A constant expression (see `{ast,hir}::AnonConst`).
|
/// A constant expression (see `{ast,hir}::AnonConst`).
|
||||||
AnonConst,
|
AnonConst,
|
||||||
|
/// A constant expression created during AST->HIR lowering..
|
||||||
|
LateAnonConst,
|
||||||
|
/// A fresh anonymous lifetime created by desugaring elided lifetimes.
|
||||||
|
DesugaredAnonymousLifetime,
|
||||||
/// An existential `impl Trait` type node.
|
/// An existential `impl Trait` type node.
|
||||||
/// Argument position `impl Trait` have a `TypeNs` with their pretty-printed name.
|
/// Argument position `impl Trait` have a `TypeNs` with their pretty-printed name.
|
||||||
OpaqueTy,
|
OpaqueTy,
|
||||||
@@ -454,6 +458,8 @@ impl DefPathData {
|
|||||||
TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name)
|
TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name)
|
||||||
| OpaqueLifetime(name) => Some(name),
|
| OpaqueLifetime(name) => Some(name),
|
||||||
|
|
||||||
|
DesugaredAnonymousLifetime => Some(kw::UnderscoreLifetime),
|
||||||
|
|
||||||
Impl
|
Impl
|
||||||
| ForeignMod
|
| ForeignMod
|
||||||
| CrateRoot
|
| CrateRoot
|
||||||
@@ -462,6 +468,7 @@ impl DefPathData {
|
|||||||
| Closure
|
| Closure
|
||||||
| Ctor
|
| Ctor
|
||||||
| AnonConst
|
| AnonConst
|
||||||
|
| LateAnonConst
|
||||||
| OpaqueTy
|
| OpaqueTy
|
||||||
| AnonAssocTy(..)
|
| AnonAssocTy(..)
|
||||||
| SyntheticCoroutineBody
|
| SyntheticCoroutineBody
|
||||||
@@ -475,6 +482,8 @@ impl DefPathData {
|
|||||||
TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name) | AnonAssocTy(name)
|
TypeNs(name) | ValueNs(name) | MacroNs(name) | LifetimeNs(name) | AnonAssocTy(name)
|
||||||
| OpaqueLifetime(name) => Some(name),
|
| OpaqueLifetime(name) => Some(name),
|
||||||
|
|
||||||
|
DesugaredAnonymousLifetime => Some(kw::UnderscoreLifetime),
|
||||||
|
|
||||||
Impl
|
Impl
|
||||||
| ForeignMod
|
| ForeignMod
|
||||||
| CrateRoot
|
| CrateRoot
|
||||||
@@ -483,6 +492,7 @@ impl DefPathData {
|
|||||||
| Closure
|
| Closure
|
||||||
| Ctor
|
| Ctor
|
||||||
| AnonConst
|
| AnonConst
|
||||||
|
| LateAnonConst
|
||||||
| OpaqueTy
|
| OpaqueTy
|
||||||
| SyntheticCoroutineBody
|
| SyntheticCoroutineBody
|
||||||
| NestedStatic => None,
|
| NestedStatic => None,
|
||||||
@@ -502,7 +512,8 @@ impl DefPathData {
|
|||||||
GlobalAsm => DefPathDataName::Anon { namespace: sym::global_asm },
|
GlobalAsm => DefPathDataName::Anon { namespace: sym::global_asm },
|
||||||
Closure => DefPathDataName::Anon { namespace: sym::closure },
|
Closure => DefPathDataName::Anon { namespace: sym::closure },
|
||||||
Ctor => DefPathDataName::Anon { namespace: sym::constructor },
|
Ctor => DefPathDataName::Anon { namespace: sym::constructor },
|
||||||
AnonConst => DefPathDataName::Anon { namespace: sym::constant },
|
AnonConst | LateAnonConst => DefPathDataName::Anon { namespace: sym::constant },
|
||||||
|
DesugaredAnonymousLifetime => DefPathDataName::Named(kw::UnderscoreLifetime),
|
||||||
OpaqueTy => DefPathDataName::Anon { namespace: sym::opaque },
|
OpaqueTy => DefPathDataName::Anon { namespace: sym::opaque },
|
||||||
AnonAssocTy(..) => DefPathDataName::Anon { namespace: sym::anon_assoc },
|
AnonAssocTy(..) => DefPathDataName::Anon { namespace: sym::anon_assoc },
|
||||||
SyntheticCoroutineBody => DefPathDataName::Anon { namespace: sym::synthetic },
|
SyntheticCoroutineBody => DefPathDataName::Anon { namespace: sym::synthetic },
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ use rustc_errors::{Diag, ErrorGuaranteed, LintBuffer};
|
|||||||
use rustc_hir::attrs::{AttributeKind, StrippedCfgItem};
|
use rustc_hir::attrs::{AttributeKind, StrippedCfgItem};
|
||||||
use rustc_hir::def::{CtorKind, CtorOf, DefKind, DocLinkResMap, LifetimeRes, Res};
|
use rustc_hir::def::{CtorKind, CtorOf, DefKind, DocLinkResMap, LifetimeRes, Res};
|
||||||
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LocalDefIdMap};
|
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, LocalDefIdMap};
|
||||||
use rustc_hir::definitions::DisambiguatorState;
|
|
||||||
use rustc_hir::{LangItem, attrs as attr, find_attr};
|
use rustc_hir::{LangItem, attrs as attr, find_attr};
|
||||||
use rustc_index::IndexVec;
|
use rustc_index::IndexVec;
|
||||||
use rustc_index::bit_set::BitMatrix;
|
use rustc_index::bit_set::BitMatrix;
|
||||||
@@ -211,8 +210,6 @@ pub struct ResolverAstLowering {
|
|||||||
|
|
||||||
pub node_id_to_def_id: NodeMap<LocalDefId>,
|
pub node_id_to_def_id: NodeMap<LocalDefId>,
|
||||||
|
|
||||||
pub disambiguator: DisambiguatorState,
|
|
||||||
|
|
||||||
pub trait_map: NodeMap<Vec<hir::TraitCandidate>>,
|
pub trait_map: NodeMap<Vec<hir::TraitCandidate>>,
|
||||||
/// List functions and methods for which lifetime elision was successful.
|
/// List functions and methods for which lifetime elision was successful.
|
||||||
pub lifetime_elision_allowed: FxHashSet<ast::NodeId>,
|
pub lifetime_elision_allowed: FxHashSet<ast::NodeId>,
|
||||||
|
|||||||
@@ -2156,6 +2156,7 @@ fn guess_def_namespace(tcx: TyCtxt<'_>, def_id: DefId) -> Namespace {
|
|||||||
|
|
||||||
DefPathData::ValueNs(..)
|
DefPathData::ValueNs(..)
|
||||||
| DefPathData::AnonConst
|
| DefPathData::AnonConst
|
||||||
|
| DefPathData::LateAnonConst
|
||||||
| DefPathData::Closure
|
| DefPathData::Closure
|
||||||
| DefPathData::Ctor => Namespace::ValueNS,
|
| DefPathData::Ctor => Namespace::ValueNS,
|
||||||
|
|
||||||
|
|||||||
@@ -1791,7 +1791,6 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
|
|||||||
.into_items()
|
.into_items()
|
||||||
.map(|(k, f)| (k, f.key()))
|
.map(|(k, f)| (k, f.key()))
|
||||||
.collect(),
|
.collect(),
|
||||||
disambiguator: self.disambiguator,
|
|
||||||
trait_map: self.trait_map,
|
trait_map: self.trait_map,
|
||||||
lifetime_elision_allowed: self.lifetime_elision_allowed,
|
lifetime_elision_allowed: self.lifetime_elision_allowed,
|
||||||
lint_buffer: Steal::new(self.lint_buffer),
|
lint_buffer: Steal::new(self.lint_buffer),
|
||||||
|
|||||||
@@ -712,7 +712,8 @@ fn encode_ty_name(tcx: TyCtxt<'_>, def_id: DefId) -> String {
|
|||||||
hir::definitions::DefPathData::ValueNs(..) => "v",
|
hir::definitions::DefPathData::ValueNs(..) => "v",
|
||||||
hir::definitions::DefPathData::Closure => "C",
|
hir::definitions::DefPathData::Closure => "C",
|
||||||
hir::definitions::DefPathData::Ctor => "c",
|
hir::definitions::DefPathData::Ctor => "c",
|
||||||
hir::definitions::DefPathData::AnonConst => "k",
|
hir::definitions::DefPathData::AnonConst => "K",
|
||||||
|
hir::definitions::DefPathData::LateAnonConst => "k",
|
||||||
hir::definitions::DefPathData::OpaqueTy => "i",
|
hir::definitions::DefPathData::OpaqueTy => "i",
|
||||||
hir::definitions::DefPathData::SyntheticCoroutineBody => "s",
|
hir::definitions::DefPathData::SyntheticCoroutineBody => "s",
|
||||||
hir::definitions::DefPathData::NestedStatic => "n",
|
hir::definitions::DefPathData::NestedStatic => "n",
|
||||||
@@ -722,6 +723,7 @@ fn encode_ty_name(tcx: TyCtxt<'_>, def_id: DefId) -> String {
|
|||||||
| hir::definitions::DefPathData::MacroNs(..)
|
| hir::definitions::DefPathData::MacroNs(..)
|
||||||
| hir::definitions::DefPathData::OpaqueLifetime(..)
|
| hir::definitions::DefPathData::OpaqueLifetime(..)
|
||||||
| hir::definitions::DefPathData::LifetimeNs(..)
|
| hir::definitions::DefPathData::LifetimeNs(..)
|
||||||
|
| hir::definitions::DefPathData::DesugaredAnonymousLifetime
|
||||||
| hir::definitions::DefPathData::AnonAssocTy(..) => {
|
| hir::definitions::DefPathData::AnonAssocTy(..) => {
|
||||||
bug!("encode_ty_name: unexpected `{:?}`", disambiguated_data.data);
|
bug!("encode_ty_name: unexpected `{:?}`", disambiguated_data.data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -877,7 +877,8 @@ impl<'tcx> Printer<'tcx> for V0SymbolMangler<'tcx> {
|
|||||||
DefPathData::ValueNs(_) => 'v',
|
DefPathData::ValueNs(_) => 'v',
|
||||||
DefPathData::Closure => 'C',
|
DefPathData::Closure => 'C',
|
||||||
DefPathData::Ctor => 'c',
|
DefPathData::Ctor => 'c',
|
||||||
DefPathData::AnonConst => 'k',
|
DefPathData::AnonConst => 'K',
|
||||||
|
DefPathData::LateAnonConst => 'k',
|
||||||
DefPathData::OpaqueTy => 'i',
|
DefPathData::OpaqueTy => 'i',
|
||||||
DefPathData::SyntheticCoroutineBody => 's',
|
DefPathData::SyntheticCoroutineBody => 's',
|
||||||
DefPathData::NestedStatic => 'n',
|
DefPathData::NestedStatic => 'n',
|
||||||
@@ -889,6 +890,7 @@ impl<'tcx> Printer<'tcx> for V0SymbolMangler<'tcx> {
|
|||||||
| DefPathData::Impl
|
| DefPathData::Impl
|
||||||
| DefPathData::MacroNs(_)
|
| DefPathData::MacroNs(_)
|
||||||
| DefPathData::LifetimeNs(_)
|
| DefPathData::LifetimeNs(_)
|
||||||
|
| DefPathData::DesugaredAnonymousLifetime
|
||||||
| DefPathData::OpaqueLifetime(_)
|
| DefPathData::OpaqueLifetime(_)
|
||||||
| DefPathData::AnonAssocTy(..) => {
|
| DefPathData::AnonAssocTy(..) => {
|
||||||
bug!("symbol_names: unexpected DefPathData: {:?}", disambiguated_data.data)
|
bug!("symbol_names: unexpected DefPathData: {:?}", disambiguated_data.data)
|
||||||
|
|||||||
@@ -78,9 +78,9 @@ pub fn foo12(_: &Type4, _: &Type4, _: &Type4) {}
|
|||||||
// CHECK: ![[TYPE4]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooEE"}
|
// CHECK: ![[TYPE4]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooEE"}
|
||||||
// CHECK: ![[TYPE5]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooES0_E"}
|
// CHECK: ![[TYPE5]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooES0_E"}
|
||||||
// CHECK: ![[TYPE6]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooES0_S0_E"}
|
// CHECK: ![[TYPE6]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooES0_S0_E"}
|
||||||
// CHECK: ![[TYPE7]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooEE"}
|
// CHECK: ![[TYPE7]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNKNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooEE"}
|
||||||
// CHECK: ![[TYPE8]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooES0_E"}
|
// CHECK: ![[TYPE8]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNKNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooES0_E"}
|
||||||
// CHECK: ![[TYPE9]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooES0_S0_E"}
|
// CHECK: ![[TYPE9]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NtNKNvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooES0_S0_E"}
|
||||||
// CHECK: ![[TYPE10]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barEE"}
|
// CHECK: ![[TYPE10]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barEE"}
|
||||||
// CHECK: ![[TYPE11]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barES0_E"}
|
// CHECK: ![[TYPE11]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barES0_E"}
|
||||||
// CHECK: ![[TYPE12]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barES0_S0_E"}
|
// CHECK: ![[TYPE12]] = !{i64 0, !"_ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}_{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barES0_S0_E"}
|
||||||
|
|||||||
Reference in New Issue
Block a user