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 {
1965
1965
return self . generateAccessControlAttr ( declModifier: node, level: . public)
1966
1966
case . open:
1967
1967
return self . generateAccessControlAttr ( declModifier: node, level: . open)
1968
+ case . nonisolated:
1969
+ return self . generateNonisolatedAttr ( declModifier: node) ? . asDeclAttribute
1968
1970
case . weak, . unowned:
1969
1971
return self . generateReferenceOwnershipAttr ( declModifier: node) ? . asDeclAttribute
1970
1972
default :
@@ -2001,6 +2003,27 @@ extension ASTGenVisitor {
2001
2003
}
2002
2004
}
2003
2005
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
+
2004
2027
func generateReferenceOwnershipAttr( declModifier node: DeclModifierSyntax ) -> BridgedReferenceOwnershipAttr ? {
2005
2028
// 'weak' -> .weak
2006
2029
// 'weak(<unexpected>)' -> .weak (with diagnostics)
Original file line number Diff line number Diff line change @@ -215,3 +215,12 @@ struct NE : ~Escapable {}
215
215
}
216
216
@lifetime ( borrow borrow) func testNameConflict( _ borrow: E ) -> NE { NE ( ) }
217
217
@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