mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Revert "Revert "[SyntaxParse] Parse generic parameter clause and generic where clause""
This reverts commit 1584e87aa7.
This commit is contained in:
@@ -11,22 +11,39 @@ GENERIC_NODES = [
|
||||
]),
|
||||
|
||||
Node('GenericRequirementList', kind='SyntaxCollection',
|
||||
element='Syntax',
|
||||
element='GenericRequirement',
|
||||
element_name='GenericRequirement'),
|
||||
|
||||
# generic-requirement ->
|
||||
# (same-type-requrement|conformance-requirement|layout-requirement) ','?
|
||||
Node('GenericRequirement', kind='Syntax',
|
||||
traits=['WithTrailingComma'],
|
||||
children=[
|
||||
Child('Body', kind='Syntax',
|
||||
node_choices=[
|
||||
Child('SameTypeRequirement',
|
||||
kind='SameTypeRequirement'),
|
||||
Child('ConformanceRequirement',
|
||||
kind='ConformanceRequirement'),
|
||||
Child('LayoutRequirement',
|
||||
kind='LayoutRequirement'),
|
||||
]),
|
||||
Child('TrailingComma', kind='CommaToken',
|
||||
is_optional=True),
|
||||
]),
|
||||
|
||||
# same-type-requirement -> type-identifier == type
|
||||
Node('SameTypeRequirement', kind='Syntax',
|
||||
traits=['WithTrailingComma'],
|
||||
children=[
|
||||
Child('LeftTypeIdentifier', kind='Type'),
|
||||
Child('EqualityToken', kind='Token',
|
||||
token_choices=[
|
||||
'SpacedBinaryOperatorToken',
|
||||
'UnspacedBinaryOperatorToken',
|
||||
'PrefixOperatorToken',
|
||||
'PostfixOperatorToken',
|
||||
]),
|
||||
Child('RightTypeIdentifier', kind='Type'),
|
||||
Child('TrailingComma', kind='CommaToken',
|
||||
is_optional=True),
|
||||
]),
|
||||
|
||||
Node('GenericParameterList', kind='SyntaxCollection',
|
||||
@@ -55,17 +72,41 @@ GENERIC_NODES = [
|
||||
Child('LeftAngleBracket', kind='LeftAngleToken'),
|
||||
Child('GenericParameterList', kind='GenericParameterList',
|
||||
collection_element_name='GenericParameter'),
|
||||
Child('ObsoletedWhereClause', kind='GenericWhereClause',
|
||||
is_optional=True),
|
||||
Child('RightAngleBracket', kind='RightAngleToken'),
|
||||
]),
|
||||
|
||||
# conformance-requirement -> type-identifier : type-identifier
|
||||
Node('ConformanceRequirement', kind='Syntax',
|
||||
traits=['WithTrailingComma'],
|
||||
children=[
|
||||
Child('LeftTypeIdentifier', kind='Type'),
|
||||
Child('Colon', kind='ColonToken'),
|
||||
Child('RightTypeIdentifier', kind='Type'),
|
||||
Child('TrailingComma', kind='CommaToken',
|
||||
is_optional=True),
|
||||
]),
|
||||
|
||||
# layout-requirement -> type ':' layout-constraint
|
||||
Node('LayoutRequirement', kind='Syntax',
|
||||
children=[
|
||||
Child('LeftTypeIdentifier', kind='Type'),
|
||||
Child('Colon', kind='ColonToken'),
|
||||
Child('LayoutConstraint', kind='LayoutConstraint'),
|
||||
]),
|
||||
|
||||
# layout-constraint ->
|
||||
# identifier ('(' integer-literal (',' integer-literal)? ')')?
|
||||
Node('LayoutConstraint', kind='Syntax',
|
||||
children=[
|
||||
Child('Name', kind='IdentifierToken'),
|
||||
Child('LeftParen', kind='LeftParenToken',
|
||||
is_optional=True),
|
||||
Child('Size', kind='IntegerLiteralToken',
|
||||
is_optional=True),
|
||||
Child('Comma', kind='CommaToken',
|
||||
is_optional=True),
|
||||
Child('Alignment', kind='IntegerLiteralToken',
|
||||
is_optional=True),
|
||||
Child('RightParen', kind='RightParenToken',
|
||||
is_optional=True),
|
||||
]),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user