Skip to content

Commit 3ff86f2

Browse files
authored
Fix syntax support for call func. (#24094)
Unblocks usage of `call func(_ input: Input) -> Output` in tensorflow/swift-apis.
1 parent 1fdbae8 commit 3ff86f2

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

test/Syntax/Outputs/round_trip_parse_gen.swift.withkinds

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,4 +591,9 @@ func negateDerivative<FunctionSignature><ParameterClause>(<FunctionParameter>_ x
591591
func bazDerivative<FunctionSignature><ParameterClause>(<FunctionParameter>_ x: <SimpleTypeIdentifier>Float</SimpleTypeIdentifier>, </FunctionParameter><FunctionParameter>y: <SimpleTypeIdentifier>Float</SimpleTypeIdentifier></FunctionParameter>)</ParameterClause><ReturnClause>
592592
-> <TupleType>(<TupleTypeElement>value: <SimpleTypeIdentifier>Float</SimpleTypeIdentifier>, </TupleTypeElement><TupleTypeElement>pullback: <FunctionType>(<TupleTypeElement><SimpleTypeIdentifier>Float</SimpleTypeIdentifier></TupleTypeElement>) -> <TupleType>(<TupleTypeElement><SimpleTypeIdentifier>Float</SimpleTypeIdentifier>, </TupleTypeElement><TupleTypeElement><SimpleTypeIdentifier>Float</SimpleTypeIdentifier></TupleTypeElement>)</TupleType></FunctionType></TupleTypeElement>) </TupleType></ReturnClause></FunctionSignature><CodeBlock>{<ReturnStmt>
593593
return <TupleExpr>(<TupleElement><IdentifierExpr>x</IdentifierExpr>, </TupleElement><TupleElement><ClosureExpr>{ <ClosureSignature><ClosureParam>v </ClosureParam>in </ClosureSignature><IdentifierExpr>v </IdentifierExpr>}</ClosureExpr></TupleElement>)</TupleExpr></ReturnStmt>
594-
}</CodeBlock></FunctionDecl>
594+
}</CodeBlock></FunctionDecl><ProtocolDecl>
595+
596+
protocol Layer <TypeInheritanceClause>: <InheritedType><SimpleTypeIdentifier>Differentiable </SimpleTypeIdentifier></InheritedType></TypeInheritanceClause><MemberDeclBlock>{<MemberDeclListItem><CallDecl><Attribute>
597+
@differentiable</Attribute>
598+
call func<FunctionSignature><ParameterClause>(<FunctionParameter>_ input: <SimpleTypeIdentifier>Float</SimpleTypeIdentifier></FunctionParameter>) </ParameterClause><ReturnClause>-> <SimpleTypeIdentifier>Float</SimpleTypeIdentifier></ReturnClause></FunctionSignature></CallDecl></MemberDeclListItem>
599+
}</MemberDeclBlock></ProtocolDecl>

test/Syntax/round_trip_parse_gen.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,3 +592,8 @@ func bazDerivative(_ x: Float, y: Float)
592592
-> (value: Float, pullback: (Float) -> (Float, Float)) {
593593
return (x, { v in v })
594594
}
595+
596+
protocol Layer : Differentiable {
597+
@differentiable
598+
call func(_ input: Float) -> Float
599+
}

utils/gyb_syntax_support/DeclNodes.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
Child('Modifiers', kind='ModifierList',
460460
is_optional=True),
461461
Child('CallKeyword', kind='CallToken'),
462+
Child('FuncKeyword', kind='FuncToken'),
462463
Child('GenericParameterClause', kind='GenericParameterClause',
463464
is_optional=True),
464465
Child('Signature', kind='FunctionSignature'),

0 commit comments

Comments
 (0)