@@ -1716,7 +1716,7 @@ class PathHierarchyTests: XCTestCase {
1716
1716
let exampleDocumentation = Folder ( name: " unit-test.docc " , content: [
1717
1717
JSONFile ( name: " Module.symbols.json " , content: makeSymbolGraph (
1718
1718
moduleName: " Module " ,
1719
- symbols: symbolPaths. map { ( $0. joined ( separator: " . " ) , . swift, $0) }
1719
+ symbols: symbolPaths. map { ( $0. joined ( separator: " . " ) , . swift, $0, . class ) }
1720
1720
) ) ,
1721
1721
] )
1722
1722
let tempURL = try createTemporaryDirectory ( )
@@ -1744,7 +1744,7 @@ class PathHierarchyTests: XCTestCase {
1744
1744
XCTAssertEqual ( paths [ " X.Y2.Z.W " ] , " /Module/X/Y2/Z/W " )
1745
1745
}
1746
1746
1747
- func testMixedLanguageSymbolAndItsExtendingModule ( ) throws {
1747
+ func testMixedLanguageSymbolWithSameKindAndAddedMemberFromExtendingModule ( ) throws {
1748
1748
let containerID = " some-container-symbol-id "
1749
1749
let memberID = " some-member-symbol-id "
1750
1750
@@ -1753,7 +1753,7 @@ class PathHierarchyTests: XCTestCase {
1753
1753
JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1754
1754
moduleName: " ModuleName " ,
1755
1755
symbols: [
1756
- ( containerID, . objectiveC, [ " ContainerName " ] )
1756
+ ( containerID, . objectiveC, [ " ContainerName " ] , . class )
1757
1757
]
1758
1758
) ) ,
1759
1759
] ) ,
@@ -1762,14 +1762,14 @@ class PathHierarchyTests: XCTestCase {
1762
1762
JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1763
1763
moduleName: " ModuleName " ,
1764
1764
symbols: [
1765
- ( containerID, . swift, [ " ContainerName " ] )
1765
+ ( containerID, . swift, [ " ContainerName " ] , . class )
1766
1766
]
1767
1767
) ) ,
1768
1768
1769
1769
JSONFile ( name
: " [email protected] " , content
: makeSymbolGraph (
1770
1770
moduleName: " ExtendingModule " ,
1771
1771
symbols: [
1772
- ( memberID, . swift, [ " ContainerName " , " MemberName " ] )
1772
+ ( memberID, . swift, [ " ContainerName " , " MemberName " ] , . property )
1773
1773
] ,
1774
1774
relationships: [
1775
1775
. init( source: memberID, target: containerID, kind: . memberOf, targetFallback: nil )
@@ -1787,6 +1787,90 @@ class PathHierarchyTests: XCTestCase {
1787
1787
XCTAssertEqual ( paths [ memberID] , " /ModuleName/ContainerName/MemberName " )
1788
1788
}
1789
1789
1790
+ func testMixedLanguageSymbolWithDifferentKindsAndAddedMemberFromExtendingModule( ) throws {
1791
+ let containerID = " some-container-symbol-id "
1792
+ let memberID = " some-member-symbol-id "
1793
+
1794
+ let exampleDocumentation = Folder ( name: " unit-test.docc " , content: [
1795
+ Folder ( name: " clang " , content: [
1796
+ JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1797
+ moduleName: " ModuleName " ,
1798
+ symbols: [
1799
+ ( containerID, . objectiveC, [ " ContainerName " ] , . typealias)
1800
+ ]
1801
+ ) ) ,
1802
+ ] ) ,
1803
+
1804
+ Folder ( name: " swift " , content: [
1805
+ JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1806
+ moduleName: " ModuleName " ,
1807
+ symbols: [
1808
+ ( containerID, . swift, [ " ContainerName " ] , . struct)
1809
+ ]
1810
+ ) ) ,
1811
+
1812
+ JSONFile ( name
: " [email protected] " , content
: makeSymbolGraph (
1813
+ moduleName: " ExtendingModule " ,
1814
+ symbols: [
1815
+ ( memberID, . swift, [ " ContainerName " , " MemberName " ] , . property)
1816
+ ] ,
1817
+ relationships: [
1818
+ . init( source: memberID, target: containerID, kind: . memberOf, targetFallback: nil )
1819
+ ]
1820
+ ) ) ,
1821
+ ] )
1822
+ ] )
1823
+
1824
+ let tempURL = try createTempFolder ( content: [ exampleDocumentation] )
1825
+ let ( _, _, context) = try loadBundle ( from: tempURL)
1826
+ let tree = context. linkResolver. localResolver. pathHierarchy
1827
+
1828
+ let paths = tree. caseInsensitiveDisambiguatedPaths ( )
1829
+ XCTAssertEqual ( paths [ containerID] , " /ModuleName/ContainerName " )
1830
+ XCTAssertEqual ( paths [ memberID] , " /ModuleName/ContainerName/MemberName " )
1831
+ }
1832
+
1833
+ func testLanguageRepresentationsWithDifferentCapitalization( ) throws {
1834
+ let containerID = " some-container-symbol-id "
1835
+ let memberID = " some-member-symbol-id "
1836
+
1837
+ let exampleDocumentation = Folder ( name: " unit-test.docc " , content: [
1838
+ Folder ( name: " clang " , content: [
1839
+ JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1840
+ moduleName: " ModuleName " ,
1841
+ symbols: [
1842
+ ( containerID, . objectiveC, [ " ContainerName " ] , . class) ,
1843
+ ( memberID, . objectiveC, [ " ContainerName " , " MemberName " ] , . property) , // member starts with uppercase "M"
1844
+ ] ,
1845
+ relationships: [
1846
+ . init( source: memberID, target: containerID, kind: . memberOf, targetFallback: nil )
1847
+ ]
1848
+ ) ) ,
1849
+ ] ) ,
1850
+
1851
+ Folder ( name: " swift " , content: [
1852
+ JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1853
+ moduleName: " ModuleName " ,
1854
+ symbols: [
1855
+ ( containerID, . swift, [ " ContainerName " ] , . class) ,
1856
+ ( memberID, . swift, [ " ContainerName " , " memberName " ] , . property) , // member starts with lowercase "m"
1857
+ ] ,
1858
+ relationships: [
1859
+ . init( source: memberID, target: containerID, kind: . memberOf, targetFallback: nil )
1860
+ ]
1861
+ ) ) ,
1862
+ ] )
1863
+ ] )
1864
+
1865
+ let tempURL = try createTempFolder ( content: [ exampleDocumentation] )
1866
+ let ( _, _, context) = try loadBundle ( from: tempURL)
1867
+ let tree = context. linkResolver. localResolver. pathHierarchy
1868
+
1869
+ let paths = tree. caseInsensitiveDisambiguatedPaths ( )
1870
+ XCTAssertEqual ( paths [ containerID] , " /ModuleName/ContainerName " )
1871
+ XCTAssertEqual ( paths [ memberID] , " /ModuleName/ContainerName/memberName " ) // The Swift spelling is preferred
1872
+ }
1873
+
1790
1874
func testMixedLanguageSymbolAndItsExtendingModuleWithDifferentContainerNames( ) throws {
1791
1875
let containerID = " some-container-symbol-id "
1792
1876
let memberID = " some-member-symbol-id "
@@ -1796,7 +1880,7 @@ class PathHierarchyTests: XCTestCase {
1796
1880
JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1797
1881
moduleName: " ModuleName " ,
1798
1882
symbols: [
1799
- ( containerID, . objectiveC, [ " ObjectiveCContainerName " ] )
1883
+ ( containerID, . objectiveC, [ " ObjectiveCContainerName " ] , . class )
1800
1884
]
1801
1885
) ) ,
1802
1886
] ) ,
@@ -1805,14 +1889,14 @@ class PathHierarchyTests: XCTestCase {
1805
1889
JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1806
1890
moduleName: " ModuleName " ,
1807
1891
symbols: [
1808
- ( containerID, . swift, [ " SwiftContainerName " ] )
1892
+ ( containerID, . swift, [ " SwiftContainerName " ] , . class )
1809
1893
]
1810
1894
) ) ,
1811
1895
1812
1896
JSONFile ( name
: " [email protected] " , content
: makeSymbolGraph (
1813
1897
moduleName: " ExtendingModule " ,
1814
1898
symbols: [
1815
- ( memberID, . swift, [ " SwiftContainerName " , " MemberName " ] )
1899
+ ( memberID, . swift, [ " SwiftContainerName " , " MemberName " ] , . property )
1816
1900
] ,
1817
1901
relationships: [
1818
1902
. init( source: memberID, target: containerID, kind: . memberOf, targetFallback: nil )
@@ -1839,9 +1923,9 @@ class PathHierarchyTests: XCTestCase {
1839
1923
JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1840
1924
moduleName: " ModuleName " ,
1841
1925
symbols: [
1842
- ( containerID, . swift, [ " ContainerName " ] ) ,
1843
- ( otherID, . swift, [ " ContainerName " ] ) ,
1844
- ( memberID, . swift, [ " ContainerName " , " MemberName1 " ] ) ,
1926
+ ( containerID, . swift, [ " ContainerName " ] , . class ) ,
1927
+ ( otherID, . swift, [ " ContainerName " ] , . class ) ,
1928
+ ( memberID, . swift, [ " ContainerName " , " MemberName1 " ] , . property ) ,
1845
1929
] ,
1846
1930
relationships: [
1847
1931
. init( source: memberID, target: containerID, kind: . optionalMemberOf, targetFallback: nil ) ,
@@ -1864,7 +1948,7 @@ class PathHierarchyTests: XCTestCase {
1864
1948
JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1865
1949
moduleName: " ModuleName " ,
1866
1950
symbols: [
1867
- ( " some-symbol-id " , . swift, [ " SymbolName " ] ) ,
1951
+ ( " some-symbol-id " , . swift, [ " SymbolName " ] , . class ) ,
1868
1952
] ,
1869
1953
relationships: [ ]
1870
1954
) ) ,
@@ -1963,7 +2047,7 @@ class PathHierarchyTests: XCTestCase {
1963
2047
JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1964
2048
moduleName: " ModuleName " ,
1965
2049
symbols: [
1966
- ( symbolID, . swift, [ " SymbolName " ] ) ,
2050
+ ( symbolID, . swift, [ " SymbolName " ] , . class ) ,
1967
2051
] ,
1968
2052
relationships: [ ]
1969
2053
) ) ,
@@ -1997,9 +2081,9 @@ class PathHierarchyTests: XCTestCase {
1997
2081
moduleName: " ModuleName " ,
1998
2082
platformName: platformName,
1999
2083
symbols: [
2000
- ( protocolID, . swift, [ " SomeProtocolName " ] ) ,
2001
- ( protocolRequirementID, . swift, [ " SomeProtocolName " , " someProtocolRequirement() " ] ) ,
2002
- ( defaultImplementationID, . swift, [ " SomeConformingType " , " someProtocolRequirement() " ] ) ,
2084
+ ( protocolID, . swift, [ " SomeProtocolName " ] , . class ) ,
2085
+ ( protocolRequirementID, . swift, [ " SomeProtocolName " , " someProtocolRequirement() " ] , . class ) ,
2086
+ ( defaultImplementationID, . swift, [ " SomeConformingType " , " someProtocolRequirement() " ] , . class ) ,
2003
2087
] ,
2004
2088
relationships: [
2005
2089
. init( source: protocolRequirementID, target: protocolID, kind: . requirementOf, targetFallback: nil ) ,
@@ -2089,20 +2173,20 @@ class PathHierarchyTests: XCTestCase {
2089
2173
private func makeSymbolGraph(
2090
2174
moduleName: String ,
2091
2175
platformName: String ? = nil ,
2092
- symbols: [ ( identifier: String , language: SourceLanguage , pathComponents: [ String ] ) ] ,
2176
+ symbols: [ ( identifier: String , language: SourceLanguage , pathComponents: [ String ] , kindID : SymbolGraph . Symbol . KindIdentifier ) ] ,
2093
2177
relationships: [ SymbolGraph . Relationship ] = [ ]
2094
2178
) -> SymbolGraph {
2095
2179
return SymbolGraph (
2096
2180
metadata: SymbolGraph . Metadata ( formatVersion: . init( major: 0 , minor: 5 , patch: 3 ) , generator: " unit-test " ) ,
2097
2181
module: SymbolGraph . Module ( name: moduleName, platform: . init( operatingSystem: platformName. map { . init( name: $0) } ) ) ,
2098
- symbols: symbols. map { identifier, language, pathComponents in
2182
+ symbols: symbols. map { identifier, language, pathComponents, kindID in
2099
2183
SymbolGraph . Symbol (
2100
2184
identifier: . init( precise: identifier, interfaceLanguage: language. id) ,
2101
2185
names: . init( title: " SymbolName " , navigator: nil , subHeading: nil , prose: nil ) , // names doesn't matter for path disambiguation
2102
2186
pathComponents: pathComponents,
2103
2187
docComment: nil ,
2104
2188
accessLevel: . public,
2105
- kind: . init( parsedIdentifier: . class , displayName: " Kind Display Name " ) , // kind display names doesn't matter for path disambiguation
2189
+ kind: . init( parsedIdentifier: kindID , displayName: " Kind Display Name " ) , // kind display names doesn't matter for path disambiguation
2106
2190
mixins: [ : ]
2107
2191
)
2108
2192
} ,
0 commit comments