Skip to content

Commit d91d5ae

Browse files
authored
Merge pull request #60435 from slavapestov/type-resolution-cleanup
Sema: Type resolution only needs a GenericSignature and not a GenericEnvironment
2 parents 8d8aa6e + 172bcdc commit d91d5ae

File tree

8 files changed

+207
-218
lines changed

8 files changed

+207
-218
lines changed

include/swift/AST/TypeRepr.h

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include "swift/AST/Attr.h"
2121
#include "swift/AST/DeclContext.h"
22+
#include "swift/AST/GenericSignature.h"
2223
#include "swift/AST/Identifier.h"
2324
#include "swift/AST/Type.h"
2425
#include "swift/AST/TypeAlignments.h"
@@ -34,7 +35,6 @@
3435
namespace swift {
3536
class ASTWalker;
3637
class DeclContext;
37-
class GenericEnvironment;
3838
class IdentTypeRepr;
3939
class TupleTypeRepr;
4040
class TypeDecl;
@@ -492,14 +492,14 @@ inline IdentTypeRepr::ComponentRange IdentTypeRepr::getComponentRange() {
492492
/// (x: Foo, y: Bar) -> Baz
493493
/// \endcode
494494
class FunctionTypeRepr : public TypeRepr {
495-
// The generic params / environment / substitutions fields are only used
495+
// The generic params / signature / substitutions fields are only used
496496
// in SIL mode, which is the only time we can have polymorphic and
497497
// substituted function values.
498498
GenericParamList *GenericParams;
499-
GenericEnvironment *GenericEnv;
499+
GenericSignature GenericSig;
500500
ArrayRef<TypeRepr *> InvocationSubs;
501501
GenericParamList *PatternGenericParams;
502-
GenericEnvironment *PatternGenericEnv;
502+
GenericSignature PatternGenericSig;
503503
ArrayRef<TypeRepr *> PatternSubs;
504504

505505
TupleTypeRepr *ArgsTy;
@@ -516,37 +516,37 @@ class FunctionTypeRepr : public TypeRepr {
516516
ArrayRef<TypeRepr *> patternSubs = {},
517517
ArrayRef<TypeRepr *> invocationSubs = {})
518518
: TypeRepr(TypeReprKind::Function),
519-
GenericParams(genericParams), GenericEnv(nullptr),
519+
GenericParams(genericParams),
520520
InvocationSubs(invocationSubs),
521-
PatternGenericParams(patternGenericParams), PatternGenericEnv(nullptr),
521+
PatternGenericParams(patternGenericParams),
522522
PatternSubs(patternSubs),
523523
ArgsTy(argsTy), RetTy(retTy),
524524
AsyncLoc(asyncLoc), ThrowsLoc(throwsLoc), ArrowLoc(arrowLoc) {
525525
}
526526

527527
GenericParamList *getGenericParams() const { return GenericParams; }
528-
GenericEnvironment *getGenericEnvironment() const { return GenericEnv; }
528+
GenericSignature getGenericSignature() const { return GenericSig; }
529529

530530
GenericParamList *getPatternGenericParams() const {
531531
return PatternGenericParams;
532532
}
533-
GenericEnvironment *getPatternGenericEnvironment() const {
534-
return PatternGenericEnv;
533+
GenericSignature getPatternGenericSignature() const {
534+
return PatternGenericSig;
535535
}
536536

537537
ArrayRef<TypeRepr*> getPatternSubstitutions() const { return PatternSubs; }
538538
ArrayRef<TypeRepr*> getInvocationSubstitutions() const {
539539
return InvocationSubs;
540540
}
541541

542-
void setPatternGenericEnvironment(GenericEnvironment *genericEnv) {
543-
assert(PatternGenericEnv == nullptr);
544-
PatternGenericEnv = genericEnv;
542+
void setPatternGenericSignature(GenericSignature genericSig) {
543+
assert(!PatternGenericSig);
544+
PatternGenericSig = genericSig;
545545
}
546546

547-
void setGenericEnvironment(GenericEnvironment *genericEnv) {
548-
assert(GenericEnv == nullptr);
549-
GenericEnv = genericEnv;
547+
void setGenericSignature(GenericSignature genericSig) {
548+
assert(!GenericSig);
549+
GenericSig = genericSig;
550550
}
551551

552552
TupleTypeRepr *getArgsTypeRepr() const { return ArgsTy; }
@@ -1239,7 +1239,7 @@ class SILBoxTypeRepr final : public TypeRepr,
12391239
SILBoxTypeReprField, TypeRepr *> {
12401240
friend TrailingObjects;
12411241
GenericParamList *GenericParams;
1242-
GenericEnvironment *GenericEnv = nullptr;
1242+
GenericSignature GenericSig;
12431243

12441244
SourceLoc LBraceLoc, RBraceLoc;
12451245
SourceLoc ArgLAngleLoc, ArgRAngleLoc;
@@ -1280,9 +1280,9 @@ class SILBoxTypeRepr final : public TypeRepr,
12801280
SourceLoc ArgLAngleLoc, ArrayRef<TypeRepr *> GenericArgs,
12811281
SourceLoc ArgRAngleLoc);
12821282

1283-
void setGenericEnvironment(GenericEnvironment *Env) {
1284-
assert(!GenericEnv);
1285-
GenericEnv = Env;
1283+
void setGenericSignature(GenericSignature Sig) {
1284+
assert(!GenericSig);
1285+
GenericSig = Sig;
12861286
}
12871287

12881288
ArrayRef<Field> getFields() const {
@@ -1297,8 +1297,8 @@ class SILBoxTypeRepr final : public TypeRepr,
12971297
GenericParamList *getGenericParams() const {
12981298
return GenericParams;
12991299
}
1300-
GenericEnvironment *getGenericEnvironment() const {
1301-
return GenericEnv;
1300+
GenericSignature getGenericSignature() const {
1301+
return GenericSig;
13021302
}
13031303

13041304
SourceLoc getLBraceLoc() const { return LBraceLoc; }

include/swift/Subsystems.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ namespace swift {
4848
class Evaluator;
4949
class FileUnit;
5050
class GeneratedModule;
51-
class GenericEnvironment;
5251
class GenericParamList;
52+
class GenericSignature;
5353
class IRGenOptions;
5454
class LangOptions;
5555
class SILOptions;
@@ -169,13 +169,13 @@ namespace swift {
169169
/// \returns A well-formed type on success, or an \c ErrorType.
170170
Type performTypeResolution(TypeRepr *TyR, ASTContext &Ctx, bool isSILMode,
171171
bool isSILType,
172-
GenericEnvironment *GenericEnv,
172+
GenericSignature GenericSig,
173173
GenericParamList *GenericParams,
174174
DeclContext *DC, bool ProduceDiagnostics = true);
175175

176176
/// Expose TypeChecker's handling of GenericParamList to SIL parsing.
177-
GenericEnvironment *handleSILGenericParams(GenericParamList *genericParams,
178-
DeclContext *DC);
177+
GenericSignature handleSILGenericParams(GenericParamList *genericParams,
178+
DeclContext *DC);
179179

180180
/// Turn the given module into SIL IR.
181181
///

lib/IDE/CodeCompletion.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks {
184184
ParsedTypeLoc.getTypeRepr(), P.Context,
185185
/*isSILMode=*/false,
186186
/*isSILType=*/false,
187-
CurDeclContext->getGenericEnvironmentOfContext(),
187+
CurDeclContext->getGenericSignatureOfContext(),
188188
/*GenericParams=*/nullptr,
189189
CurDeclContext,
190190
/*ProduceDiagnostics=*/false);

lib/IDE/ExprContextAnalysis.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ void swift::ide::collectPossibleReturnTypesFromContext(
253253
const auto type = swift::performTypeResolution(
254254
CE->getExplicitResultTypeRepr(), DC->getASTContext(),
255255
/*isSILMode=*/false, /*isSILType=*/false,
256-
DC->getGenericEnvironmentOfContext(), /*GenericParams=*/nullptr,
256+
DC->getGenericSignatureOfContext(), /*GenericParams=*/nullptr,
257257
const_cast<DeclContext *>(DC), /*diagnostics=*/false);
258258

259259
if (!type->hasError()) {

0 commit comments

Comments
 (0)