@@ -230,6 +230,12 @@ function spawnProcess(dir: string) {
230230 }
231231
232232 responses . forEach ( ( response ) => {
233+ // What's this, can't remember,
234+ // Great example of poorly written code (this whole file is a mess)
235+ // I think this needs to be removed, because this is misspelt, it is argments, 'U' is missing
236+ // And that case is handled further down
237+ // case CommandType.Arguments: {
238+ // Rewrite this mess to use stratergy..
233239 if ( response [ "argments" ] ) {
234240 var index = commandQueue . indexOf ( cmd . id ) ;
235241 commandQueue . splice ( index , 1 ) ;
@@ -256,84 +262,82 @@ function spawnProcess(dir: string) {
256262 switch ( cmd . command ) {
257263 case CommandType . Completions : {
258264 let results = < IAutoCompleteItem [ ] > response [ 'results' ] ;
259- if ( results . length > 0 ) {
260- results . forEach ( item => {
261- const originalType = < string > < any > item . type ;
262- item . type = getMappedVSCodeType ( originalType ) ;
263- item . kind = getMappedVSCodeSymbol ( originalType ) ;
264- } ) ;
265-
266- let completionResult : ICompletionResult = {
267- items : results ,
268- requestId : cmd . id
269- }
270- cmd . resolve ( completionResult ) ;
265+ results = Array . isArray ( results ) ? results : [ ] ;
266+ results . forEach ( item => {
267+ const originalType = < string > < any > item . type ;
268+ item . type = getMappedVSCodeType ( originalType ) ;
269+ item . kind = getMappedVSCodeSymbol ( originalType ) ;
270+ } ) ;
271+
272+ let completionResult : ICompletionResult = {
273+ items : results ,
274+ requestId : cmd . id
271275 }
276+ cmd . resolve ( completionResult ) ;
272277 break ;
273278 }
274279 case CommandType . Definitions : {
275280 let defs = < any [ ] > response [ 'results' ] ;
281+ let defResult : IDefinitionResult = {
282+ requestId : cmd . id ,
283+ definition : null
284+ } ;
276285 if ( defs . length > 0 ) {
277286 let def = defs [ 0 ] ;
278287 const originalType = def . type as string ;
279- let defResult : IDefinitionResult = {
280- requestId : cmd . id ,
281- definition : {
282- columnIndex : Number ( def . column ) ,
283- fileName : def . fileName ,
284- lineIndex : Number ( def . line ) ,
285- text : def . text ,
286- type : getMappedVSCodeType ( originalType ) ,
287- kind : getMappedVSCodeSymbol ( originalType )
288- }
288+ defResult . definition = {
289+ columnIndex : Number ( def . column ) ,
290+ fileName : def . fileName ,
291+ lineIndex : Number ( def . line ) ,
292+ text : def . text ,
293+ type : getMappedVSCodeType ( originalType ) ,
294+ kind : getMappedVSCodeSymbol ( originalType )
289295 } ;
290-
291- cmd . resolve ( defResult ) ;
292296 }
297+
298+ cmd . resolve ( defResult ) ;
293299 break ;
294300 }
295301 case CommandType . Symbols : {
296302 var defs = < any [ ] > response [ 'results' ] ;
297- if ( defs . length > 0 ) {
298- var defResults : ISymbolResult = {
299- requestId : cmd . id ,
300- definitions : [ ]
301- }
302- defResults . definitions = defs . map ( def => {
303- const originalType = def . type as string ;
304- return < IDefinition > {
305- columnIndex : < number > def . column ,
306- fileName : < string > def . fileName ,
307- lineIndex : < number > def . line ,
308- text : < string > def . text ,
309- type : getMappedVSCodeType ( originalType ) ,
310- kind : getMappedVSCodeSymbol ( originalType )
311- } ;
312- } ) ;
313-
314- cmd . resolve ( defResults ) ;
303+ defs = Array . isArray ( defs ) ? defs : [ ] ;
304+ var defResults : ISymbolResult = {
305+ requestId : cmd . id ,
306+ definitions : [ ]
315307 }
308+ defResults . definitions = defs . map ( def => {
309+ const originalType = def . type as string ;
310+ return < IDefinition > {
311+ columnIndex : < number > def . column ,
312+ fileName : < string > def . fileName ,
313+ lineIndex : < number > def . line ,
314+ text : < string > def . text ,
315+ type : getMappedVSCodeType ( originalType ) ,
316+ kind : getMappedVSCodeSymbol ( originalType )
317+ } ;
318+ } ) ;
319+
320+ cmd . resolve ( defResults ) ;
316321 break ;
317322 }
318323 case CommandType . Usages : {
319324 var defs = < any [ ] > response [ 'results' ] ;
320- if ( defs . length > 0 ) {
321- var refResult : IReferenceResult = {
322- requestId : cmd . id ,
323- references : defs . map ( item => {
324- return {
325- columnIndex : item . column ,
326- fileName : item . fileName ,
327- lineIndex : item . line - 1 ,
328- moduleName : item . moduleName ,
329- name : item . name
330- } ;
331- }
332- )
333- } ;
325+ defs = Array . isArray ( defs ) ? defs : [ ] ;
326+ var refResult : IReferenceResult = {
327+ requestId : cmd . id ,
328+ references : defs . map ( item => {
329+ return {
330+ columnIndex : item . column ,
331+ fileName : item . fileName ,
332+ lineIndex : item . line - 1 ,
333+ moduleName : item . moduleName ,
334+ name : item . name
335+ } ;
336+ }
337+ )
338+ } ;
334339
335- cmd . resolve ( refResult ) ;
336- }
340+ cmd . resolve ( refResult ) ;
337341 break ;
338342 }
339343 case CommandType . Arguments : {
0 commit comments