@@ -2164,15 +2164,18 @@ namespace ts.server {
2164
2164
return result ;
2165
2165
}
2166
2166
2167
- private toProtocolCallHierarchyItem ( item : CallHierarchyItem , scriptInfo ?: ScriptInfo ) : protocol . CallHierarchyItem {
2167
+ private getScriptInfoFromProjectService ( file : string ) {
2168
+ const normalizedFile = toNormalizedPath ( file ) ;
2169
+ const scriptInfo = this . projectService . getScriptInfoForNormalizedPath ( normalizedFile ) ;
2168
2170
if ( ! scriptInfo ) {
2169
- const file = toNormalizedPath ( item . file ) ;
2170
- scriptInfo = this . projectService . getScriptInfoForNormalizedPath ( file ) ;
2171
- if ( ! scriptInfo ) {
2172
- this . projectService . logErrorForScriptInfoNotFound ( file ) ;
2173
- return Errors . ThrowNoProject ( ) ;
2174
- }
2171
+ this . projectService . logErrorForScriptInfoNotFound ( normalizedFile ) ;
2172
+ return Errors . ThrowNoProject ( ) ;
2175
2173
}
2174
+ return scriptInfo ;
2175
+ }
2176
+
2177
+ private toProtocolCallHierarchyItem ( item : CallHierarchyItem ) : protocol . CallHierarchyItem {
2178
+ const scriptInfo = this . getScriptInfoFromProjectService ( item . file ) ;
2176
2179
return {
2177
2180
name : item . name ,
2178
2181
kind : item . kind ,
@@ -2182,7 +2185,8 @@ namespace ts.server {
2182
2185
} ;
2183
2186
}
2184
2187
2185
- private toProtocolCallHierarchyIncomingCall ( incomingCall : CallHierarchyIncomingCall , scriptInfo : ScriptInfo ) : protocol . CallHierarchyIncomingCall {
2188
+ private toProtocolCallHierarchyIncomingCall ( incomingCall : CallHierarchyIncomingCall ) : protocol . CallHierarchyIncomingCall {
2189
+ const scriptInfo = this . getScriptInfoFromProjectService ( incomingCall . from . file ) ;
2186
2190
return {
2187
2191
from : this . toProtocolCallHierarchyItem ( incomingCall . from ) ,
2188
2192
fromSpans : incomingCall . fromSpans . map ( fromSpan => toProtocolTextSpan ( fromSpan , scriptInfo ) )
@@ -2202,29 +2206,21 @@ namespace ts.server {
2202
2206
if ( scriptInfo ) {
2203
2207
const position = this . getPosition ( args , scriptInfo ) ;
2204
2208
const result = project . getLanguageService ( ) . prepareCallHierarchy ( file , position ) ;
2205
- return result && mapOneOrMany ( result , item => this . toProtocolCallHierarchyItem ( item , scriptInfo ) ) ;
2209
+ return result && mapOneOrMany ( result , item => this . toProtocolCallHierarchyItem ( item ) ) ;
2206
2210
}
2207
2211
return undefined ;
2208
2212
}
2209
2213
2210
2214
private provideCallHierarchyIncomingCalls ( args : protocol . FileLocationRequestArgs ) : protocol . CallHierarchyIncomingCall [ ] {
2211
2215
const { file, project } = this . getFileAndProject ( args ) ;
2212
- const scriptInfo = this . projectService . getScriptInfoForNormalizedPath ( file ) ;
2213
- if ( ! scriptInfo ) {
2214
- this . projectService . logErrorForScriptInfoNotFound ( file ) ;
2215
- return Errors . ThrowNoProject ( ) ;
2216
- }
2216
+ const scriptInfo = this . getScriptInfoFromProjectService ( file ) ;
2217
2217
const incomingCalls = project . getLanguageService ( ) . provideCallHierarchyIncomingCalls ( file , this . getPosition ( args , scriptInfo ) ) ;
2218
- return incomingCalls . map ( call => this . toProtocolCallHierarchyIncomingCall ( call , scriptInfo ) ) ;
2218
+ return incomingCalls . map ( call => this . toProtocolCallHierarchyIncomingCall ( call ) ) ;
2219
2219
}
2220
2220
2221
2221
private provideCallHierarchyOutgoingCalls ( args : protocol . FileLocationRequestArgs ) : protocol . CallHierarchyOutgoingCall [ ] {
2222
2222
const { file, project } = this . getFileAndProject ( args ) ;
2223
- const scriptInfo = this . projectService . getScriptInfoForNormalizedPath ( file ) ;
2224
- if ( ! scriptInfo ) {
2225
- this . projectService . logErrorForScriptInfoNotFound ( file ) ;
2226
- return Errors . ThrowNoProject ( ) ;
2227
- }
2223
+ const scriptInfo = this . getScriptInfoFromProjectService ( file ) ;
2228
2224
const outgoingCalls = project . getLanguageService ( ) . provideCallHierarchyOutgoingCalls ( file , this . getPosition ( args , scriptInfo ) ) ;
2229
2225
return outgoingCalls . map ( call => this . toProtocolCallHierarchyOutgoingCall ( call , scriptInfo ) ) ;
2230
2226
}
0 commit comments