mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[QoI] Improve diagnostics for unresolved member with incorrect arguments
`FailureDiagnosis::visitUnresolvedMemberExpr` tries to use the same logic as `diagnoseSingleCandidateFailures` so instead of doing that let's remove some of the special handling and use `diagnoseSingleCandidateFailures` directly instead, which improves label diagnostics and handles more erroneous cases as well. Resolves: rdar://problem/31898542
This commit is contained in:
@@ -429,7 +429,7 @@ let _: [Color] = [1,2].map { _ in .Unknown("") }// expected-error {{missing argu
|
||||
let _: (Int) -> (Int, Color) = { ($0, .Unknown("")) } // expected-error {{missing argument label 'description:' in call}} {{48-48=description: }}
|
||||
let _: Color = .Unknown("") // expected-error {{missing argument label 'description:' in call}} {{25-25=description: }}
|
||||
let _: Color = .Unknown // expected-error {{member 'Unknown' expects argument of type '(description: String)'}}
|
||||
let _: Color = .Unknown(42) // expected-error {{cannot convert value of type 'Int' to expected argument type 'String'}}
|
||||
let _: Color = .Unknown(42) // expected-error {{missing argument label 'description:' in call}}
|
||||
let _ : Color = .rainbow(42) // expected-error {{argument passed to call that takes no arguments}}
|
||||
|
||||
let _ : (Int, Float) = (42.0, 12) // expected-error {{cannot convert value of type 'Double' to specified type 'Int'}}
|
||||
@@ -441,10 +441,11 @@ let _: Color = .overload(1.0) // expected-error {{ambiguous reference to member
|
||||
// expected-note @-1 {{overloads for 'overload' exist with these partially matching parameter lists: (a: Int), (b: Int)}}
|
||||
let _: Color = .overload(1) // expected-error {{ambiguous reference to member 'overload'}}
|
||||
// expected-note @-1 {{overloads for 'overload' exist with these partially matching parameter lists: (a: Int), (b: Int)}}
|
||||
let _: Color = .frob(1.0, &i) // expected-error {{cannot convert value of type 'Double' to expected argument type 'Int'}}
|
||||
let _: Color = .frob(1, i) // expected-error {{passing value of type 'Int' to an inout parameter requires explicit '&'}}
|
||||
let _: Color = .frob(1.0, &i) // expected-error {{missing argument label 'b:' in call}}
|
||||
let _: Color = .frob(1.0, b: &i) // expected-error {{cannot convert value of type 'Double' to expected argument type 'Int'}}
|
||||
let _: Color = .frob(1, i) // expected-error {{missing argument label 'b:' in call}}
|
||||
let _: Color = .frob(1, b: i) // expected-error {{passing value of type 'Int' to an inout parameter requires explicit '&'}}
|
||||
let _: Color = .frob(1, &d) // expected-error {{cannot convert value of type 'Double' to expected argument type 'Int'}}
|
||||
let _: Color = .frob(1, &d) // expected-error {{missing argument label 'b:' in call}}
|
||||
let _: Color = .frob(1, b: &d) // expected-error {{cannot convert value of type 'Double' to expected argument type 'Int'}}
|
||||
var someColor : Color = .red // expected-error {{enum type 'Color' has no case 'red'; did you mean 'Red'}}
|
||||
someColor = .red // expected-error {{enum type 'Color' has no case 'red'; did you mean 'Red'}}
|
||||
|
||||
Reference in New Issue
Block a user