mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
45 lines
1.5 KiB
Swift
45 lines
1.5 KiB
Swift
// RUN: %target-typecheck-verify-swift
|
|
|
|
enum E : String {
|
|
case foo = "foo"
|
|
case bar = "bar" // expected-note {{did you mean 'bar'?}}
|
|
}
|
|
func fe(_: E) {}
|
|
func fe(_: Int) {}
|
|
func fe(_: Int, _: E) {}
|
|
func fe(_: Int, _: Int) {}
|
|
|
|
fe(E.baz) // expected-error {{type 'E' has no member 'baz'}}
|
|
fe(.baz) // expected-error {{reference to member 'baz' cannot be resolved without a contextual type}}
|
|
|
|
// FIXME: maybe complain about .nope also?
|
|
fe(.nope, .nyet) // expected-error {{reference to member 'nyet' cannot be resolved without a contextual type}}
|
|
|
|
func fg<T>(_ f: (T) -> T) -> Void {} // expected-note {{in call to function 'fg'}}
|
|
fg({x in x}) // expected-error {{generic parameter 'T' could not be inferred}}
|
|
|
|
|
|
// FIXME: Both f & g should complain about ambiguity of arg1, but in both cases the generic member
|
|
// never gets into the list of candidates in the first place.
|
|
struct S {
|
|
func f<T>(_ i: (T) -> T, _ j: Int) -> Void {}
|
|
func f(_ d: (Double) -> Double) -> Void {}
|
|
func test() -> Void {
|
|
f({x in x}, 2) // expected-error {{extra argument in call}}
|
|
}
|
|
|
|
func g<T>(_ a: T, _ b: Int) -> Void {}
|
|
func g(_ a: String) -> Void {}
|
|
func test2() -> Void {
|
|
g(.notAThing, 7) // expected-error {{extra argument in call}}
|
|
}
|
|
|
|
func h(_ a: Int, _ b: Int) -> Void {}
|
|
func h(_ a: String) -> Void {}
|
|
func test3() -> Void {
|
|
h(.notAThing, 3) // expected-error {{type 'Int' has no member 'notAThing'}}
|
|
h(.notAThing) // expected-error {{type 'String' has no member 'notAThing'}}
|
|
}
|
|
}
|
|
|