@@ -2724,7 +2724,6 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
2724
2724
bool isImplicit, isObjC, hasStubImplementation, throws;
2725
2725
GenericEnvironmentID genericEnvID;
2726
2726
uint8_t storedInitKind, rawAccessLevel;
2727
- TypeID interfaceID;
2728
2727
DeclID overriddenID;
2729
2728
bool needsNewVTableEntry, firstTimeRequired;
2730
2729
uint8_t rawDefaultArgumentResilienceExpansion;
@@ -2735,7 +2734,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
2735
2734
rawFailability, isImplicit,
2736
2735
isObjC, hasStubImplementation,
2737
2736
throws, storedInitKind,
2738
- genericEnvID, interfaceID,
2737
+ genericEnvID,
2739
2738
overriddenID,
2740
2739
rawAccessLevel,
2741
2740
needsNewVTableEntry,
@@ -2819,23 +2818,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
2819
2818
assert (bodyParams && " missing parameters for constructor" );
2820
2819
ctor->setParameters (selfDecl, bodyParams);
2821
2820
2822
- auto interfaceType = getType (interfaceID);
2823
- ctor->setInterfaceType (interfaceType);
2824
-
2825
- // Set the initializer interface type of the constructor.
2826
- auto allocType = ctor->getInterfaceType ();
2827
- auto selfParam = computeSelfParam (ctor, /* isInitializingCtor=*/ true );
2828
- if (auto polyFn = allocType->getAs <GenericFunctionType>()) {
2829
- ctor->setInitializerInterfaceType (
2830
- GenericFunctionType::get (polyFn->getGenericSignature (),
2831
- {selfParam}, polyFn->getResult (),
2832
- polyFn->getExtInfo ()));
2833
- } else {
2834
- auto fn = allocType->castTo <FunctionType>();
2835
- ctor->setInitializerInterfaceType (FunctionType::get ({selfParam},
2836
- fn->getResult (),
2837
- fn->getExtInfo ()));
2838
- }
2821
+ ctor->computeType ();
2839
2822
2840
2823
if (auto errorConvention = maybeReadForeignErrorConvention ())
2841
2824
ctor->setForeignErrorConvention (*errorConvention);
@@ -3041,7 +3024,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3041
3024
bool isObjC, hasDynamicSelf, hasForcedStaticDispatch, throws;
3042
3025
unsigned numNameComponentsBiased;
3043
3026
GenericEnvironmentID genericEnvID;
3044
- TypeID interfaceTypeID ;
3027
+ TypeID resultInterfaceTypeID ;
3045
3028
DeclID associatedDeclID;
3046
3029
DeclID overriddenID;
3047
3030
DeclID accessorStorageDeclID;
@@ -3055,7 +3038,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3055
3038
rawMutModifier, hasDynamicSelf,
3056
3039
hasForcedStaticDispatch, throws,
3057
3040
genericEnvID,
3058
- interfaceTypeID ,
3041
+ resultInterfaceTypeID ,
3059
3042
associatedDeclID, overriddenID,
3060
3043
numNameComponentsBiased,
3061
3044
rawAccessLevel,
@@ -3068,7 +3051,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3068
3051
rawMutModifier, hasDynamicSelf,
3069
3052
hasForcedStaticDispatch, throws,
3070
3053
genericEnvID,
3071
- interfaceTypeID ,
3054
+ resultInterfaceTypeID ,
3072
3055
overriddenID,
3073
3056
accessorStorageDeclID,
3074
3057
rawAccessorKind, rawAddressorKind,
@@ -3221,9 +3204,9 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3221
3204
}
3222
3205
}
3223
3206
3224
- // Set the interface type.
3225
- auto interfaceType = getType (interfaceTypeID);
3226
- fn->setInterfaceType (interfaceType );
3207
+ fn-> setStatic (isStatic);
3208
+
3209
+ fn->getBodyResultTypeLoc (). setType ( getType (resultInterfaceTypeID) );
3227
3210
3228
3211
ParamDecl *selfDecl = nullptr ;
3229
3212
if (DC->isTypeContext ()) {
@@ -3237,6 +3220,9 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3237
3220
3238
3221
fn->setParameters (selfDecl, paramList);
3239
3222
3223
+ // Set the interface type.
3224
+ fn->computeType ();
3225
+
3240
3226
if (auto errorConvention = maybeReadForeignErrorConvention ())
3241
3227
fn->setForeignErrorConvention (*errorConvention);
3242
3228
@@ -3245,7 +3231,6 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3245
3231
AddAttribute (new (ctx) OverrideAttr (SourceLoc ()));
3246
3232
}
3247
3233
3248
- fn->setStatic (isStatic);
3249
3234
if (isImplicit)
3250
3235
fn->setImplicit ();
3251
3236
fn->setIsObjC (isObjC);
@@ -3644,7 +3629,6 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3644
3629
3645
3630
case decls_block::ENUM_ELEMENT_DECL: {
3646
3631
DeclContextID contextID;
3647
- TypeID interfaceTypeID;
3648
3632
bool isImplicit; bool hasPayload; bool isNegative;
3649
3633
unsigned rawValueKindID;
3650
3634
IdentifierID blobData;
@@ -3653,7 +3637,6 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3653
3637
ArrayRef<uint64_t > argNameAndDependencyIDs;
3654
3638
3655
3639
decls_block::EnumElementLayout::readRecord (scratch, contextID,
3656
- interfaceTypeID,
3657
3640
isImplicit, hasPayload,
3658
3641
rawValueKindID, isNegative,
3659
3642
blobData,
@@ -3710,8 +3693,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3710
3693
}
3711
3694
}
3712
3695
3713
- auto interfaceType = getType (interfaceTypeID);
3714
- elem->setInterfaceType (interfaceType);
3696
+ elem->computeType ();
3715
3697
3716
3698
if (isImplicit)
3717
3699
elem->setImplicit ();
@@ -3732,7 +3714,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3732
3714
DeclContextID contextID;
3733
3715
bool isImplicit, isObjC, isGetterMutating, isSetterMutating;
3734
3716
GenericEnvironmentID genericEnvID;
3735
- TypeID interfaceTypeID ;
3717
+ TypeID elemInterfaceTypeID ;
3736
3718
AccessorRecord accessors;
3737
3719
DeclID overriddenID;
3738
3720
uint8_t rawAccessLevel, rawSetterAccessLevel;
@@ -3746,7 +3728,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3746
3728
readImpl, writeImpl, readWriteImpl,
3747
3729
numAccessors,
3748
3730
genericEnvID,
3749
- interfaceTypeID ,
3731
+ elemInterfaceTypeID ,
3750
3732
overriddenID, rawAccessLevel,
3751
3733
rawSetterAccessLevel, numArgNames,
3752
3734
argNameAndDependencyIDs);
@@ -3814,8 +3796,9 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3814
3796
}
3815
3797
}
3816
3798
3817
- auto interfaceType = getType (interfaceTypeID);
3818
- subscript->setInterfaceType (interfaceType);
3799
+ auto elemInterfaceType = getType (elemInterfaceTypeID);
3800
+ subscript->getElementTypeLoc ().setType (elemInterfaceType);
3801
+ subscript->computeType ();
3819
3802
3820
3803
if (isImplicit)
3821
3804
subscript->setImplicit ();
@@ -3911,12 +3894,10 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3911
3894
DeclContextID contextID;
3912
3895
bool isImplicit, isObjC;
3913
3896
GenericEnvironmentID genericEnvID;
3914
- TypeID interfaceID;
3915
3897
3916
3898
decls_block::DestructorLayout::readRecord (scratch, contextID,
3917
3899
isImplicit, isObjC,
3918
- genericEnvID,
3919
- interfaceID);
3900
+ genericEnvID);
3920
3901
3921
3902
DeclContext *DC = getDeclContext (contextID);
3922
3903
if (declOrOffset.isComplete ())
@@ -3935,8 +3916,7 @@ ModuleFile::getDeclCheckedImpl(DeclID DID) {
3935
3916
selfDecl->setImplicit ();
3936
3917
dtor->setParameters (selfDecl, ParameterList::createEmpty (ctx));
3937
3918
3938
- auto interfaceType = getType (interfaceID);
3939
- dtor->setInterfaceType (interfaceType);
3919
+ dtor->computeType ();
3940
3920
3941
3921
if (isImplicit)
3942
3922
dtor->setImplicit ();
0 commit comments