swift-api-digester: teach the tool to detect member variables change to global ones. rdar://41658300

This commit is contained in:
Xi Ge
2018-06-29 16:28:19 -07:00
parent 1d6ec73fec
commit 967beefffc
2 changed files with 27 additions and 1 deletions

View File

@@ -1,4 +1,15 @@
[
{
"DiffItemKind": "CommonDiffItem",
"NodeKind": "Var",
"NodeAnnotation": "RevertSimpleStringRepresentableUpdate",
"ChildIndex": "0",
"LeftUsr": "c:@globalAttributeName",
"LeftComment": "AnimalAttributeName",
"RightUsr": "",
"RightComment": "String",
"ModuleName": "APINotesTest"
},
{
"DiffItemKind": "CommonDiffItem",
"NodeKind": "TypeDecl",
@@ -161,6 +172,14 @@
"NewPrintedName": "oldMember",
"NewTypeName": "OldType"
},
{
"DiffItemKind": "TypeMemberDiffItem",
"Usr": "c:@globalAttributeName",
"OldPrintedName": "globalAttributeName",
"OldTypeName": "AnimalAttributeName",
"NewPrintedName": "globalAttributeName",
"NewTypeName": ""
},
{
"DiffItemKind": "TypeMemberDiffItem",
"Usr": "c:objc(pl)TypeWithMethod(cm)plusPrint",

View File

@@ -2543,6 +2543,12 @@ class TypeMemberDiffFinder : public SDKNodeVisitor {
if (nodeParent->getKind() == SDKNodeKind::DeclType &&
diffParent->getKind() == SDKNodeKind::Root)
TypeMemberDiffs.insert({diffNode, node});
// Move from a member variable to global variable.
if (nodeParent->getKind() == SDKNodeKind::Root &&
diffParent->getKind() == SDKNodeKind::DeclType)
TypeMemberDiffs.insert({diffNode, node});
// Move from a member variable to another member variable
if (nodeParent->getKind() == SDKNodeKind::DeclType &&
diffParent->getKind() == SDKNodeKind::DeclType &&
@@ -3757,7 +3763,8 @@ static void findTypeMemberDiffs(NodePtr leftSDKRoot, NodePtr rightSDKRoot,
// index, old printed name)
TypeMemberDiffItem item = {
right->getAs<SDKNodeDecl>()->getUsr(),
rightParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),
rightParent->getKind() == SDKNodeKind::Root ?
StringRef() : rightParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),
right->getPrintedName(), findSelfIndex(right), None,
leftParent->getKind() == SDKNodeKind::Root ?
StringRef() : leftParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),