Skip to content

Commit 2ebab52

Browse files
committed
[FixCode] Apply coercion fixits on return statement and initialization as well. rdar://27891589 rdar://27891426
We saw manual migration is necessary on these cases to add 'as Type'. This patch starts to issue compiler fixits on return statement and initialization just like in other type-mismatch cases.
1 parent 3357842 commit 2ebab52

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

lib/Sema/CSDiag.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4040,6 +4040,8 @@ bool FailureDiagnosis::diagnoseContextualConversionError() {
40404040
case CTP_DictionaryKey:
40414041
case CTP_DictionaryValue:
40424042
case CTP_AssignSource:
4043+
case CTP_Initialization:
4044+
case CTP_ReturnStmt:
40434045
tryRawRepresentableFixIts(diag, CS, exprType, contextualType,
40444046
KnownProtocolKind::ExpressibleByIntegerLiteral,
40454047
expr) ||

test/FixCode/fixits-apply-objc.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,11 @@ func foo(an : Any) {
2121
let a3 : AnyObject!
2222
a3 = an
2323
}
24+
25+
func foo1(_ an : Any) {
26+
let obj: AnyObject = an
27+
}
28+
29+
func foo2(_ messageData: Any?) -> AnyObject? {
30+
return messageData
31+
}

test/FixCode/fixits-apply-objc.swift.result

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,11 @@ func foo(an : Any) {
2121
let a3 : AnyObject!
2222
a3 = an as AnyObject!
2323
}
24+
25+
func foo1(_ an : Any) {
26+
let obj: AnyObject = an as AnyObject
27+
}
28+
29+
func foo2(_ messageData: Any?) -> AnyObject? {
30+
return messageData as AnyObject?
31+
}

test/FixCode/fixits-apply.swift.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ struct MyMask : OptionSet {
2828
}
2929

3030
func supported() -> MyMask {
31-
return MyMask.Bingo
31+
return MyMask(rawValue: UInt(MyMask.Bingo))
3232
}
3333

3434
struct MyEventMask2 : OptionSet {

0 commit comments

Comments
 (0)