Skip to content

Commit

Permalink
Merge pull request #26980 from theblixguy/fix/SR-11403
Browse files Browse the repository at this point in the history
[Demangler] Don't truncate demangling of an associated type descriptor
  • Loading branch information
theblixguy committed Sep 3, 2019
2 parents 0a67fd5 + ba9ec57 commit 7c3d709
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 25 deletions.
6 changes: 5 additions & 1 deletion lib/Demangling/NodePrinter.cpp
Expand Up @@ -2142,7 +2142,11 @@ NodePointer NodePrinter::print(NodePointer Node, bool asPrefixContext) {
return nullptr;
}
case Node::Kind::DependentAssociatedTypeRef: {
Printer << Node->getFirstChild()->getText();
if (Node->getNumChildren() > 1) {
print(Node->getChild(1));
Printer << '.';
}
print(Node->getChild(0));
return nullptr;
}
case Node::Kind::ReflectionMetadataBuiltinDescriptor:
Expand Down
8 changes: 4 additions & 4 deletions test/Demangle/Inputs/manglings.txt
Expand Up @@ -65,7 +65,7 @@ _TtuRxlNrFxwx5Mince ---> <A where A: _NativeRefCountedObject>(A) -> A.Mince
_TtuRxlRrFxwx5Mince ---> <A where A: _RefCountedObject>(A) -> A.Mince
_TtuRxlUrFxwx5Mince ---> <A where A: _UnknownLayout>(A) -> A.Mince
_TtuRxs8RunciblerFxWx5Mince6Quince_ ---> <A where A: Swift.Runcible>(A) -> A.Mince.Quince
_TtuRxs8Runciblexs8FungiblerFxwxPS_5Mince ---> <A where A: Swift.Runcible, A: Swift.Fungible>(A) -> A.Mince
_TtuRxs8Runciblexs8FungiblerFxwxPS_5Mince ---> <A where A: Swift.Runcible, A: Swift.Fungible>(A) -> A.Swift.Runcible.Mince
_TtuRxCs22AbstractRuncingFactoryrFxx ---> <A where A: Swift.AbstractRuncingFactory>(A) -> A
_TtuRxs8Runciblewx5MincezxrFxx ---> <A where A: Swift.Runcible, A.Mince == A>(A) -> A
_TtuRxs8RuncibleWx5Mince6Quince_zxrFxx ---> <A where A: Swift.Runcible, A.Mince.Quince == A>(A) -> A
Expand Down Expand Up @@ -252,8 +252,8 @@ _TFVV15nested_generics5Lunch6DinnerCfT11firstCoursex12secondCourseGSqqd___9lefto
_TFVFC15nested_generics7HotDogs11applyRelishFT_T_L_6RelishCfT8materialx_GS1_x_ ---> init(material: A) -> Relish #1 in nested_generics.HotDogs.applyRelish() -> ()<A> in Relish #1 in nested_generics.HotDogs.applyRelish() -> ()
_TFVFE15nested_genericsSS3fooFT_T_L_6CheeseCfT8materialx_GS0_x_ ---> init(material: A) -> Cheese #1 in (extension in nested_generics):Swift.String.foo() -> ()<A> in Cheese #1 in (extension in nested_generics):Swift.String.foo() -> ()
_TTWOE5imojiCSo5Imoji14ImojiMatchRankS_9RankValueS_FS2_g9rankValueqq_Ss16RawRepresentable8RawValue ---> _TTWOE5imojiCSo5Imoji14ImojiMatchRankS_9RankValueS_FS2_g9rankValueqq_Ss16RawRepresentable8RawValue
_T0s17MutableCollectionP1asAARzs012RandomAccessB0RzsAA11SubSequences013BidirectionalB0PRpzsAdHRQlE06rotatecD05Indexs01_A9IndexablePQzAM15shiftingToStart_tFAJs01_J4BasePQzAQcfU_ ---> closure #1 (A.Index) -> A.Index in (extension in a):Swift.MutableCollection<A where A: Swift.MutableCollection, A: Swift.RandomAccessCollection, A.SubSequence: Swift.MutableCollection, A.SubSequence: Swift.RandomAccessCollection>.rotateRandomAccess(shiftingToStart: A.Index) -> A.Index
_$Ss17MutableCollectionP1asAARzs012RandomAccessB0RzsAA11SubSequences013BidirectionalB0PRpzsAdHRQlE06rotatecD015shiftingToStart5Indexs01_A9IndexablePQzAN_tFAKs01_M4BasePQzAQcfU_ ---> closure #1 (A.Index) -> A.Index in (extension in a):Swift.MutableCollection<A where A: Swift.MutableCollection, A: Swift.RandomAccessCollection, A.SubSequence: Swift.MutableCollection, A.SubSequence: Swift.RandomAccessCollection>.rotateRandomAccess(shiftingToStart: A.Index) -> A.Index
_T0s17MutableCollectionP1asAARzs012RandomAccessB0RzsAA11SubSequences013BidirectionalB0PRpzsAdHRQlE06rotatecD05Indexs01_A9IndexablePQzAM15shiftingToStart_tFAJs01_J4BasePQzAQcfU_ ---> closure #1 (A.Swift._IndexableBase.Index) -> A.Swift._IndexableBase.Index in (extension in a):Swift.MutableCollection<A where A: Swift.MutableCollection, A: Swift.RandomAccessCollection, A.Swift.BidirectionalCollection.SubSequence: Swift.MutableCollection, A.Swift.BidirectionalCollection.SubSequence: Swift.RandomAccessCollection>.rotateRandomAccess(shiftingToStart: A.Swift._MutableIndexable.Index) -> A.Swift._MutableIndexable.Index
_$Ss17MutableCollectionP1asAARzs012RandomAccessB0RzsAA11SubSequences013BidirectionalB0PRpzsAdHRQlE06rotatecD015shiftingToStart5Indexs01_A9IndexablePQzAN_tFAKs01_M4BasePQzAQcfU_ ---> closure #1 (A.Swift._IndexableBase.Index) -> A.Swift._IndexableBase.Index in (extension in a):Swift.MutableCollection<A where A: Swift.MutableCollection, A: Swift.RandomAccessCollection, A.Swift.BidirectionalCollection.SubSequence: Swift.MutableCollection, A.Swift.BidirectionalCollection.SubSequence: Swift.RandomAccessCollection>.rotateRandomAccess(shiftingToStart: A.Swift._MutableIndexable.Index) -> A.Swift._MutableIndexable.Index
_T03foo4_123ABTf3psbpsb_n ---> function signature specialization <Arg[0] = [Constant Propagated String : u8'123'], Arg[1] = [Constant Propagated String : u8'123']> of foo
_T04main5innerys5Int32Vz_yADctF25closure_with_box_argumentxz_Bi32__lXXTf1nc_n ---> function signature specialization <Arg[1] = [Closure Propagated : closure_with_box_argument, Argument Types : [<A> { var A } <Builtin.Int32>]> of main.inner(inout Swift.Int32, (Swift.Int32) -> ()) -> ()
_$S4main5inneryys5Int32Vz_yADctF25closure_with_box_argumentxz_Bi32__lXXTf1nc_n ---> function signature specialization <Arg[1] = [Closure Propagated : closure_with_box_argument, Argument Types : [<A> { var A } <Builtin.Int32>]> of main.inner(inout Swift.Int32, (Swift.Int32) -> ()) -> ()
Expand Down Expand Up @@ -341,7 +341,7 @@ $S7TestMod5OuterV3Fooayx_SiGD ---> TestMod.Outer<A>.Foo<Swift.Int>
$Ss17_VariantSetBufferO05CocoaC0ayx_GD ---> Swift._VariantSetBuffer<A>.CocoaBuffer
$S2t21QP22ProtocolTypeAliasThingayAA4BlahV5SomeQa_GSgD ---> t2.Blah.SomeQ as t2.Q.ProtocolTypeAliasThing?
$s1A1gyyxlFx_qd__t_Ti5 ---> inlined generic function <(A, A1)> of A.g<A>(A) -> ()
$S1T19protocol_resilience17ResilientProtocolPTl ---> associated type descriptor for T
$S1T19protocol_resilience17ResilientProtocolPTl ---> associated type descriptor for protocol_resilience.ResilientProtocol.T
$S18resilient_protocol21ResilientBaseProtocolTL ---> protocol requirements base descriptor for resilient_protocol.ResilientBaseProtocol
$S1t1PP10AssocType2_AA1QTn ---> associated conformance descriptor for t.P.AssocType2: t.Q
$S1t1PP10AssocType2_AA1QTN ---> default associated conformance accessor for t.P.AssocType2: t.Q
Expand Down
18 changes: 9 additions & 9 deletions test/Reflection/typeref_decoding.swift
Expand Up @@ -298,7 +298,7 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Inner
// CHECK: dependentMember1: A.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (generic_type_parameter depth=0 index=0) member=Inner)

Expand Down Expand Up @@ -347,11 +347,11 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Outer
// CHECK: dependentMember1: A.TypesToReflect.P2.Outer
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer)

// CHECK: dependentMember2: A.Outer.Inner
// CHECK: dependentMember2: A.TypesToReflect.P2.Outer.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer) member=Inner)
Expand Down Expand Up @@ -456,7 +456,7 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Inner
// CHECK: dependentMember1: A.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (generic_type_parameter depth=0 index=0) member=Inner)

Expand Down Expand Up @@ -509,11 +509,11 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Outer
// CHECK: dependentMember1: A.TypesToReflect.P2.Outer
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer)

// CHECK: dependentMember2: A.Outer.Inner
// CHECK: dependentMember2: A.TypesToReflect.P2.Outer.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer) member=Inner)
Expand Down Expand Up @@ -594,7 +594,7 @@
// CHECK: Primary: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: DependentMemberInner: A.Inner
// CHECK: DependentMemberInner: A.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (generic_type_parameter depth=0 index=0) member=Inner)

Expand Down Expand Up @@ -637,11 +637,11 @@
// CHECK: Primary: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: DependentMemberOuter: A.Outer
// CHECK: DependentMemberOuter: A.TypesToReflect.P2.Outer
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer)

// CHECK: DependentMemberInner: A.Outer.Inner
// CHECK: DependentMemberInner: A.TypesToReflect.P2.Outer.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer) member=Inner)
Expand Down
18 changes: 9 additions & 9 deletions test/Reflection/typeref_decoding_asan.swift
Expand Up @@ -291,7 +291,7 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Inner
// CHECK: dependentMember1: A.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (generic_type_parameter depth=0 index=0) member=Inner)

Expand Down Expand Up @@ -340,11 +340,11 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Outer
// CHECK: dependentMember1: A.TypesToReflect.P2.Outer
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer)

// CHECK: dependentMember2: A.Outer.Inner
// CHECK: dependentMember2: A.TypesToReflect.P2.Outer.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer) member=Inner)
Expand Down Expand Up @@ -449,7 +449,7 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Inner
// CHECK: dependentMember1: A.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (generic_type_parameter depth=0 index=0) member=Inner)

Expand Down Expand Up @@ -502,11 +502,11 @@
// CHECK: primaryArchetype: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: dependentMember1: A.Outer
// CHECK: dependentMember1: A.TypesToReflect.P2.Outer
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer)

// CHECK: dependentMember2: A.Outer.Inner
// CHECK: dependentMember2: A.TypesToReflect.P2.Outer.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer) member=Inner)
Expand Down Expand Up @@ -587,7 +587,7 @@
// CHECK: Primary: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: DependentMemberInner: A.Inner
// CHECK: DependentMemberInner: A.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (generic_type_parameter depth=0 index=0) member=Inner)

Expand Down Expand Up @@ -630,11 +630,11 @@
// CHECK: Primary: A
// CHECK: (generic_type_parameter depth=0 index=0)

// CHECK: DependentMemberOuter: A.Outer
// CHECK: DependentMemberOuter: A.TypesToReflect.P2.Outer
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer)

// CHECK: DependentMemberInner: A.Outer.Inner
// CHECK: DependentMemberInner: A.TypesToReflect.P2.Outer.TypesToReflect.P1.Inner
// CHECK: (dependent_member protocol=14TypesToReflect2P1P
// CHECK: (dependent_member protocol=14TypesToReflect2P2P
// CHECK: (generic_type_parameter depth=0 index=0) member=Outer) member=Inner)
Expand Down
4 changes: 2 additions & 2 deletions test/SILGen/interface_type_mangling.swift
Expand Up @@ -50,13 +50,13 @@ func h4<T>(_ x: T) where T: P, T: Base, T: Q {}
func h5<T>(_ x: T) where T: P, T: Base, T: Q /* TODO: same type constraints , T.Assoc0 == Base*/ {}

// CHECK-LABEL: interface_type_mangling.i1
// CHECK: [[I_SIGNATURE:<A where A: interface_type_mangling.P, A: interface_type_mangling.Q, A.Assoc0: interface_type_mangling.Q, A.Assoc1: interface_type_mangling.P>\(A\) -> \(\)]]
// CHECK: [[I_SIGNATURE:<A where A: interface_type_mangling.P, A: interface_type_mangling.Q, A.interface_type_mangling.Q.Assoc0: interface_type_mangling.Q, A.interface_type_mangling.P.Assoc1: interface_type_mangling.P>\(A\) -> \(\)]]
func i1<T>(_ x: T) where T: P, T: Q, T.Assoc1: P, T.Assoc0: Q {}
// CHECK: interface_type_mangling.i2[[I_SIGNATURE]]
func i2<T>(_ x: T) where T: P, T: Q, T.Assoc0: Q, T.Assoc1: P {}

// CHECK-LABEL: interface_type_mangling.j01
// CHECK: [[J_SIGNATURE:<A where A: interface_type_mangling.P, A: interface_type_mangling.Q, A.Assoc0 == A.Assoc1, A.Assoc1 == A.Assoc2>\(A\) -> \(\)]]
// CHECK: [[J_SIGNATURE:<A where A: interface_type_mangling.P, A: interface_type_mangling.Q, A.interface_type_mangling.Q.Assoc0 == A.interface_type_mangling.P.Assoc1, A.interface_type_mangling.P.Assoc1 == A.interface_type_mangling.P.Assoc2>\(A\) -> \(\)]]
func j01<T>(_ x: T) where T: P, T: Q, T.Assoc0 == T.Assoc1, T.Assoc1 == T.Assoc2 {}
// CHECK: interface_type_mangling.j02[[J_SIGNATURE]]
func j02<T>(_ x: T) where T: P, T: Q, T.Assoc0 == T.Assoc2, T.Assoc1 == T.Assoc2 {}
Expand Down

0 comments on commit 7c3d709

Please sign in to comment.