File tree Expand file tree Collapse file tree 2 files changed +32
-0
lines changed
lib/ASTGen/Sources/ASTGen Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -1965,6 +1965,8 @@ extension ASTGenVisitor {
19651965 return self . generateAccessControlAttr ( declModifier: node, level: . public)
19661966 case . open:
19671967 return self . generateAccessControlAttr ( declModifier: node, level: . open)
1968+ case . nonisolated:
1969+ return self . generateNonisolatedAttr ( declModifier: node) ? . asDeclAttribute
19681970 case . weak, . unowned:
19691971 return self . generateReferenceOwnershipAttr ( declModifier: node) ? . asDeclAttribute
19701972 default :
@@ -2001,6 +2003,27 @@ extension ASTGenVisitor {
20012003 }
20022004 }
20032005
2006+ func generateNonisolatedAttr( declModifier node: DeclModifierSyntax ) -> BridgedNonisolatedAttr ? {
2007+ let isUnsafe : Bool
2008+ switch node. detail? . detail. rawText {
2009+ case " unsafe " :
2010+ isUnsafe = true
2011+ case nil :
2012+ isUnsafe = false
2013+ case let text? :
2014+ // TODO: Diagnose
2015+ _ = text
2016+ fatalError ( " invalid argument for nonisolated modifier " )
2017+ }
2018+
2019+ return BridgedNonisolatedAttr . createParsed (
2020+ self . ctx,
2021+ atLoc: nil ,
2022+ range: self . generateSourceRange ( node) ,
2023+ isUnsafe: isUnsafe
2024+ )
2025+ }
2026+
20042027 func generateReferenceOwnershipAttr( declModifier node: DeclModifierSyntax ) -> BridgedReferenceOwnershipAttr ? {
20052028 // 'weak' -> .weak
20062029 // 'weak(<unexpected>)' -> .weak (with diagnostics)
Original file line number Diff line number Diff line change @@ -215,3 +215,12 @@ struct NE : ~Escapable {}
215215}
216216@lifetime ( borrow borrow) func testNameConflict( _ borrow: E ) -> NE { NE ( ) }
217217@lifetime ( result: source) func testTarget( _ result: inout NE , _ source: consuming NE ) { result = source }
218+
219+ actor MyActor {
220+ nonisolated let constFlag : Bool = false
221+ nonisolated ( unsafe) var mutableFlag: Bool = false
222+ }
223+ func testNonIsolated( actor : MyActor ) {
224+ _ = actor . constFlag
225+ _ = actor . mutableFlag
226+ }
You can’t perform that action at this time.
0 commit comments