Skip to content

Commit c104632

Browse files
authored
Merge pull request #16011 from nkcsgexi/att-assign-migration
2 parents 577b272 + 5db971d commit c104632

File tree

5 files changed

+40
-8
lines changed

5 files changed

+40
-8
lines changed

lib/Migrator/APIDiffMigratorPass.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -686,16 +686,15 @@ struct APIDiffMigratorPass : public ASTMigratorPass, public SourceEntityWalker {
686686
return false;
687687
for (auto *Item: getRelatedDiffItems(RD)) {
688688
if (auto *CI = dyn_cast<CommonDiffItem>(Item)) {
689-
switch(CI->DiffKind) {
690-
case NodeAnnotation::SimpleStringRepresentableUpdate: {
691-
Editor.insertBefore(ASE->getSrc()->getStartLoc(),
692-
(Twine(CI->RightComment) + "(rawValue: ").str());
689+
if (CI->isStringRepresentableChange() &&
690+
CI->NodeKind == SDKNodeKind::DeclVar) {
691+
SmallString<256> Buffer;
692+
auto Func = insertHelperFunction(CI->DiffKind, CI->RightComment,
693+
Buffer, true);
694+
Editor.insert(ASE->getSrc()->getStartLoc(), (Twine(Func) + "(").str());
693695
Editor.insertAfterToken(ASE->getSrc()->getEndLoc(), ")");
694696
return true;
695697
}
696-
default:
697-
continue;
698-
}
699698
}
700699
}
701700
return false;

test/Migrator/Inputs/Cities.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public func globalCityPointerTaker(_ c : UnsafePointer<Cities>, _ p : Int, _ q:
3636

3737
public class Container {
3838
public var Value: String = ""
39+
public var attrDict: [String: Any] = [:]
40+
public var attrArr: [String] = []
3941
public func addingAttributes(_ input: [String: Any]) {}
4042
public func adding(attributes: [String: Any]) {}
4143
public func adding(optionalAttributes: [String: Any]?) {}

test/Migrator/Inputs/string-representable.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,4 +164,26 @@
164164
"RightComment": "SimpleAttribute",
165165
"ModuleName": "Cities"
166166
},
167+
{
168+
"DiffItemKind": "CommonDiffItem",
169+
"NodeKind": "Var",
170+
"NodeAnnotation": "DictionaryKeyUpdate",
171+
"ChildIndex": "0",
172+
"LeftUsr": "s:6Cities9ContainerC8attrDicts10DictionaryVySSypGvp",
173+
"LeftComment": "",
174+
"RightUsr": "",
175+
"RightComment": "SimpleAttribute",
176+
"ModuleName": "Cities"
177+
},
178+
{
179+
"DiffItemKind": "CommonDiffItem",
180+
"NodeKind": "Var",
181+
"NodeAnnotation": "ArrayMemberUpdate",
182+
"ChildIndex": "0",
183+
"LeftUsr": "s:6Cities9ContainerC7attrArrSaySSGvp",
184+
"LeftComment": "",
185+
"RightUsr": "",
186+
"RightComment": "SimpleAttribute",
187+
"ModuleName": "Cities"
188+
},
167189
]

test/Migrator/string-representable.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,7 @@ func foo(_ c: Container) -> String {
2727
c.addingAttributes(c.getAttrDictionary())
2828
c.adding(optionalAttributes: c.getAttrDictionary())
2929

30+
c.attrDict = ["a": "b", "a": "b", "a": "b"]
31+
c.attrArr = ["key1", "key2"]
3032
return c.Value
3133
}

test/Migrator/string-representable.swift.expected

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import Cities
88

99
func foo(_ c: Container) -> String {
10-
c.Value = NewAttribute(rawValue: "")
10+
c.Value = convertToNewAttribute("")
1111
c.addingAttributes(convertToCitiesContainerAttributeDictionary(["a": "b", "a": "b", "a": "b"]))
1212
c.addingAttributes(convertToCitiesContainerAttributeDictionary(["a": "b", "a": "b", "a": "b"]))
1313
c.adding(attributes: convertToSimpleAttributeDictionary(["a": 1, "a": 2, "a": 3]))
@@ -27,9 +27,16 @@ func foo(_ c: Container) -> String {
2727
c.addingAttributes(convertToCitiesContainerAttributeDictionary(convertFromSimpleAttributeDictionary(c.getAttrDictionary())))
2828
c.adding(optionalAttributes: convertToOptionalSimpleAttributeDictionary(convertFromSimpleAttributeDictionary(c.getAttrDictionary())))
2929

30+
c.attrDict = convertToSimpleAttributeDictionary(["a": "b", "a": "b", "a": "b"])
31+
c.attrArr = convertToSimpleAttributeArray(["key1", "key2"])
3032
return c.Value.rawValue
3133
}
3234

35+
// Helper function inserted by Swift 4.2 migrator.
36+
fileprivate func convertToNewAttribute(_ input: String) -> NewAttribute {
37+
return NewAttribute(rawValue: input)
38+
}
39+
3340
// Helper function inserted by Swift 4.2 migrator.
3441
fileprivate func convertToCitiesContainerAttributeDictionary(_ input: [String: Any]) -> [Cities.Container.Attribute: Any] {
3542
return Dictionary(uniqueKeysWithValues: input.map { key, value in (Cities.Container.Attribute(rawValue: key), value)})

0 commit comments

Comments
 (0)