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:
Max Obermeier
2022-11-15 17:18:09 +01:00
committed by GitHub
parent fc954d299b
commit ddf5cf944c
5 changed files with 38 additions and 13 deletions

View File

@@ -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());
}

View File

@@ -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"

View 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"

View File

@@ -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"

View File

@@ -0,0 +1,2 @@
public class Base {}
public class Derived: Base {}