AST: Call setValidationStarted() on synthesized declarations

This avoids doing unnecessary work in validateDecl().
This commit is contained in:
Slava Pestov
2017-10-20 23:06:37 -07:00
parent d23e2bce62
commit 15fa6c8955
3 changed files with 9 additions and 0 deletions

View File

@@ -163,6 +163,7 @@ getBuiltinFunction(Identifier Id, ArrayRef<Type> argTypes, Type ResType,
Identifier(), argType, Identifier(), argType,
DC); DC);
PD->setInterfaceType(argType); PD->setInterfaceType(argType);
PD->setValidationStarted();
PD->setImplicit(); PD->setImplicit();
params.push_back(PD); params.push_back(PD);
} }
@@ -180,6 +181,7 @@ getBuiltinFunction(Identifier Id, ArrayRef<Type> argTypes, Type ResType,
paramList, paramList,
TypeLoc::withoutLoc(ResType), DC); TypeLoc::withoutLoc(ResType), DC);
FD->setInterfaceType(FnType); FD->setInterfaceType(FnType);
FD->setValidationStarted();
FD->setImplicit(); FD->setImplicit();
FD->setAccess(AccessLevel::Public); FD->setAccess(AccessLevel::Public);
return FD; return FD;
@@ -226,6 +228,7 @@ getBuiltinGenericFunction(Identifier Id,
Identifier(), Identifier(),
paramType->getInOutObjectType(), DC); paramType->getInOutObjectType(), DC);
PD->setInterfaceType(paramIfaceType->getInOutObjectType()); PD->setInterfaceType(paramIfaceType->getInOutObjectType());
PD->setValidationStarted();
PD->setImplicit(); PD->setImplicit();
params.push_back(PD); params.push_back(PD);
} }
@@ -244,6 +247,7 @@ getBuiltinGenericFunction(Identifier Id,
TypeLoc::withoutLoc(ResBodyType), DC); TypeLoc::withoutLoc(ResBodyType), DC);
func->setInterfaceType(InterfaceType); func->setInterfaceType(InterfaceType);
func->setValidationStarted();
func->setGenericEnvironment(Env); func->setGenericEnvironment(Env);
func->setImplicit(); func->setImplicit();
func->setAccess(AccessLevel::Public); func->setAccess(AccessLevel::Public);

View File

@@ -4315,6 +4315,7 @@ ParamDecl *ParamDecl::createSelf(SourceLoc loc, DeclContext *DC,
Identifier(), loc, C.Id_self, selfType,DC); Identifier(), loc, C.Id_self, selfType,DC);
selfDecl->setImplicit(); selfDecl->setImplicit();
selfDecl->setInterfaceType(selfInterfaceType); selfDecl->setInterfaceType(selfInterfaceType);
selfDecl->setValidationStarted();
return selfDecl; return selfDecl;
} }

View File

@@ -352,6 +352,10 @@ ModuleDecl::ModuleDecl(Identifier name, ASTContext &ctx)
ctx.addDestructorCleanup(*this); ctx.addDestructorCleanup(*this);
setImplicit(); setImplicit();
setInterfaceType(ModuleType::get(this)); setInterfaceType(ModuleType::get(this));
// validateDecl() should return immediately given a ModuleDecl.
setValidationStarted();
setAccess(AccessLevel::Public); setAccess(AccessLevel::Public);
} }