mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[Syntax] Redesign IfConfigDecl syntax
This commit is contained in:
@@ -84,29 +84,32 @@ DECL_NODES = [
|
||||
Child('Output', kind='ReturnClause', is_optional=True),
|
||||
]),
|
||||
|
||||
# else-if-directive-clause -> '#elseif' expr stmt-list
|
||||
Node('ElseifDirectiveClause', kind='Syntax',
|
||||
traits=['WithStatements'],
|
||||
# if-config-clause ->
|
||||
# ('#if' | '#elseif' | '#else') expr? (stmt-list | switch-case-list)
|
||||
Node('IfConfigClause', kind='Syntax',
|
||||
children=[
|
||||
Child('PoundElseif', kind='PoundElseifToken'),
|
||||
Child('Condition', kind='Expr'),
|
||||
Child('Statements', kind='CodeBlockItemList'),
|
||||
Child('PoundKeyword', kind='Token',
|
||||
token_choices=[
|
||||
'PoundIfToken',
|
||||
'PoundElseifToken',
|
||||
'PoundElseToken',
|
||||
]),
|
||||
Child('Condition', kind='Expr',
|
||||
is_optional=True),
|
||||
Child('Elements', kind='Syntax',
|
||||
node_choices=[
|
||||
Child('Statements', kind='CodeBlockItemList'),
|
||||
Child('SwitchCases', kind='SwitchCaseList')]),
|
||||
]),
|
||||
|
||||
Node('IfConfigClauseList', kind='SyntaxCollection',
|
||||
element='IfConfigClause'),
|
||||
|
||||
# if-config-decl -> '#if' expr stmt-list else-if-directive-clause-list
|
||||
# else-clause? '#endif'
|
||||
Node('IfConfigDecl', kind='Decl',
|
||||
children=[
|
||||
Child('PoundIf', kind='PoundIfToken'),
|
||||
Child('Condition', kind='Expr'),
|
||||
Child('Elements', kind='Syntax',
|
||||
node_choices=[
|
||||
Child('Statements', kind='CodeBlockItemList'),
|
||||
Child('SwitchCases', kind='SwitchCaseList')]),
|
||||
Child('ElseifDirectiveClauses', kind='ElseifDirectiveClauseList',
|
||||
is_optional=True),
|
||||
Child('ElseClause', kind='ElseDirectiveClause',
|
||||
is_optional=True),
|
||||
Child('Clauses', kind='IfConfigClauseList'),
|
||||
Child('PoundEndif', kind='PoundEndifToken'),
|
||||
]),
|
||||
|
||||
@@ -406,19 +409,6 @@ DECL_NODES = [
|
||||
Child('Accessor', kind='AccessorBlock', is_optional=True),
|
||||
]),
|
||||
|
||||
# else-if-directive-clause-list -> else-if-directive-clause
|
||||
# else-if-directive-clause-list?
|
||||
Node('ElseifDirectiveClauseList', kind='SyntaxCollection',
|
||||
element='ElseifDirectiveClause'),
|
||||
|
||||
# else-directive-clause -> '#else' stmt-list
|
||||
Node('ElseDirectiveClause', kind='Syntax',
|
||||
traits=['WithStatements'],
|
||||
children=[
|
||||
Child('PoundElse', kind='PoundElseToken'),
|
||||
Child('Statements', kind='CodeBlockItemList'),
|
||||
]),
|
||||
|
||||
# access-level-modifier -> 'private' | 'private' '(' 'set' ')'
|
||||
# | 'fileprivate' | 'fileprivate' '(' 'set' ')'
|
||||
# | 'internal' | 'internal' '(' 'set' ')'
|
||||
|
||||
Reference in New Issue
Block a user