@@ -23,9 +23,12 @@ extension ASTGenVisitor {
2323 func generateAvailableAttr(
2424 atLoc: BridgedSourceLoc ,
2525 range: BridgedSourceRange ,
26+ attrName: SyntaxText ,
2627 args: AvailabilityArgumentListSyntax
2728 ) -> [ BridgedAvailableAttr ] {
2829
30+ let isSPI = attrName == " _spi_available "
31+
2932 // Check if this is "shorthand" syntax.
3033 if let firstArg = args. first? . argument {
3134 // We need to check availability macros specified by '-define-availability'.
@@ -40,15 +43,14 @@ extension ASTGenVisitor {
4043 isShorthand = false
4144 }
4245 if isShorthand {
43- return self . generateAvailableAttrShorthand ( atLoc: atLoc, range: range, args: args)
46+ return self . generateAvailableAttrShorthand ( atLoc: atLoc, range: range, args: args, isSPI : isSPI )
4447 }
4548 }
4649
4750 // E.g.
4851 // @available(macOS, introduced: 10.12, deprecated: 11.2)
4952 // @available(*, unavailable, message: "out of service")
50- let attr = self . generateAvailableAttrExtended ( atLoc: atLoc, range: range, args: args)
51-
53+ let attr = self . generateAvailableAttrExtended ( atLoc: atLoc, range: range, args: args, isSPI: isSPI)
5254 if let attr {
5355 return [ attr]
5456 } else {
@@ -66,7 +68,8 @@ extension ASTGenVisitor {
6668 func generateAvailableAttrShorthand(
6769 atLoc: BridgedSourceLoc ,
6870 range: BridgedSourceRange ,
69- args: AvailabilityArgumentListSyntax
71+ args: AvailabilityArgumentListSyntax ,
72+ isSPI: Bool
7073 ) -> [ BridgedAvailableAttr ] {
7174 let specs = self . generateAvailabilitySpecList ( args: args, context: . availableAttr)
7275
@@ -100,7 +103,8 @@ extension ASTGenVisitor {
100103 deprecated: BridgedVersionTuple ( ) ,
101104 deprecatedRange: BridgedSourceRange ( ) ,
102105 obsoleted: BridgedVersionTuple ( ) ,
103- obsoletedRange: BridgedSourceRange ( )
106+ obsoletedRange: BridgedSourceRange ( ) ,
107+ isSPI: isSPI
104108 )
105109 attr. setIsGroupMember ( )
106110 if containsWildCard {
@@ -119,7 +123,8 @@ extension ASTGenVisitor {
119123 func generateAvailableAttrExtended(
120124 atLoc: BridgedSourceLoc ,
121125 range: BridgedSourceRange ,
122- args: AvailabilityArgumentListSyntax
126+ args: AvailabilityArgumentListSyntax ,
127+ isSPI: Bool
123128 ) -> BridgedAvailableAttr ? {
124129 var args = args [ ... ]
125130
@@ -262,7 +267,8 @@ extension ASTGenVisitor {
262267 deprecated: deprecated? . version. bridged ?? BridgedVersionTuple ( ) ,
263268 deprecatedRange: deprecated? . range ?? BridgedSourceRange ( ) ,
264269 obsoleted: obsoleted? . version. bridged ?? BridgedVersionTuple ( ) ,
265- obsoletedRange: obsoleted? . range ?? BridgedSourceRange ( )
270+ obsoletedRange: obsoleted? . range ?? BridgedSourceRange ( ) ,
271+ isSPI: isSPI
266272 )
267273 }
268274
0 commit comments