@@ -74,9 +74,10 @@ export default class DefinitionAdapter {
74
74
if ( locationResult == null ) {
75
75
return null
76
76
}
77
- return ( Array . isArray ( locationResult ) ? ( locationResult as any [ ] ) : [ locationResult ] ) . filter (
78
- ( d : Location | LocationLink ) => ( "range" in d ? d . range : d . targetRange ) . start != null
79
- )
77
+ if ( this . isLocationLinkArray ( locationResult ) ) {
78
+ return locationResult . filter ( ( d ) => d . targetRange . start != null )
79
+ }
80
+ return ( Array . isArray ( locationResult ) ? locationResult : [ locationResult ] ) . filter ( ( d ) => d . range . start != null )
80
81
}
81
82
82
83
/**
@@ -90,11 +91,22 @@ export default class DefinitionAdapter {
90
91
locations : Location [ ] | LocationLink [ ] ,
91
92
languageName : string
92
93
) : atomIde . Definition [ ] {
93
- return ( locations as any [ ] ) . map ( ( d : Location | LocationLink ) => ( {
94
- path : Convert . uriToPath ( "uri" in d ? d . uri : d . targetUri ) ,
95
- position : Convert . positionToPoint ( ( "range" in d ? d . range : d . targetRange ) . start ) ,
96
- range : Range . fromObject ( Convert . lsRangeToAtomRange ( "range" in d ? d . range : d . targetRange ) ) ,
94
+ if ( this . isLocationLinkArray ( locations ) ) {
95
+ return locations . map ( ( d ) => ( {
96
+ path : Convert . uriToPath ( d . targetUri ) ,
97
+ position : Convert . positionToPoint ( d . targetRange . start ) ,
98
+ range : Range . fromObject ( Convert . lsRangeToAtomRange ( d . targetRange ) ) ,
99
+ language : languageName ,
100
+ } ) )
101
+ }
102
+ return locations . map ( ( d ) => ( {
103
+ path : Convert . uriToPath ( d . uri ) ,
104
+ position : Convert . positionToPoint ( d . range . start ) ,
105
+ range : Range . fromObject ( Convert . lsRangeToAtomRange ( d . range ) ) ,
97
106
language : languageName ,
98
107
} ) )
99
108
}
109
+ private static isLocationLinkArray ( value : any ) : value is LocationLink [ ] {
110
+ return Array . isArray ( value ) && LocationLink . is ( value [ 0 ] )
111
+ }
100
112
}
0 commit comments