File tree Expand file tree Collapse file tree 3 files changed +14
-3
lines changed
lib/ASTGen/Sources/ASTGen Expand file tree Collapse file tree 3 files changed +14
-3
lines changed Original file line number Diff line number Diff line change @@ -603,7 +603,7 @@ extension ASTGenVisitor {
603
603
switch text {
604
604
case " reverse " : return . reverse
605
605
case " wrt " , " withRespectTo " : return . normal
606
- case " _liner " : return . linear
606
+ case " _linear " : return . linear
607
607
case " _forward " : return . forward
608
608
default : return . nonDifferentiable
609
609
}
Original file line number Diff line number Diff line change @@ -206,10 +206,17 @@ extension ASTGenVisitor {
206
206
differentiabilityLoc = nil
207
207
}
208
208
209
- // Only 'reverse' is supported today.
210
- guard differentiability == . reverse else {
209
+ // Only 'reverse' is formally supported today. '_linear' works for testing
210
+ // purposes. '_forward' is rejected.
211
+ switch differentiability {
212
+ case . normal, . nonDifferentiable:
211
213
// TODO: Diagnose
212
214
fatalError ( " Only @differentiable(reverse) is supported " )
215
+ case . forward:
216
+ // TODO: Diagnose
217
+ fatalError ( " Only @differentiable(reverse) is supported " )
218
+ case . reverse, . linear:
219
+ break
213
220
}
214
221
215
222
return . createParsed(
Original file line number Diff line number Diff line change @@ -17,6 +17,10 @@ func testDifferentiableTypeAttr(_ fn: @escaping @differentiable(reverse) (Float)
17
17
-> @differentiable ( reverse) ( Float ) -> Float {
18
18
return fn
19
19
}
20
+ func testDifferentiableTypeAttrLinear( _ fn: @escaping @differentiable ( _linear) ( Float ) -> Float )
21
+ -> @differentiable ( _linear) ( Float ) -> Float {
22
+ return fn
23
+ }
20
24
21
25
@differentiable ( reverse)
22
26
func testDifferentiableSimple( _ x: Float ) -> Float { return x * x }
You can’t perform that action at this time.
0 commit comments