   }
 }
 
-protocol TF8Proto : Differentiable {
+protocol TF8_Proto : Differentiable {
   associatedtype Scalar
   @differentiable(wrt: (self, input))
   func applied(to input: Float) -> Float
 }
 
-struct TF8Struct<Scalar> : TF8Proto where Scalar : FloatingPoint & Differentiable {
+struct TF8_Struct<Scalar> : TF8_Proto where Scalar : FloatingPoint & Differentiable {
   @noDerivative let bar: Scalar
 
   @differentiable(wrt: (self, input))

  s.x *= x * s.z
  return s.x
}

) where T.AllCases : ExpressibleByStringLiteral {
  return (x, { $0 })
}
@differentiable
func weirdWrapper<T : Differentiable>(_ x: T) -> T {
  // expected-error @+2 {{expression is not differentiable}}
  // expected-note @+1 {{function call is not differentiable because generic requirements are not met: 'T : CaseIterable, T.AllCases : ExpressibleByStringLiteral'}}
  return weird(x)
}

@differentiable
func direct<T : Differentiable>(_ x: T) -> T {
