// RUN: not --crash %target-swift-emit-ir -primary-file %s
// REQUIRES: asserts

// TF-756: IRGen crash for `witness_method` instruction generated by the
// differentiation transform.

struct Tensor<Scalar> {}
extension Tensor: Differentiable where Scalar == Float {}

extension Tensor where Scalar == Float {
  // Arbitrary `@differentiable` operation with >1 parameter, so that index
  // subset thunk may be generated.
  @differentiable
  static func + (_ lhs: Tensor, _ rhs: Tensor) -> Tensor {
    return lhs
  }

  @derivative(of: +)
  static func _vjpAdd(lhs: Tensor, rhs: Tensor)
    -> (value: Tensor, pullback: (TangentVector) -> (TangentVector, TangentVector)) {
    return (lhs + rhs, { v in (v, v) })
  }
}

@differentiable
func TF_756(input: Tensor<Float>) -> Tensor<Float> {
  let other = Tensor<Float>()
  return other + input
}

// Assertion failed: (!type->hasArchetype() && !type->hasTypeParameter()), function getAddrOfTypeMetadataAccessFunction, file /Users/danielzheng/swift-merge/swift/lib/IRGen/GenDecl.cpp, line 3352.
// Stack dump:
// ...
// 1.	Swift version 5.1.1-dev (Swift 3943c1e36b)
// 2.	While emitting IR SIL function "@AD__$s4main6TensorVAASfRszlE13TangentVectorVySf_GA2FIegyyd_A2FIegyd_TR_src_0_wrt_1_differential_index_subset_thunk".
//  for expression at [/Users/danielzheng/swift-merge/swift/test/AutoDiff/compiler_crashers/tf756-irgen-witness-method-archetype.swift:27:16 - line:27:16] RangeText=""
