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", "DiffItemKind": "CommonDiffItem",
"NodeKind": "TypeDecl", "NodeKind": "TypeDecl",
@@ -161,6 +172,14 @@
"NewPrintedName": "oldMember", "NewPrintedName": "oldMember",
"NewTypeName": "OldType" "NewTypeName": "OldType"
}, },
{
"DiffItemKind": "TypeMemberDiffItem",
"Usr": "c:@globalAttributeName",
"OldPrintedName": "globalAttributeName",
"OldTypeName": "AnimalAttributeName",
"NewPrintedName": "globalAttributeName",
"NewTypeName": ""
},
{ {
"DiffItemKind": "TypeMemberDiffItem", "DiffItemKind": "TypeMemberDiffItem",
"Usr": "c:objc(pl)TypeWithMethod(cm)plusPrint", "Usr": "c:objc(pl)TypeWithMethod(cm)plusPrint",

View File

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