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
|
||||
SymbolGraph::recordInheritanceRelationships(Symbol S) {
|
||||
const auto VD = S.getSymbolDecl();
|
||||
const auto VD = S.getLocalSymbolDecl();
|
||||
if (const auto *NTD = dyn_cast<NominalTypeDecl>(VD)) {
|
||||
for (const auto &InheritanceLoc : NTD->getInherited()) {
|
||||
auto Ty = InheritanceLoc.getType();
|
||||
@@ -390,7 +390,7 @@ SymbolGraph::recordInheritanceRelationships(Symbol S) {
|
||||
continue;
|
||||
}
|
||||
|
||||
recordEdge(Symbol(this, VD, nullptr),
|
||||
recordEdge(Symbol(this, NTD, nullptr),
|
||||
Symbol(this, InheritedTypeDecl, nullptr),
|
||||
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