Skip to content

Commit 967beef

Browse files
committed
swift-api-digester: teach the tool to detect member variables change to global ones. rdar://41658300
1 parent 1d6ec73 commit 967beef

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

test/api-digester/Outputs/apinotes-migrator-gen-revert.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
[
2+
{
3+
"DiffItemKind": "CommonDiffItem",
4+
"NodeKind": "Var",
5+
"NodeAnnotation": "RevertSimpleStringRepresentableUpdate",
6+
"ChildIndex": "0",
7+
"LeftUsr": "c:@globalAttributeName",
8+
"LeftComment": "AnimalAttributeName",
9+
"RightUsr": "",
10+
"RightComment": "String",
11+
"ModuleName": "APINotesTest"
12+
},
213
{
314
"DiffItemKind": "CommonDiffItem",
415
"NodeKind": "TypeDecl",
@@ -161,6 +172,14 @@
161172
"NewPrintedName": "oldMember",
162173
"NewTypeName": "OldType"
163174
},
175+
{
176+
"DiffItemKind": "TypeMemberDiffItem",
177+
"Usr": "c:@globalAttributeName",
178+
"OldPrintedName": "globalAttributeName",
179+
"OldTypeName": "AnimalAttributeName",
180+
"NewPrintedName": "globalAttributeName",
181+
"NewTypeName": ""
182+
},
164183
{
165184
"DiffItemKind": "TypeMemberDiffItem",
166185
"Usr": "c:objc(pl)TypeWithMethod(cm)plusPrint",

tools/swift-api-digester/swift-api-digester.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2543,6 +2543,12 @@ class TypeMemberDiffFinder : public SDKNodeVisitor {
25432543
if (nodeParent->getKind() == SDKNodeKind::DeclType &&
25442544
diffParent->getKind() == SDKNodeKind::Root)
25452545
TypeMemberDiffs.insert({diffNode, node});
2546+
2547+
// Move from a member variable to global variable.
2548+
if (nodeParent->getKind() == SDKNodeKind::Root &&
2549+
diffParent->getKind() == SDKNodeKind::DeclType)
2550+
TypeMemberDiffs.insert({diffNode, node});
2551+
25462552
// Move from a member variable to another member variable
25472553
if (nodeParent->getKind() == SDKNodeKind::DeclType &&
25482554
diffParent->getKind() == SDKNodeKind::DeclType &&
@@ -3757,7 +3763,8 @@ static void findTypeMemberDiffs(NodePtr leftSDKRoot, NodePtr rightSDKRoot,
37573763
// index, old printed name)
37583764
TypeMemberDiffItem item = {
37593765
right->getAs<SDKNodeDecl>()->getUsr(),
3760-
rightParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),
3766+
rightParent->getKind() == SDKNodeKind::Root ?
3767+
StringRef() : rightParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),
37613768
right->getPrintedName(), findSelfIndex(right), None,
37623769
leftParent->getKind() == SDKNodeKind::Root ?
37633770
StringRef() : leftParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),

0 commit comments

Comments
 (0)