// RUN: %target-typecheck-verify-swift extension Collection where Element: Numeric { var v: Element { return self.reduce(0, +) } } struct R {} func ==(lhs: R, rhs: T?) {} func foo(_ e: @autoclosure @escaping () throws -> T?) -> R { return R() } func bar(_ e: T?) -> R { return R() } foo([Double(1.0)].v) == Double(1.0) bar([Double(1.0)].v) == Double(1.0)