Skip to content

Commit ce91a67

Browse files
committed
---
yaml --- r: 349466 b: refs/heads/master-next c: 24abf3f h: refs/heads/master
1 parent b9739cd commit ce91a67

File tree

5 files changed

+22
-5
lines changed

5 files changed

+22
-5
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
refs/heads/master: 3574c513bbc5578dd9346b4ea9ab5995c5927bb5
3-
refs/heads/master-next: e8b1fc0732c0cf2ad64e5f50e60f06301762f1f3
3+
refs/heads/master-next: 24abf3fea763fe4b621aad4c129110e5e1b9c0b0
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea
66
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-b: 66d897bfcf64a82cb9a87f5e663d889189d06d07

branches/master-next/test/api-digester/Outputs/Cake-abi.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ cake: Protocol P3 has generic signature change from <τ_0_0 : cake.P1, τ_0_0 :
66
/* RawRepresentable Changes */
77

88
/* Removed Decls */
9-
Swift: Extension Int has been removed
109
cake: Accessor GlobalVarChangedToLet.Modify() has been removed
1110
cake: Accessor GlobalVarChangedToLet.Set() has been removed
1211
cake: Accessor RemoveSetters.Value.Modify() has been removed
@@ -18,6 +17,7 @@ cake: AssociatedType RequiementChanges.removedType has been removed
1817
cake: Class C3 has been removed
1918
cake: Constructor Somestruct2.init(_:) has been removed
2019
cake: Func C4.foo() has been removed
20+
cake: Func Int.IntEnhancer() has been removed
2121
cake: Func RequiementChanges.removedFunc() has been removed
2222
cake: Var RequiementChanges.removedVar has been removed
2323

branches/master-next/test/api-digester/Outputs/Cake.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ cake: Protocol P3 has generic signature change from <Self : cake.P1, Self : cake
66
/* RawRepresentable Changes */
77

88
/* Removed Decls */
9-
Swift: Extension Int has been removed
109
cake: Accessor GlobalVarChangedToLet.Set() has been removed
1110
cake: Accessor RemoveSetters.Value.Set() has been removed
1211
cake: Accessor RemoveSetters.subscript(_:).Set() has been removed
1312
cake: AssociatedType RequiementChanges.removedType has been removed
1413
cake: Constructor Somestruct2.init(_:) has been removed
1514
cake: Func C4.foo() has been removed
15+
cake: Func Int.IntEnhancer() has been removed
1616
cake: Func RequiementChanges.removedFunc() has been removed
1717
cake: Var RequiementChanges.removedVar has been removed
1818

branches/master-next/tools/swift-api-digester/ModuleAnalyzerNodes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,7 @@ class SDKNodeDeclType: public SDKNodeDecl {
510510
ArrayRef<SDKNode*> getConformances() const { return Conformances; }
511511
NodeVector getConformances() { return Conformances; }
512512
bool isExternal() const { return IsExternal; }
513+
bool isExtension() const { return isExternal(); }
513514
StringRef getSuperClassName() const {
514515
return SuperclassNames.empty() ? StringRef() : SuperclassNames.front();
515516
};

branches/master-next/tools/swift-api-digester/swift-api-digester.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1925,6 +1925,21 @@ void DiagnosisEmitter::diagnosis(NodePtr LeftRoot, NodePtr RightRoot,
19251925
SDKNode::postorderVisit(LeftRoot, Emitter);
19261926
}
19271927

1928+
static bool diagnoseRemovedExtensionMembers(const SDKNode *Node) {
1929+
// If the removed decl is an extension, diagnose each member as being removed rather than
1930+
// the extension itself has been removed.
1931+
if (auto *DT= dyn_cast<SDKNodeDeclType>(Node)) {
1932+
if (DT->isExtension()) {
1933+
for (auto *C: DT->getChildren()) {
1934+
auto *MD = cast<SDKNodeDecl>(C);
1935+
MD->emitDiag(diag::removed_decl, MD->isDeprecated());
1936+
}
1937+
return true;
1938+
}
1939+
}
1940+
return false;
1941+
}
1942+
19281943
void DiagnosisEmitter::handle(const SDKNodeDecl *Node, NodeAnnotation Anno) {
19291944
assert(Node->isAnnotatedAs(Anno));
19301945
auto &Ctx = Node->getSDKContext();
@@ -1992,8 +2007,9 @@ void DiagnosisEmitter::handle(const SDKNodeDecl *Node, NodeAnnotation Anno) {
19922007
return;
19932008
}
19942009
}
1995-
1996-
Node->emitDiag(diag::removed_decl, Node->isDeprecated());
2010+
bool handled = diagnoseRemovedExtensionMembers(Node);
2011+
if (!handled)
2012+
Node->emitDiag(diag::removed_decl, Node->isDeprecated());
19972013
return;
19982014
}
19992015
case NodeAnnotation::Rename: {

0 commit comments

Comments
 (0)