mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Add support to syntax tree
This commit is contained in:
@@ -595,8 +595,10 @@ bool Parser::parseSpecializeAttributeArguments(
|
||||
auto ParamLabel = Tok.getText();
|
||||
SyntaxParsingContext ArgumentContext(
|
||||
SyntaxContext, ParamLabel == "target"
|
||||
? SyntaxKind::TargetFunctionEntry
|
||||
: SyntaxKind::LabeledSpecializeEntry);
|
||||
? SyntaxKind::TargetFunctionEntry :
|
||||
(ParamLabel == "availability" ?
|
||||
SyntaxKind::AvailabilityEntry
|
||||
: SyntaxKind::LabeledSpecializeEntry));
|
||||
if (ParamLabel != "exported" && ParamLabel != "kind" &&
|
||||
ParamLabel != "target" && ParamLabel != "spi" &&
|
||||
ParamLabel != "spiModule" && ParamLabel != "availability") {
|
||||
|
||||
@@ -34,3 +34,7 @@ public struct AvailableStruct {
|
||||
public func availableNestedMethod() {}
|
||||
}
|
||||
}
|
||||
|
||||
@_specialize(exported: true, availability: macOS 11, iOS 13, *; where T == Int)
|
||||
//@_specialize(exported: true, where T == Int)
|
||||
public func testAvailability<T>(_ t: T) {}
|
||||
|
||||
@@ -102,10 +102,25 @@ ATTRIBUTE_NODES = [
|
||||
element='Syntax', element_name='SpecializeAttribute',
|
||||
element_choices=[
|
||||
'LabeledSpecializeEntry',
|
||||
'AvailabilityEntry',
|
||||
'TargetFunctionEntry',
|
||||
'GenericWhereClause',
|
||||
]),
|
||||
|
||||
Node('AvailabilityEntry', kind='Syntax',
|
||||
description='''
|
||||
The availability argument for the _specialize attribute
|
||||
''',
|
||||
children=[
|
||||
Child('Label', kind='IdentifierToken',
|
||||
description='The label of the argument'),
|
||||
Child('Colon', kind='ColonToken',
|
||||
description='The colon separating the label and the value'),
|
||||
Child('AvailabilityList', kind='AvailabilitySpecList',
|
||||
collection_element_name='Availability'),
|
||||
Child('Semicolon', kind='SemicolonToken'),
|
||||
]),
|
||||
|
||||
# Representation of e.g. 'exported: true,'
|
||||
# labeled-specialize-entry -> identifier ':' token ','?
|
||||
Node('LabeledSpecializeEntry', kind='Syntax',
|
||||
|
||||
@@ -253,6 +253,7 @@ SYNTAX_NODE_SERIALIZATION_CODES = {
|
||||
'TargetFunctionEntry': 248,
|
||||
'PostfixIfConfigExpr': 250,
|
||||
'UnavailabilityCondition': 251,
|
||||
'AvailabilityEntry' : 252,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user