Skip to content

Commit 24abf3f

Browse files
committed
Merge remote-tracking branch 'origin/master' into master-rebranch
2 parents e8b1fc0 + e066ab3 commit 24abf3f

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

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

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

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
};

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)