@@ -69,6 +69,8 @@ extension ASTGenVisitor {
6969 return self . generate ( typeAliasDecl: node) ? . asDecl
7070 case . variableDecl( let node) :
7171 return self . generate ( variableDecl: node)
72+ case . usingDecl( let node) :
73+ return self . generate ( usingDecl: node) ? . asDecl
7274 }
7375 }
7476
@@ -1083,6 +1085,37 @@ extension ASTGenVisitor {
10831085 }
10841086}
10851087
1088+ extension ASTGenVisitor {
1089+ func generate( usingDecl node: UsingDeclSyntax ) -> BridgedUsingDecl ? {
1090+ var specifier : BridgedUsingSpecifier ? = nil
1091+
1092+ switch node. specifier {
1093+ case . attribute( let attr) :
1094+ if let identifier = attr. attributeName. as ( IdentifierTypeSyntax . self) ,
1095+ identifier. name. tokenKind == . identifier( " MainActor " ) {
1096+ specifier = . mainActor
1097+ }
1098+ case . modifier( let modifier) :
1099+ if case . identifier( " nonisolated " ) = modifier. tokenKind {
1100+ specifier = . nonisolated
1101+ }
1102+ }
1103+
1104+ guard let specifier else {
1105+ self . diagnose ( . invalidDefaultIsolationSpecifier( node. specifier) )
1106+ return nil
1107+ }
1108+
1109+ return BridgedUsingDecl . createParsed (
1110+ self . ctx,
1111+ declContext: self . declContext,
1112+ usingKeywordLoc: self . generateSourceLoc ( node. usingKeyword) ,
1113+ specifierLoc: self . generateSourceLoc ( node. specifier) ,
1114+ specifier: specifier
1115+ )
1116+ }
1117+ }
1118+
10861119extension ASTGenVisitor {
10871120 func generate( memberBlockItem node: MemberBlockItemSyntax ) -> BridgedDecl ? {
10881121 if let node = node. decl. as ( MacroExpansionDeclSyntax . self) {
0 commit comments