@@ -999,14 +999,22 @@ class PathHierarchyTests: XCTestCase {
999
999
let mySwiftClassSwiftID = try tree. find ( path: " MySwiftClassSwiftName " , parent: moduleID, onlyFindSymbols: true )
1000
1000
XCTAssertEqual ( try tree. findSymbol ( path: " myPropertySwiftName " , parent: mySwiftClassSwiftID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(py)myPropertyObjectiveCName " )
1001
1001
XCTAssertEqual ( try tree. findSymbol ( path: " myMethodSwiftName() " , parent: mySwiftClassSwiftID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(im)myMethodObjectiveCName " )
1002
- XCTAssertThrowsError ( try tree. findSymbol ( path: " myPropertyObjectiveCName " , parent: mySwiftClassSwiftID) )
1003
- XCTAssertThrowsError ( try tree. findSymbol ( path: " myMethodObjectiveCName " , parent: mySwiftClassSwiftID) )
1002
+ // Relative links can start with either language representation. This enabled documentation extension files to use relative links.
1003
+ XCTAssertEqual ( try tree. findSymbol ( path: " myPropertyObjectiveCName " , parent: mySwiftClassSwiftID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(py)myPropertyObjectiveCName " )
1004
+ XCTAssertEqual ( try tree. findSymbol ( path: " myMethodObjectiveCName " , parent: mySwiftClassSwiftID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(im)myMethodObjectiveCName " )
1005
+ // Links can't mix languages
1006
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " MySwiftClassSwiftName/myPropertyObjectiveCName " , parent: moduleID) )
1007
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " MySwiftClassSwiftName/myMethodObjectiveCName " , parent: moduleID) )
1004
1008
1005
1009
let mySwiftClassObjCID = try tree. find ( path: " MySwiftClassObjectiveCName " , parent: moduleID, onlyFindSymbols: true )
1006
1010
XCTAssertEqual ( try tree. findSymbol ( path: " myPropertyObjectiveCName " , parent: mySwiftClassObjCID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(py)myPropertyObjectiveCName " )
1007
1011
XCTAssertEqual ( try tree. findSymbol ( path: " myMethodObjectiveCName " , parent: mySwiftClassObjCID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(im)myMethodObjectiveCName " )
1008
- XCTAssertThrowsError ( try tree. findSymbol ( path: " myPropertySwiftName " , parent: mySwiftClassObjCID) )
1009
- XCTAssertThrowsError ( try tree. findSymbol ( path: " myMethodSwiftName() " , parent: mySwiftClassObjCID) )
1012
+ // Relative links can use either language representation. This enabled documentation extension files to use relative links.
1013
+ XCTAssertEqual ( try tree. findSymbol ( path: " myPropertySwiftName " , parent: mySwiftClassObjCID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(py)myPropertyObjectiveCName " )
1014
+ XCTAssertEqual ( try tree. findSymbol ( path: " myMethodSwiftName() " , parent: mySwiftClassObjCID) . identifier. precise, " c:@M@MixedFramework@objc(cs)MySwiftClassObjectiveCName(im)myMethodObjectiveCName " )
1015
+ // Absolute links can't mix languages
1016
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " myPropertySwiftName " , parent: moduleID) )
1017
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " myMethodSwiftName() " , parent: moduleID) )
1010
1018
1011
1019
// typedef NS_OPTIONS(NSInteger, MyObjectiveCOption) {
1012
1020
// MyObjectiveCOptionNone = 0,
@@ -1017,19 +1025,30 @@ class PathHierarchyTests: XCTestCase {
1017
1025
XCTAssertEqual ( try tree. findSymbol ( path: " MyObjectiveCOptionNone " , parent: myOptionAsEnumID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionNone " )
1018
1026
XCTAssertEqual ( try tree. findSymbol ( path: " MyObjectiveCOptionFirst " , parent: myOptionAsEnumID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionFirst " )
1019
1027
XCTAssertEqual ( try tree. findSymbol ( path: " MyObjectiveCOptionSecond " , parent: myOptionAsEnumID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionSecond " )
1028
+ // These names don't exist in either language representation
1020
1029
XCTAssertThrowsError ( try tree. findSymbol ( path: " none " , parent: myOptionAsEnumID) )
1021
- XCTAssertThrowsError ( try tree. findSymbol ( path: " first " , parent: myOptionAsEnumID) )
1022
1030
XCTAssertThrowsError ( try tree. findSymbol ( path: " second " , parent: myOptionAsEnumID) )
1023
- XCTAssertThrowsError ( try tree. findSymbol ( path: " secondCaseSwiftName " , parent: myOptionAsEnumID) )
1031
+ // Relative links can start with either language representation. This enabled documentation extension files to use relative links.
1032
+ XCTAssertEqual ( try tree. findSymbol ( path: " first " , parent: myOptionAsEnumID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionFirst " )
1033
+ XCTAssertEqual ( try tree. findSymbol ( path: " secondCaseSwiftName " , parent: myOptionAsEnumID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionSecond " )
1034
+ // Links can't mix languages
1035
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOption-enum/first " , parent: myOptionAsEnumID) )
1036
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOption-enum/secondCaseSwiftName " , parent: myOptionAsEnumID) )
1024
1037
1025
1038
let myOptionAsStructID = try tree. find ( path: " MyObjectiveCOption-struct " , parent: moduleID, onlyFindSymbols: true )
1026
1039
XCTAssertEqual ( try tree. findSymbol ( path: " first " , parent: myOptionAsStructID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionFirst " )
1027
1040
XCTAssertEqual ( try tree. findSymbol ( path: " secondCaseSwiftName " , parent: myOptionAsStructID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionSecond " )
1041
+ // These names don't exist in either language representation
1028
1042
XCTAssertThrowsError ( try tree. findSymbol ( path: " none " , parent: myOptionAsStructID) )
1029
1043
XCTAssertThrowsError ( try tree. findSymbol ( path: " second " , parent: myOptionAsStructID) )
1030
- XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOptionNone " , parent: myOptionAsStructID) )
1031
- XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOptionFirst " , parent: myOptionAsStructID) )
1032
- XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOptionSecond " , parent: myOptionAsStructID) )
1044
+ // Relative links can start with either language representation. This enabled documentation extension files to use relative links.
1045
+ XCTAssertEqual ( try tree. findSymbol ( path: " MyObjectiveCOptionNone " , parent: myOptionAsStructID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionNone " )
1046
+ XCTAssertEqual ( try tree. findSymbol ( path: " MyObjectiveCOptionFirst " , parent: myOptionAsStructID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionFirst " )
1047
+ XCTAssertEqual ( try tree. findSymbol ( path: " MyObjectiveCOptionSecond " , parent: myOptionAsStructID) . identifier. precise, " c:@E@MyObjectiveCOption@MyObjectiveCOptionSecond " )
1048
+ // Links can't mix languages
1049
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOption-struct/MyObjectiveCOptionNone " , parent: moduleID) )
1050
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOption-struct/MyObjectiveCOptionFirst " , parent: moduleID) )
1051
+ XCTAssertThrowsError ( try tree. findSymbol ( path: " MyObjectiveCOption-struct/MyObjectiveCOptionSecond " , parent: moduleID) )
1033
1052
1034
1053
// typedef NSInteger MyTypedObjectiveCExtensibleEnum NS_TYPED_EXTENSIBLE_ENUM;
1035
1054
//
0 commit comments