mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
fix symbol graph bug where enabling extension block format caused inheritsFrom relationships of extended symbols to be emitted in extension graphs (#61951)
This commit is contained in:
@@ -377,7 +377,7 @@ void SymbolGraph::recordConformanceSynthesizedMemberRelationships(Symbol S) {
|
|||||||
|
|
||||||
void
|
void
|
||||||
SymbolGraph::recordInheritanceRelationships(Symbol S) {
|
SymbolGraph::recordInheritanceRelationships(Symbol S) {
|
||||||
const auto VD = S.getSymbolDecl();
|
const auto VD = S.getLocalSymbolDecl();
|
||||||
if (const auto *NTD = dyn_cast<NominalTypeDecl>(VD)) {
|
if (const auto *NTD = dyn_cast<NominalTypeDecl>(VD)) {
|
||||||
for (const auto &InheritanceLoc : NTD->getInherited()) {
|
for (const auto &InheritanceLoc : NTD->getInherited()) {
|
||||||
auto Ty = InheritanceLoc.getType();
|
auto Ty = InheritanceLoc.getType();
|
||||||
@@ -390,7 +390,7 @@ SymbolGraph::recordInheritanceRelationships(Symbol S) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
recordEdge(Symbol(this, VD, nullptr),
|
recordEdge(Symbol(this, NTD, nullptr),
|
||||||
Symbol(this, InheritedTypeDecl, nullptr),
|
Symbol(this, InheritedTypeDecl, nullptr),
|
||||||
RelationshipKind::InheritsFrom());
|
RelationshipKind::InheritsFrom());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
// RUN: %empty-directory(%t)
|
|
||||||
// RUN: %target-build-swift %s -module-name InheritsFrom -emit-module -emit-module-path %t/
|
|
||||||
// RUN: %target-swift-symbolgraph-extract -module-name InheritsFrom -I %t -pretty-print -output-dir %t
|
|
||||||
// RUN: %FileCheck %s --input-file %t/InheritsFrom.symbols.json
|
|
||||||
|
|
||||||
public class Base {}
|
|
||||||
public class Derived: Base {}
|
|
||||||
|
|
||||||
// CHECK: "kind": "inheritsFrom"
|
|
||||||
// CHECK-NEXT: "source": "s:12InheritsFrom7DerivedC"
|
|
||||||
// CHECK-NEXT: "target": "s:12InheritsFrom4BaseC"
|
|
||||||
11
test/SymbolGraph/Relationships/InheritsFrom/Basic.swift
Normal file
11
test/SymbolGraph/Relationships/InheritsFrom/Basic.swift
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
// RUN: %empty-directory(%t)
|
||||||
|
// RUN: %target-build-swift %s -module-name Basic -emit-module -emit-module-path %t/
|
||||||
|
// RUN: %target-swift-symbolgraph-extract -module-name Basic -I %t -pretty-print -output-dir %t
|
||||||
|
// RUN: %FileCheck %s --input-file %t/Basic.symbols.json
|
||||||
|
|
||||||
|
public class Base {}
|
||||||
|
public class Derived: Base {}
|
||||||
|
|
||||||
|
// CHECK: "kind": "inheritsFrom"
|
||||||
|
// CHECK-NEXT: "source": "s:5Basic7DerivedC"
|
||||||
|
// CHECK-NEXT: "target": "s:5Basic4BaseC"
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
// RUN: %empty-directory(%t)
|
||||||
|
// RUN: %target-build-swift %S/Inputs/Base.swift -module-name Base -emit-module -emit-module-path %t/
|
||||||
|
// RUN: %target-build-swift %s -module-name ExtensionBlockSymbol -emit-module -emit-module-path %t/ -I %t
|
||||||
|
// RUN: %target-swift-symbolgraph-extract -module-name ExtensionBlockSymbol -I %t -pretty-print -output-dir %t -emit-extension-block-symbols
|
||||||
|
// RUN: %target-swift-symbolgraph-extract -module-name Base -I %t -pretty-print -output-dir %t -emit-extension-block-symbols
|
||||||
|
// RUN: %FileCheck %s --input-file %t/Base.symbols.json --check-prefix BASE
|
||||||
|
// RUN: %FileCheck %s --input-file %t/ExtensionBlockSymbol.symbols.json --check-prefix LOCAL
|
||||||
|
// RUN: %FileCheck %s --input-file %t/ExtensionBlockSymbol@Base.symbols.json --check-prefix EXTENSION
|
||||||
|
|
||||||
|
import Base
|
||||||
|
|
||||||
|
public extension Derived {
|
||||||
|
func foo() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BASE: "kind": "inheritsFrom"
|
||||||
|
// BASE-NEXT: "source": "s:4Base7DerivedC"
|
||||||
|
// BASE-NEXT: "target": "s:4BaseAAC"
|
||||||
|
|
||||||
|
// LOCAL-DAG: "symbols": []
|
||||||
|
// LOCAL-DAG: "relationships": []
|
||||||
|
|
||||||
|
// EXTENSION-NOT: "kind": "inheritsFrom"
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
public class Base {}
|
||||||
|
public class Derived: Base {}
|
||||||
Reference in New Issue
Block a user