Skip to content

Commit b4b4a58

Browse files
committed
ASTGen: Translate actor declarations
1 parent ca8f911 commit b4b4a58

File tree

4 files changed

+33
-4
lines changed

4 files changed

+33
-4
lines changed

include/swift/AST/CASTBridging.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ BridgedDeclContextAndDecl ClassDecl_create(
370370
BridgedSourceLoc cClassKeywordLoc, BridgedIdentifier cName,
371371
BridgedSourceLoc cNameLoc, void *_Nullable opaqueGenericParamList,
372372
BridgedArrayRef cInheritedTypes, void *_Nullable opaqueGenericWhereClause,
373-
BridgedSourceRange cBraceRange);
373+
BridgedSourceRange cBraceRange, _Bool isActor);
374374

375375
BridgedDeclContextAndDecl ProtocolDecl_create(
376376
BridgedASTContext cContext, BridgedDeclContext cDeclContext,

lib/AST/CASTBridging.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -599,15 +599,15 @@ BridgedDeclContextAndDecl ClassDecl_create(
599599
BridgedSourceLoc cClassKeywordLoc, BridgedIdentifier cName,
600600
BridgedSourceLoc cNameLoc, void *_Nullable opaqueGenericParamList,
601601
BridgedArrayRef cInheritedTypes, void *_Nullable opaqueGenericWhereClause,
602-
BridgedSourceRange cBraceRange) {
602+
BridgedSourceRange cBraceRange, bool isActor) {
603603
ASTContext &context = convertASTContext(cContext);
604604

605605
auto *decl = new (context) ClassDecl(
606606
convertSourceLoc(cClassKeywordLoc), convertIdentifier(cName),
607607
convertSourceLoc(cNameLoc),
608608
context.AllocateCopy(convertToInheritedEntries(cInheritedTypes)),
609609
static_cast<GenericParamList *>(opaqueGenericParamList),
610-
convertDeclContext(cDeclContext), false);
610+
convertDeclContext(cDeclContext), isActor);
611611
decl->setTrailingWhereClause(
612612
static_cast<TrailingWhereClause *>(opaqueGenericWhereClause));
613613
decl->setBraces(convertSourceRange(cBraceRange));

lib/ASTGen/Sources/ASTGen/Decls.swift

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,31 @@ extension ASTGenVisitor {
5959
self.visit(node.genericParameterClause)?.rawValue,
6060
self.visit(node.inheritanceClause?.inheritedTypes),
6161
self.visit(node.genericWhereClause)?.rawValue,
62-
BridgedSourceRange(startToken: node.memberBlock.leftBrace, endToken: node.memberBlock.rightBrace, in: self)
62+
BridgedSourceRange(startToken: node.memberBlock.leftBrace, endToken: node.memberBlock.rightBrace, in: self),
63+
false
64+
)
65+
66+
self.withDeclContext(decl.asDeclContext) {
67+
IterableDeclContext_setParsedMembers(self.visit(node.memberBlock.members), decl.asDecl)
68+
}
69+
70+
return .decl(decl.asDecl)
71+
}
72+
73+
public func visit(_ node: ActorDeclSyntax) -> ASTNode {
74+
let (name, nameLoc) = node.name.bridgedIdentifierAndSourceLoc(in: self)
75+
76+
let decl = ClassDecl_create(
77+
self.ctx,
78+
self.declContext,
79+
self.bridgedSourceLoc(for: node.actorKeyword),
80+
name,
81+
nameLoc,
82+
self.visit(node.genericParameterClause)?.rawValue,
83+
self.visit(node.inheritanceClause?.inheritedTypes),
84+
self.visit(node.genericWhereClause)?.rawValue,
85+
BridgedSourceRange(startToken: node.memberBlock.leftBrace, endToken: node.memberBlock.rightBrace, in: self),
86+
true
6387
)
6488

6589
self.withDeclContext(decl.asDeclContext) {

test/ASTGen/verify-parse.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,8 @@ class
129129
Class<T>: Proto1 where T: Proto3 {
130130
func method(_ b: Bool) {}
131131
}
132+
133+
actor
134+
Actor<T>: Proto1 where T: Proto1 {
135+
func method(_ b: Bool) {}
136+
}

0 commit comments

Comments
 (0)