[SymbolGraph] Put extending declarations in rootmost module

When extending another module's type in your module, serialize declarations in
the extension into the other module's "extension" symbol graph file, including
relationships. This mechanic should continue up to the rootmost module. For
example:

A.AStruct <- B.BStruct < C.CStruct

Both BStruct and CStruct should go in `@A` symbol graph files because AStruct
owns BStruct and by extension owns CStruct. This is reflected in
documentation curation in some form already.

rdar://60796811
This commit is contained in:
Ashley Garland
2020-04-07 12:53:41 -07:00
parent 4264b39b23
commit d6e49a98db
8 changed files with 155 additions and 32 deletions

View File

@@ -0,0 +1,18 @@
import A
import B
extension AStruct.BStruct {
public struct CStruct: P {
public func foo() -> UInt8 {
return 0
}
}
}
extension AStruct.BStruct {
public func baz() {}
}
extension AStruct.BStruct.CStruct where Thing: Equatable {
public func baz() {}
}