Skip to content

Commit 98aae46

Browse files
authored
Merge pull request #9167 from bitjammer/rdar-30928902-substring-string-migrator-tests
[Migrator] Add Substring -> String conversion fix-it tests
2 parents 8875aef + 39a95f2 commit 98aae46

6 files changed

+191
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
let s = "foo"
2+
let ss = s[s.startIndex..<s.endIndex]
3+
4+
// CTP_ReturnStmt
5+
func returnStringButWantedSubstring() -> Substring {
6+
return s
7+
}
8+
9+
// CTP_DefaultParameter
10+
// Never do this.
11+
func defaultArgIsSubstring(ss: Substring = s) {}
12+
13+
// CTP_CalleeResult
14+
func returnString() -> String {
15+
return s
16+
}
17+
let s2: Substring = returnString()
18+
19+
// CTP_CallArgument
20+
func takeString(s: String) {}
21+
func takeSubstring(ss: Substring) {}
22+
23+
takeSubstring(ss)
24+
takeSubstring(s)
25+
26+
// CTP_ClosureResult
27+
[1,2,3].map { (x: Int) -> Substring in
28+
return s
29+
}
30+
31+
// CTP_ArrayElement
32+
let a: [Substring] = [ s ]
33+
34+
// CTP_DictionaryKey
35+
// CTP_DictionaryValue
36+
let d: [Substring : Substring] = [
37+
"CTP_DictionaryValue" : s,
38+
s : "CTP_DictionaryKey",
39+
]
40+
41+
// CTP_CoerceOperand
42+
let s3: Substring = s as Substring
43+
44+
// CTP_AssignSource
45+
let s4: Substring = s
46+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
let s = "foo"
2+
let ss = s[s.startIndex..<s.endIndex]
3+
4+
// CTP_ReturnStmt
5+
6+
func returnSubstringButWantedString() -> String {
7+
return ss
8+
}
9+
10+
// CTP_DefaultParameter
11+
12+
// Never do this.
13+
func defaultArgIsString(s: String = ss) {}
14+
15+
// CTP_CalleeResult
16+
func returnSubstring() -> Substring {
17+
return ss
18+
}
19+
let s2: String = returnSubstring()
20+
21+
// CTP_CallArgument
22+
func takeString(_ s: String) {}
23+
24+
takeString(s)
25+
takeString(ss)
26+
27+
// CTP_ClosureResult
28+
[1,2,3].map { (x: Int) -> String in
29+
return ss
30+
}
31+
32+
// CTP_ArrayElement
33+
let a: [String] = [ ss ]
34+
35+
// CTP_DictionaryKey
36+
// CTP_DictionaryValue
37+
let d: [String : String] = [
38+
"CTP_DictionaryValue" : ss,
39+
ss : "CTP_DictionaryKey",
40+
]
41+
42+
// CTP_CoerceOperand
43+
let s3: String = ss as String
44+
45+
// CTP_AssignSource
46+
let s4: String = ss
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %S/Inputs/string_to_substring_conversion.swift -emit-migrated-file-path %t/string_to_substring_conversion.swift.result -swift-version 4
2+
// RUN: diff -u %S/string_conversion.swift.expected %t/string_to_substring_conversion.swift.result
3+
// XFAIL: *
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
let s = "foo"
2+
let ss = s[s.startIndex..<s.endIndex]
3+
4+
// CTP_ReturnStmt
5+
func returnStringButWantedSubstring() -> Substring {
6+
return s[]
7+
}
8+
9+
// CTP_DefaultParameter
10+
// Never do this.
11+
func defaultArgIsSubstring(ss: Substring = s[]) {}
12+
13+
// CTP_CalleeResult
14+
func returnString() -> String {
15+
return s[]
16+
}
17+
let s2: Substring = returnString()[]
18+
19+
// CTP_CallArgument
20+
func takeString(s: String) {}
21+
func takeSubstring(ss: Substring) {}
22+
23+
takeSubstring(ss)
24+
takeSubstring(s[])
25+
26+
// CTP_ClosureResult
27+
[1,2,3].map { (x: Int) -> Substring in
28+
return s[]
29+
}
30+
31+
// CTP_ArrayElement
32+
let a: [Substring] = [ s[] ]
33+
34+
// CTP_DictionaryKey
35+
// CTP_DictionaryValue
36+
let d: [Substring : Substring] = [
37+
"CTP_DictionaryValue" : s[],
38+
s[] : "CTP_DictionaryKey",
39+
]
40+
41+
// CTP_CoerceOperand
42+
let s3: Substring = s[] as Substring
43+
44+
// CTP_AssignSource
45+
let s4: Substring = s[]
46+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %S/Inputs/substring_to_string_conversion.swift -emit-migrated-file-path %t/substring_to_string_conversion.swift.result -swift-version 4
2+
// RUN: diff -u %S/substring_to_string_conversion.swift.expected %t/substring_to_string_conversion.swift.result
3+
// XFAIL: *
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
let s = "foo"
2+
let ss = s[s.startIndex..<s.endIndex]
3+
4+
// CTP_ReturnStmt
5+
6+
func returnSubstringButWantedString() -> String {
7+
return String(ss)
8+
}
9+
10+
// CTP_DefaultParameter
11+
12+
// Never do this.
13+
func defaultArgIsString(s: String = String(ss)) {}
14+
15+
// CTP_CalleeResult
16+
func returnSubstring() -> Substring {
17+
return String(ss)
18+
}
19+
let s2: String = String(returnSubstring())
20+
21+
// CTP_CallArgument
22+
func takeString(s: String) {}
23+
func takeSubstring(ss: Substring) {}
24+
25+
takeString(string)
26+
takeString(String(substring))
27+
28+
// CTP_ClosureResult
29+
[1,2,3].map { (x: Int) -> String in
30+
return String(ss)
31+
}
32+
33+
// CTP_ArrayElement
34+
let a: [String] = [ String(ss) ]
35+
36+
// CTP_DictionaryKey
37+
// CTP_DictionaryValue
38+
let d: [String : String] = [
39+
"CTP_DictionaryValue" : String(ss),
40+
String(ss) : "CTP_DictionaryKey",
41+
]
42+
43+
// CTP_CoerceOperand
44+
let s3: String = String(ss) as String
45+
46+
// CTP_AssignSource
47+
let s4: String = String(ss)

0 commit comments

Comments
 (0)