@@ -220,13 +220,28 @@ namespace ts.server {
220220
221221 interface FilePropertyReader < T > {
222222 getFileName ( f : T ) : string ;
223- getScriptKind ( f : T ) : ScriptKind ;
223+ getScriptKind ( f : T , extraFileExtensions ?: JsFileExtensionInfo [ ] ) : ScriptKind ;
224224 hasMixedContent ( f : T , extraFileExtensions : JsFileExtensionInfo [ ] ) : boolean ;
225225 }
226226
227227 const fileNamePropertyReader : FilePropertyReader < string > = {
228228 getFileName : x => x ,
229- getScriptKind : _ => undefined ,
229+ getScriptKind : ( fileName , extraFileExtensions ) => {
230+ let result : ScriptKind ;
231+ if ( extraFileExtensions ) {
232+ const fileExtension = getAnyExtensionFromPath ( fileName ) ;
233+ if ( fileExtension ) {
234+ some ( extraFileExtensions , info => {
235+ if ( info . extension === fileExtension ) {
236+ result = info . scriptKind ;
237+ return true ;
238+ }
239+ return false ;
240+ } ) ;
241+ }
242+ }
243+ return result ;
244+ } ,
230245 hasMixedContent : ( fileName , extraFileExtensions ) => some ( extraFileExtensions , ext => ext . isMixedContent && fileExtensionIs ( fileName , ext . extension ) ) ,
231246 } ;
232247
@@ -1504,7 +1519,7 @@ namespace ts.server {
15041519 scriptInfo = normalizedPath ;
15051520 }
15061521 else {
1507- const scriptKind = propertyReader . getScriptKind ( f ) ;
1522+ const scriptKind = propertyReader . getScriptKind ( f , this . hostConfiguration . extraFileExtensions ) ;
15081523 const hasMixedContent = propertyReader . hasMixedContent ( f , this . hostConfiguration . extraFileExtensions ) ;
15091524 scriptInfo = this . getOrCreateScriptInfoNotOpenedByClientForNormalizedPath ( normalizedPath , scriptKind , hasMixedContent , project . directoryStructureHost ) ;
15101525 path = scriptInfo . path ;
0 commit comments