Skip to content

Commit f85d687

Browse files
committed
[astgen] Correctly thread initializer through VarDecl visitor.
1 parent 37ef2d7 commit f85d687

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

include/swift/AST/CASTBridging.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ void *SwiftIntegerLiteralExpr_create(void *ctx, const uint8_t *_Nullable string,
125125
void *SwiftBooleanLiteralExpr_create(void *ctx, _Bool value, void *TokenLoc);
126126

127127
void *SwiftVarDecl_create(void *ctx, BridgedIdentifier _Nullable name,
128+
void *initExpr,
128129
void *loc, _Bool isStatic, _Bool isLet, void *dc);
129130

130131
void *IfStmt_create(void *ctx, void *ifLoc, void *cond, void *_Nullable then,

lib/AST/CASTBridging.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "swift/AST/Expr.h"
77
#include "swift/AST/GenericParamList.h"
88
#include "swift/AST/Identifier.h"
9+
#include "swift/AST/Pattern.h"
910
#include "swift/AST/ParameterList.h"
1011
#include "swift/AST/Stmt.h"
1112
#include "swift/AST/TypeRepr.h"
@@ -139,12 +140,19 @@ void *SwiftBooleanLiteralExpr_create(void *ctx, bool value, void *TokenLoc) {
139140
}
140141

141142
void *SwiftVarDecl_create(void *ctx, BridgedIdentifier _Nullable nameId,
143+
void *initExpr,
142144
void *loc, bool isStatic, bool isLet, void *dc) {
143145
ASTContext &Context = *static_cast<ASTContext *>(ctx);
144146
auto name = (UnresolvedDeclRefExpr *)nameId;
145-
return new (Context) VarDecl(
147+
auto sourceLoc = getSourceLocFromPointer(loc);
148+
auto varDecl = new (Context) VarDecl(
146149
isStatic, isLet ? VarDecl::Introducer::Let : VarDecl::Introducer::Var,
147-
getSourceLocFromPointer(loc), name->getName().getBaseIdentifier(),
150+
sourceLoc, name->getName().getBaseIdentifier(),
151+
reinterpret_cast<DeclContext *>(dc));
152+
auto pattern = NamedPattern::createImplicit(Context, varDecl);
153+
return PatternBindingDecl::create(Context, sourceLoc,
154+
isStatic ? StaticSpellingKind::KeywordStatic : StaticSpellingKind::None,
155+
sourceLoc, pattern, sourceLoc, (Expr *)initExpr,
148156
reinterpret_cast<DeclContext *>(dc));
149157
}
150158

lib/ASTGen/Sources/ASTGen/Decls.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ extension ASTGenVisitor {
7575
let isLet = node.letOrVarKeyword.tokenKind == .letKeyword
7676

7777
// TODO: don't drop "initializer" on the floor.
78-
return .decl(SwiftVarDecl_create(ctx, pattern, loc, isStateic, isLet, declContext))
78+
return .decl(SwiftVarDecl_create(ctx, pattern, initializer, loc, isStateic,
79+
isLet, declContext))
7980
}
8081

8182
public func visit(_ node: FunctionParameterSyntax) -> ASTNode {

0 commit comments

Comments
 (0)