Skip to content

Commit 301d9f0

Browse files
committed
AST: Give destructors a second parameter list
Constructors and methods had two parameter lists, one for self and one for the formal parameters. Destructors only had one parameter list, which introduced an annoying corner case.
1 parent fe8263e commit 301d9f0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+96
-107
lines changed

include/swift/AST/Decl.h

+5-6
Original file line numberDiff line numberDiff line change
@@ -6096,21 +6096,20 @@ class ConstructorDecl : public AbstractFunctionDecl {
60966096
/// }
60976097
/// \endcode
60986098
class DestructorDecl : public AbstractFunctionDecl {
6099-
ParameterList *SelfParameter;
6099+
ParameterList *ParameterLists[2];
6100+
61006101
public:
61016102
DestructorDecl(SourceLoc DestructorLoc, ParamDecl *selfDecl,
61026103
DeclContext *Parent);
6103-
6104+
61046105
void setSelfDecl(ParamDecl *selfDecl);
61056106

61066107
MutableArrayRef<ParameterList *> getParameterLists() {
6107-
return { &SelfParameter, 1 };
6108+
return { ParameterLists, 2 };
61086109
}
61096110
ArrayRef<const ParameterList *> getParameterLists() const {
6110-
return { &SelfParameter, 1 };
6111+
return { ParameterLists, 2 };
61116112
}
6112-
6113-
61146113

61156114
SourceLoc getDestructorLoc() const { return getNameLoc(); }
61166115
SourceLoc getStartLoc() const { return getDestructorLoc(); }

lib/AST/Decl.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -5379,16 +5379,17 @@ DestructorDecl::DestructorDecl(SourceLoc DestructorLoc, ParamDecl *selfDecl,
53795379
: AbstractFunctionDecl(DeclKind::Destructor, Parent,
53805380
DeclBaseName::createDestructor(), DestructorLoc,
53815381
/*Throws=*/false, /*ThrowsLoc=*/SourceLoc(),
5382-
/*NumParameterLists=*/1, nullptr) {
5382+
/*NumParameterLists=*/2, nullptr) {
53835383
setSelfDecl(selfDecl);
5384+
ParameterLists[1] = ParameterList::createEmpty(Parent->getASTContext());
53845385
}
53855386

53865387
void DestructorDecl::setSelfDecl(ParamDecl *selfDecl) {
53875388
if (selfDecl) {
5388-
SelfParameter = ParameterList::createWithoutLoc(selfDecl);
5389-
SelfParameter->setDeclContextOfParamDecls(this);
5389+
ParameterLists[0] = ParameterList::createWithoutLoc(selfDecl);
5390+
ParameterLists[0]->setDeclContextOfParamDecls(this);
53905391
} else {
5391-
SelfParameter = nullptr;
5392+
ParameterLists[0] = nullptr;
53925393
}
53935394
}
53945395

lib/SIL/SILDeclRef.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -813,8 +813,6 @@ unsigned SILDeclRef::getParameterListCount() const {
813813
return func->getParameterLists().size();
814814
} else if (auto *ed = dyn_cast<EnumElementDecl>(vd)) {
815815
return ed->hasAssociatedValues() ? 2 : 1;
816-
} else if (isa<DestructorDecl>(vd)) {
817-
return 1;
818816
} else if (isa<ClassDecl>(vd)) {
819817
return 2;
820818
} else if (isa<VarDecl>(vd)) {

lib/SIL/TypeLowering.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -1673,9 +1673,10 @@ static CanAnyFunctionType getDestructorInterfaceType(TypeConverter &TC,
16731673
CanType resultTy = (isDeallocating
16741674
? TupleType::getEmpty(C)
16751675
: C.TheNativeObjectType);
1676+
CanType methodTy = CanFunctionType::get(TupleType::getEmpty(C), resultTy);
16761677

16771678
auto sig = TC.getEffectiveGenericSignature(dd);
1678-
return CanAnyFunctionType::get(sig, classType, resultTy, extInfo);
1679+
return CanAnyFunctionType::get(sig, classType, methodTy, extInfo);
16791680
}
16801681

16811682
/// Retrieve the type of the ivar initializer or destroyer method for

lib/Sema/TypeCheckGeneric.cpp

-10
Original file line numberDiff line numberDiff line change
@@ -923,16 +923,6 @@ void TypeChecker::configureInterfaceType(AbstractFunctionDecl *func,
923923
}
924924

925925
auto paramLists = func->getParameterLists();
926-
SmallVector<ParameterList*, 4> storedParamLists;
927-
928-
// FIXME: Destructors don't have the '()' pattern in their signature, so
929-
// paste it here.
930-
if (isa<DestructorDecl>(func)) {
931-
assert(paramLists.size() == 1 && "Only the self paramlist");
932-
storedParamLists.push_back(paramLists[0]);
933-
storedParamLists.push_back(ParameterList::createEmpty(Context));
934-
paramLists = storedParamLists;
935-
}
936926

937927
bool hasSelf = func->getDeclContext()->isTypeContext();
938928
for (unsigned i = 0, e = paramLists.size(); i != e; ++i) {

test/IRGen/exactcast.sil

+3-3
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,15 @@ sil @$S5test110DerivedIntCfD : $@convention(method) (@owned DerivedInt) -> ()
109109

110110
sil_vtable BaseBase {
111111
#BaseBase.foo!1: (BaseBase) -> () -> () : @$S5test104BaseB0C3fooyyF
112-
#BaseBase.deinit!deallocator: @$S5test104BaseB0CfD
112+
#BaseBase.deinit!deallocator.1: @$S5test104BaseB0CfD
113113
}
114114

115115
sil_vtable Base {
116116
#BaseBase.foo!1: (BaseBase) -> () -> () : @$S5test104BaseB0C3fooyyF [inherited]
117-
#Base.deinit!deallocator: @$S5test14BaseCfD
117+
#Base.deinit!deallocator.1: @$S5test14BaseCfD
118118
}
119119

120120
sil_vtable DerivedInt {
121121
#BaseBase.foo!1: (BaseBase) -> () -> () : @$S5test110DerivedIntC3fooyyF [override]
122-
#DerivedInt.deinit!deallocator: @$S5test110DerivedIntCfD
122+
#DerivedInt.deinit!deallocator.1: @$S5test110DerivedIntCfD
123123
}

test/IRGen/nonatomic_reference_counting.sil

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,6 @@ bb0(%0 : $C):
220220
}
221221

222222
sil_vtable C {
223-
#C.deinit!deallocator: @_TFC28nonatomic_reference_counting1CD // C.__deallocating_deinit
223+
#C.deinit!deallocator.1: @_TFC28nonatomic_reference_counting1CD // C.__deallocating_deinit
224224
}
225225

test/IRGen/objc_dealloc.sil

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ bb0(%0 : @unowned $SwiftGizmo):
109109
// CHECK-NEXT: store %objc_class* [[T1]], %objc_class** [[OBJC_SUPER_CLASS]], align 8
110110
// CHECK-NEXT: [[DEALLOC_SEL:%[a-zA-Z0-9]+]] = load i8*, i8** @"\01L_selector(dealloc)", align 8
111111
// CHECK-NEXT: call void bitcast (void ()* @objc_msgSendSuper2 to void (%objc_super*, i8*)*)(%objc_super* [[OBJC_SUPER]], i8* [[DEALLOC_SEL]])
112-
%5 = objc_super_method %0 : $SwiftGizmo, #Gizmo.deinit!deallocator.foreign : (Gizmo) -> () -> (), $@convention(objc_method) (Gizmo) -> () // user: %7
112+
%5 = objc_super_method %0 : $SwiftGizmo, #Gizmo.deinit!deallocator.1.foreign : (Gizmo) -> () -> (), $@convention(objc_method) (Gizmo) -> () // user: %7
113113
%6 = upcast %0 : $SwiftGizmo to $Gizmo // user: %7
114114
%7 = apply %5(%6) : $@convention(objc_method) (Gizmo) -> ()
115115

test/IRGen/readonly.sil

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,6 @@ bb0(%0 : $*Any):
6262
}
6363

6464
sil_vtable XXX {
65-
#XXX.deinit!deallocator: @XXX_dtor
65+
#XXX.deinit!deallocator.1: @XXX_dtor
6666
#XXX.init!initializer.1: @XXX_ctor
6767
}

test/Profiler/coverage_deinit.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import Foundation
66
public class Derived: NSString {
77
// CHECK-LABEL: sil @$S15coverage_deinit7DerivedCfD
88
// CHECK: builtin "int_instrprof_increment"
9-
// CHECK-NEXT: super_method {{.*}} : $Derived, #NSString.deinit!deallocator.foreign
9+
// CHECK-NEXT: super_method {{.*}} : $Derived, #NSString.deinit!deallocator.1.foreign
1010
deinit {
1111
}
1212
}

test/SIL/Parser/SILDeclRef.sil

+2-2
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,15 @@ sil_vtable Derived1 {
122122
#Base.foo!1: (Base) -> (Int32) -> () : @_TFC10SILDeclRef8Derived13foofT1nVs5Int32_T_ // Derived1.foo(n : Int32) -> ()
123123
#Base.foo!1: (Base) -> (Float) -> Int32 : @_TFC10SILDeclRef8Derived13foofT1fSf_Vs5Int32 // Derived1.foo(f : Float) -> Int32
124124
#Base.init!initializer.1: (Base.Type) -> () -> Base : @_TFC10SILDeclRef8Derived1cfT_S0_ // Derived1.init() -> Derived1
125-
#Derived1.deinit!deallocator: (Derived1) -> () -> () : @_TFC10SILDeclRef8Derived1D // Derived1.__deallocating_deinit
125+
#Derived1.deinit!deallocator.1: (Derived1) -> () -> () : @_TFC10SILDeclRef8Derived1D // Derived1.__deallocating_deinit
126126
}
127127

128128
sil_vtable Derived2 {
129129
#Base.foo!1: (Base) -> () -> Int32 : @_TFC10SILDeclRef8Derived23foofT_Vs5Int32 // Derived2.foo() -> Int32
130130
#Base.foo!1: (Base) -> (Int32) -> () : @_TFC10SILDeclRef8Derived23foofT1nVs5Int32_T_ // Derived2.foo(n : Int32) -> ()
131131
#Base.foo!1: (Base) -> (Float) -> Int32 : @_TFC10SILDeclRef8Derived23foofT1fSf_Vs5Int32 // Derived2.foo(f : Float) -> Int32
132132
#Base.init!initializer.1: (Base.Type) -> () -> Base : @_TFC10SILDeclRef8Derived2cfT_S0_ // Derived2.init() -> Derived2
133-
#Derived2.deinit!deallocator: (Derived2) -> () -> () : @_TFC10SILDeclRef8Derived2D // Derived2.__deallocating_deinit
133+
#Derived2.deinit!deallocator.1: (Derived2) -> () -> () : @_TFC10SILDeclRef8Derived2D // Derived2.__deallocating_deinit
134134
}
135135

136136
sil_witness_table [serialized] Base: P module SILDeclRef {

test/SIL/Parser/nonatomic_reference_counting.sil

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,6 @@ bb0(%0 : $C):
9191
}
9292

9393
sil_vtable C {
94-
#C.deinit!deallocator: @_TFC28nonatomic_reference_counting1CD // C.__deallocating_deinit
94+
#C.deinit!deallocator.1: @_TFC28nonatomic_reference_counting1CD // C.__deallocating_deinit
9595
}
9696

test/SIL/Serialization/vtable.sil

+5-5
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,28 @@ sil_vtable Base {
4444
#Base.m1!1: (Base) -> () -> () : @$S1x4BaseC2m1yyF
4545
#Base.m2!1: (Base) -> () -> () : @$S1x4BaseC2m2yyF
4646
#Base.init!initializer.1: (Base.Type) -> () -> Base : @$S1x4BaseCACycfc
47-
#Base.deinit!deallocator: @$S1x4BaseCfD
47+
#Base.deinit!deallocator.1: @$S1x4BaseCfD
4848
}
4949

5050
// CHECK-LABEL: sil_vtable Base {
5151
// CHECK-NEXT: #Base.m1!1: (Base) -> () -> () : @$S1x4BaseC2m1yyF
5252
// CHECK-NEXT: #Base.m2!1: (Base) -> () -> () : @$S1x4BaseC2m2yyF
5353
// CHECK-NEXT: #Base.init!initializer.1: (Base.Type) -> () -> Base : @$S1x4BaseCACycfc
54-
// CHECK-NEXT: #Base.deinit!deallocator: @$S1x4BaseCfD
54+
// CHECK-NEXT: #Base.deinit!deallocator.1: @$S1x4BaseCfD
5555
// CHECK-NEXT: }
5656

5757
sil_vtable Derived {
5858
#Base.m1!1: (Base) -> () -> () : @$S1x4BaseC2m1yyF [inherited]
5959
#Base.m2!1: (Base) -> () -> () : @$S1x7DerivedC2m2yyF [override]
6060
#Base.init!initializer.1: (Base.Type) -> () -> Base : @$S1x7DerivedCACycfc [override]
6161
#Derived.m3!1: (Derived) -> () -> () : @$S1x7DerivedC2m3yyF
62-
#Derived.deinit!deallocator: @$S1x7DerivedCfD
62+
#Derived.deinit!deallocator.1: @$S1x7DerivedCfD
6363
}
6464

6565
// CHECK-LABEL: sil_vtable Derived {
6666
// CHECK-NEXT: #Base.m1!1: (Base) -> () -> () : @$S1x4BaseC2m1yyF [inherited]
6767
// CHECK-NEXT: #Base.m2!1: (Base) -> () -> () : @$S1x7DerivedC2m2yyF [override]
6868
// CHECK-NEXT: #Base.init!initializer.1: (Base.Type) -> () -> Base : @$S1x7DerivedCACycfc [override]
6969
// CHECK-NEXT: #Derived.m3!1: (Derived) -> () -> () : @$S1x7DerivedC2m3yyF
70-
// CHECK-NEXT: #Derived.deinit!deallocator: @$S1x7DerivedCfD
71-
// CHECK-NEXT: }
70+
// CHECK-NEXT: #Derived.deinit!deallocator.1: @$S1x7DerivedCfD
71+
// CHECK-NEXT: }

test/SIL/Serialization/vtable_deserialization.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ Class.firstMethod()
2828
// CHECK-NEXT: #Class.firstMethod!1: (Class.Type) -> () -> () : @$S28vtable_deserialization_input5ClassC11firstMethodyyFZ
2929
// CHECK-NEXT: #Class.secondMethod!1: (Class.Type) -> () -> () : @$S28vtable_deserialization_input5ClassC12secondMethodyyFZ
3030
// CHECK-NEXT: #Class.thirdMethod!1: (Class.Type) -> () -> () : @$S28vtable_deserialization_input5ClassC11thirdMethodyyFZ
31-
// CHECK-NEXT: #Class.deinit!deallocator: @$S28vtable_deserialization_input5ClassCfD
31+
// CHECK-NEXT: #Class.deinit!deallocator.1: @$S28vtable_deserialization_input5ClassCfD
3232
// CHECK-NEXT: }
3333

3434
// OPT: sil_vtable Class {
3535
// OPT-NEXT: #Class.firstMethod!1: (Class.Type) -> () -> () : @$S28vtable_deserialization_input5ClassC11firstMethodyyFZ
3636
// OPT-NEXT: #Class.secondMethod!1: (Class.Type) -> () -> () : @$S28vtable_deserialization_input5ClassC12secondMethodyyFZ
3737
// OPT-NEXT: #Class.thirdMethod!1: (Class.Type) -> () -> () : @$S28vtable_deserialization_input5ClassC11thirdMethodyyFZ
38-
// OPT-NEXT: #Class.deinit!deallocator: @$S28vtable_deserialization_input5ClassCfD
38+
// OPT-NEXT: #Class.deinit!deallocator.1: @$S28vtable_deserialization_input5ClassCfD
3939
// OPT-NEXT: }

test/SILGen/SILDeclRef.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public func testBase(b: Base) -> Int32 {
5959
// CHECK-NEXT: #Base.foo!1: (Base) -> (Int32) -> () : @$S10SILDeclRef4BaseC3foo1nys5Int32V_tF // Base.foo(n:)
6060
// CHECK-NEXT: #Base.foo!1: (Base) -> (Float) -> Int32 : @$S10SILDeclRef4BaseC3foo1fs5Int32VSf_tF // Base.foo(f:)
6161
// CHECK-NEXT: #Base.init!initializer.1: (Base.Type) -> () -> Base : @$S10SILDeclRef4BaseCACycfc // Base.init()
62-
// CHECK-NEXT: #Base.deinit!deallocator: @$S10SILDeclRef4BaseCfD // Base.__deallocating_deinit
62+
// CHECK-NEXT: #Base.deinit!deallocator.1: @$S10SILDeclRef4BaseCfD // Base.__deallocating_deinit
6363
// CHECK-NEXT: }
6464

6565
// CHECK:sil_witness_table [serialized] Base: P module SILDeclRef {

test/SILGen/addressors.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ class Sub : Base {
587587
// CHECK-NEXT: #Base.value!setter.1: (Base) -> (Int32) -> () : @$S10addressors4BaseC5values5Int32Vvs
588588
// CHECK-NEXT: #Base.value!materializeForSet.1: (Base) -> (Builtin.RawPointer, inout Builtin.UnsafeValueBuffer) -> (Builtin.RawPointer, Builtin.RawPointer?) : @$S10addressors4BaseC5values5Int32Vvm
589589
// CHECK-NEXT: #Base.init!initializer.1: (Base.Type) -> () -> Base : @$S10addressors4BaseCACycfc
590-
// CHECK-NEXT: #Base.deinit!deallocator: @$S10addressors4BaseCfD
590+
// CHECK-NEXT: #Base.deinit!deallocator.1: @$S10addressors4BaseCfD
591591
// CHECK-NEXT: }
592592

593593
// CHECK-LABEL: sil_vtable Sub {
@@ -598,5 +598,5 @@ class Sub : Base {
598598
// CHECK-NEXT: #Base.value!setter.1: (Base) -> (Int32) -> () : @$S10addressors3SubC5values5Int32Vvs
599599
// CHECK-NEXT: #Base.value!materializeForSet.1: (Base) -> (Builtin.RawPointer, inout Builtin.UnsafeValueBuffer) -> (Builtin.RawPointer, Builtin.RawPointer?) : @$S10addressors3SubC5values5Int32Vvm
600600
// CHECK-NEXT: #Base.init!initializer.1: (Base.Type) -> () -> Base : @$S10addressors3SubCACycfc
601-
// CHECK-NEXT: #Sub.deinit!deallocator: @$S10addressors3SubCfD
601+
// CHECK-NEXT: #Sub.deinit!deallocator.1: @$S10addressors3SubCfD
602602
// CHECK-NEXT: }

test/SILGen/class_resilience.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,5 @@ class SubclassOfOutsideChild : ResilientOutsideChild {
4444
// CHECK-NEXT: #ResilientOutsideParent.init!initializer.1: (ResilientOutsideParent.Type) -> () -> ResilientOutsideParent : @$S16class_resilience22SubclassOfOutsideChildCACycfc [override]
4545
// CHECK-NEXT: #ResilientOutsideParent.method!1: (ResilientOutsideParent) -> () -> () : @$S16class_resilience22SubclassOfOutsideChildC6methodyyF [override]
4646
// CHECK-NEXT: #SubclassOfOutsideChild.newMethod!1: (SubclassOfOutsideChild) -> () -> () : @$S16class_resilience22SubclassOfOutsideChildC9newMethodyyF
47-
// CHECK-NEXT: #SubclassOfOutsideChild.deinit!deallocator: @$S16class_resilience22SubclassOfOutsideChildCfD
47+
// CHECK-NEXT: #SubclassOfOutsideChild.deinit!deallocator.1: @$S16class_resilience22SubclassOfOutsideChildCfD
4848
// CHECK-NEXT: }

test/SILGen/deinit_in_vtable.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public func testmain() {
3131
// function elimination
3232

3333
// CHECK-LABEL: sil_vtable A
34-
// CHECK: A.deinit!deallocator: @[[A]]
34+
// CHECK: A.deinit!deallocator.1: @[[A]]
3535

3636
// CHECK-LABEL: sil_vtable B
3737
// CHECK-NOT: A.deinit
38-
// CHECK: B.deinit!deallocator: @[[B]]
38+
// CHECK: B.deinit!deallocator.1: @[[B]]
3939

test/SILGen/dynamic.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ public class ConcreteDerived : GenericBase<Int> {
516516
// CHECK-NEXT: #Foo.subscript!setter.1: {{.*}} : @$S7dynamic3FooC4objcSiyXl_tcis // dynamic.Foo.subscript.setter : (objc: Swift.AnyObject) -> Swift.Int
517517
// CHECK-NEXT: #Foo.subscript!materializeForSet
518518
// CHECK-NEXT: #Foo.overriddenByDynamic!1: {{.*}} : @$S7dynamic3FooC19overriddenByDynamic{{[_0-9a-zA-Z]*}}
519-
// CHECK-NEXT: #Foo.deinit!deallocator: {{.*}}
519+
// CHECK-NEXT: #Foo.deinit!deallocator.1: {{.*}}
520520
// CHECK-NEXT: }
521521

522522
// Vtable uses a dynamic thunk for dynamic overrides
@@ -545,12 +545,12 @@ public class ConcreteDerived : GenericBase<Int> {
545545

546546
// No vtable entry for override of @objc extension property
547547
// CHECK-LABEL: sil_vtable [serialized] SubExt {
548-
// CHECK-NEXT: #SubExt.deinit!deallocator: @$S7dynamic6SubExtCfD // dynamic.SubExt.__deallocating_deinit
548+
// CHECK-NEXT: #SubExt.deinit!deallocator.1: @$S7dynamic6SubExtCfD // dynamic.SubExt.__deallocating_deinit
549549
// CHECK-NEXT: }
550550

551551
// Dynamic thunk + vtable re-abstraction
552552
// CHECK-LABEL: sil_vtable [serialized] ConcreteDerived {
553553
// CHECK-NEXT: #GenericBase.method!1: <T> (GenericBase<T>) -> (T) -> () : public @$S7dynamic15ConcreteDerivedC6methodyySiFAA11GenericBaseCADyyxFTV [override] // vtable thunk for dynamic.GenericBase.method(A) -> () dispatching to dynamic.ConcreteDerived.method(Swift.Int) -> ()
554554
// CHECK-NEXT: #GenericBase.init!initializer.1: <T> (GenericBase<T>.Type) -> () -> GenericBase<T> : @$S7dynamic15ConcreteDerivedCACycfc [override] // dynamic.ConcreteDerived.init() -> dynamic.ConcreteDerived
555-
// CHECK-NEXT: #ConcreteDerived.deinit!deallocator: @$S7dynamic15ConcreteDerivedCfD // dynamic.ConcreteDerived.__deallocating_deinit
555+
// CHECK-NEXT: #ConcreteDerived.deinit!deallocator.1: @$S7dynamic15ConcreteDerivedCfD // dynamic.ConcreteDerived.__deallocating_deinit
556556
// CHECK-NEXT: }

test/SILGen/errors.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -965,12 +965,12 @@ class SomeErrorClass : Error { }
965965

966966
// CHECK-LABEL: sil_vtable SomeErrorClass
967967
// CHECK-NEXT: #SomeErrorClass.init!initializer.1: {{.*}} : @$S6errors14SomeErrorClassCACycfc
968-
// CHECK-NEXT: #SomeErrorClass.deinit!deallocator: @$S6errors14SomeErrorClassCfD
968+
// CHECK-NEXT: #SomeErrorClass.deinit!deallocator.1: @$S6errors14SomeErrorClassCfD
969969
// CHECK-NEXT: }
970970

971971
class OtherErrorSub : OtherError { }
972972

973973
// CHECK-LABEL: sil_vtable OtherErrorSub {
974974
// CHECK-NEXT: #OtherError.init!initializer.1: {{.*}} : @$S6errors13OtherErrorSubCACycfc [override] // OtherErrorSub.init()
975-
// CHECK-NEXT: #OtherErrorSub.deinit!deallocator: @$S6errors13OtherErrorSubCfD // OtherErrorSub.__deallocating_deinit
975+
// CHECK-NEXT: #OtherErrorSub.deinit!deallocator.1: @$S6errors13OtherErrorSubCfD // OtherErrorSub.__deallocating_deinit
976976
// CHECK-NEXT:}

test/SILGen/objc_attr_NSManaged.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,13 @@ class FinalEntity: NSObject, EntityIDProto {
119119
// CHECK-LABEL: sil_vtable SwiftGizmo {
120120
// CHECK-NEXT: #SwiftGizmo.modifyX!1: {{.*}} : @$S19objc_attr_NSManaged10SwiftGizmoC7modifyXyyF
121121
// CHECK-NEXT: #SwiftGizmo.testFunc!1: {{.*}} : @$S19objc_attr_NSManaged10SwiftGizmoC8testFuncyyF
122-
// CHECK-NEXT: #SwiftGizmo.deinit!deallocator: @$S19objc_attr_NSManaged10SwiftGizmoCfD
122+
// CHECK-NEXT: #SwiftGizmo.deinit!deallocator.1: @$S19objc_attr_NSManaged10SwiftGizmoCfD
123123
// CHECK-NEXT: }
124124

125125
// CHECK-LABEL: sil_vtable FinalGizmo {
126126
// CHECK-NEXT: #SwiftGizmo.modifyX!1: {{.*}} : @$S19objc_attr_NSManaged10SwiftGizmoC7modifyX{{[_0-9a-zA-Z]*}}F
127127
// CHECK-NEXT: #SwiftGizmo.testFunc!1: {{.*}} : @$S19objc_attr_NSManaged10SwiftGizmoC8testFunc{{[_0-9a-zA-Z]*}}F
128-
// CHECK-NEXT: #FinalGizmo.deinit!deallocator: @$S19objc_attr_NSManaged10FinalGizmoCfD
128+
// CHECK-NEXT: #FinalGizmo.deinit!deallocator.1: @$S19objc_attr_NSManaged10FinalGizmoCfD
129129
// CHECK-NEXT: }
130130

131131
// CHECK-LABEL: sil_vtable ProtoAdopter {

test/SILGen/objc_dealloc.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class SwiftGizmo : Gizmo {
4444
// CHECK-NOT: ref_element_addr
4545

4646
// Call super -dealloc.
47-
// CHECK: [[SUPER_DEALLOC:%[0-9]+]] = objc_super_method [[SELF]] : $SwiftGizmo, #Gizmo.deinit!deallocator.foreign : (Gizmo) -> () -> (), $@convention(objc_method) (Gizmo) -> ()
47+
// CHECK: [[SUPER_DEALLOC:%[0-9]+]] = objc_super_method [[SELF]] : $SwiftGizmo, #Gizmo.deinit!deallocator.1.foreign : (Gizmo) -> () -> (), $@convention(objc_method) (Gizmo) -> ()
4848
// CHECK: [[SUPER:%[0-9]+]] = upcast [[SELF]] : $SwiftGizmo to $Gizmo
4949
// CHECK: [[SUPER_DEALLOC_RESULT:%[0-9]+]] = apply [[SUPER_DEALLOC]]([[SUPER]]) : $@convention(objc_method) (Gizmo) -> ()
5050
// CHECK: end_lifetime [[SUPER]]

test/SILGen/objc_generic_class.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Generic<T>: NSObject {
3535

3636
// CHECK-LABEL: sil hidden @$S18objc_generic_class11SubGeneric1CfD : $@convention(method) <U, V> (@owned SubGeneric1<U, V>) -> () {
3737
// CHECK: bb0([[SELF:%.*]] : @owned $SubGeneric1<U, V>):
38-
// CHECK: [[SUPER_DEALLOC:%.*]] = objc_super_method [[SELF]] : $SubGeneric1<U, V>, #Generic.deinit!deallocator.foreign : <T> (Generic<T>) -> () -> (), $@convention(objc_method) <τ_0_0> (Generic<τ_0_0>) -> ()
38+
// CHECK: [[SUPER_DEALLOC:%.*]] = objc_super_method [[SELF]] : $SubGeneric1<U, V>, #Generic.deinit!deallocator.1.foreign : <T> (Generic<T>) -> () -> (), $@convention(objc_method) <τ_0_0> (Generic<τ_0_0>) -> ()
3939
// CHECK: [[SUPER:%.*]] = upcast [[SELF:%.*]] : $SubGeneric1<U, V> to $Generic<Int>
4040
// CHECK: apply [[SUPER_DEALLOC]]<Int>([[SUPER]])
4141
class SubGeneric1<U, V>: Generic<Int> {

test/SILGen/objc_required_designated_init.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ class Root {
2525

2626
// CHECK-LABEL: sil_vtable Baboom {
2727
// CHECK: #Boom.init!allocator.1: (Boom.Type) -> () -> Boom : @$S29objc_required_designated_init6BaboomCACycfC [override]
28-
// CHECK: #Baboom.deinit!deallocator: @$S29objc_required_designated_init6BaboomCfD
28+
// CHECK: #Baboom.deinit!deallocator.1: @$S29objc_required_designated_init6BaboomCfD
2929
// CHECK: }
3030

3131
// CHECK-LABEL: sil_vtable BigBadaBoom {
3232
// CHECK: #Badaboom.init!allocator.1: <U> (Badaboom<U>.Type) -> () -> Badaboom<U> : @$S29objc_required_designated_init11BigBadaBoomCACyxGycfC [override]
33-
// CHECK: #BigBadaBoom.deinit!deallocator: @$S29objc_required_designated_init11BigBadaBoomCfD
33+
// CHECK: #BigBadaBoom.deinit!deallocator.1: @$S29objc_required_designated_init11BigBadaBoomCfD
3434
// CHECK: }
3535

3636
// CHECK-LABEL: sil_vtable Root {
3737
// CHECK: #Root.init!allocator.1: (Root.Type) -> () -> Root : @$S29objc_required_designated_init4RootCACycfC
38-
// CHECK: #Root.deinit!deallocator: @$S29objc_required_designated_init4RootCfD
38+
// CHECK: #Root.deinit!deallocator.1: @$S29objc_required_designated_init4RootCfD
3939
// CHECK: }

0 commit comments

Comments
 (0)