[AST] Add some 'create' factory methods

This provides consistency with other AST nodes,
and will be useful for implementing ArgumentList
construction in the future.
This commit is contained in:
Hamish Knight
2021-07-28 23:14:44 +01:00
parent c70f280e4a
commit 72d4d9f1e9
12 changed files with 87 additions and 49 deletions

View File

@@ -98,7 +98,7 @@ deriveBodyMathOperator(AbstractFunctionDecl *funcDecl, MathOperator op) {
auto *nominalTypeExpr = TypeExpr::createImplicitForDecl(
DeclNameLoc(), nominal, funcDecl,
funcDecl->mapTypeIntoContext(nominal->getInterfaceType()));
auto *initExpr = new (C) ConstructorRefCallExpr(initDRE, nominalTypeExpr);
auto *initExpr = ConstructorRefCallExpr::create(C, initDRE, nominalTypeExpr);
// Get operator protocol requirement.
auto *proto = C.getProtocol(KnownProtocolKind::AdditiveArithmetic);
@@ -229,7 +229,7 @@ deriveBodyPropertyGetter(AbstractFunctionDecl *funcDecl, ProtocolDecl *proto,
auto *nominalTypeExpr = TypeExpr::createImplicitForDecl(
DeclNameLoc(), nominal, funcDecl,
funcDecl->mapTypeIntoContext(nominal->getInterfaceType()));
auto *initExpr = new (C) ConstructorRefCallExpr(initDRE, nominalTypeExpr);
auto *initExpr = ConstructorRefCallExpr::create(C, initDRE, nominalTypeExpr);
auto createMemberPropertyExpr = [&](VarDecl *member) -> Expr * {
auto memberType =