brighterscript 1.0.0-alpha.14 → 1.0.0-alpha.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/Cache.d.ts +2 -7
  3. package/dist/Cache.js +4 -13
  4. package/dist/Cache.js.map +1 -1
  5. package/dist/DiagnosticMessages.d.ts +21 -1
  6. package/dist/DiagnosticMessages.js +21 -1
  7. package/dist/DiagnosticMessages.js.map +1 -1
  8. package/dist/Program.d.ts +1 -1
  9. package/dist/Program.js +4 -4
  10. package/dist/Program.js.map +1 -1
  11. package/dist/Scope.d.ts +16 -11
  12. package/dist/Scope.js +25 -2
  13. package/dist/Scope.js.map +1 -1
  14. package/dist/XmlScope.d.ts +3 -3
  15. package/dist/astUtils/AstEditor.d.ts +6 -0
  16. package/dist/astUtils/AstEditor.js +10 -0
  17. package/dist/astUtils/AstEditor.js.map +1 -1
  18. package/dist/astUtils/AstEditor.spec.js +37 -0
  19. package/dist/astUtils/AstEditor.spec.js.map +1 -1
  20. package/dist/astUtils/reflection.d.ts +3 -1
  21. package/dist/astUtils/reflection.js +10 -2
  22. package/dist/astUtils/reflection.js.map +1 -1
  23. package/dist/astUtils/visitors.d.ts +3 -1
  24. package/dist/astUtils/visitors.js.map +1 -1
  25. package/dist/bscPlugin/BscPlugin.d.ts +4 -1
  26. package/dist/bscPlugin/BscPlugin.js +16 -0
  27. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  28. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
  29. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +36 -0
  30. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  31. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +28 -0
  32. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  33. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +8 -0
  34. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +36 -0
  35. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
  36. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +9 -0
  37. package/dist/bscPlugin/validation/BrsFileValidator.js +66 -0
  38. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  39. package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
  40. package/dist/bscPlugin/validation/ScopeValidator.js +94 -0
  41. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  42. package/dist/files/BrsFile.Class.spec.js +21 -22
  43. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  44. package/dist/files/BrsFile.d.ts +9 -1
  45. package/dist/files/BrsFile.js +99 -25
  46. package/dist/files/BrsFile.js.map +1 -1
  47. package/dist/files/BrsFile.spec.js +128 -59
  48. package/dist/files/BrsFile.spec.js.map +1 -1
  49. package/dist/files/XmlFile.d.ts +5 -5
  50. package/dist/files/XmlFile.spec.js +9 -9
  51. package/dist/files/XmlFile.spec.js.map +1 -1
  52. package/dist/interfaces.d.ts +29 -37
  53. package/dist/lexer/Lexer.spec.js +8 -0
  54. package/dist/lexer/Lexer.spec.js.map +1 -1
  55. package/dist/lexer/TokenKind.d.ts +2 -0
  56. package/dist/lexer/TokenKind.js +5 -0
  57. package/dist/lexer/TokenKind.js.map +1 -1
  58. package/dist/parser/Parser.d.ts +11 -2
  59. package/dist/parser/Parser.js +92 -3
  60. package/dist/parser/Parser.js.map +1 -1
  61. package/dist/parser/Statement.d.ts +52 -0
  62. package/dist/parser/Statement.js +154 -1
  63. package/dist/parser/Statement.js.map +1 -1
  64. package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
  65. package/dist/parser/tests/statement/Enum.spec.js +774 -0
  66. package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
  67. package/dist/util.d.ts +10 -0
  68. package/dist/util.js +37 -0
  69. package/dist/util.js.map +1 -1
  70. package/package.json +1 -1
@@ -158,6 +158,76 @@ describe('BrsFile', () => {
158
158
  (0, chai_1.expect)(names).to.includes('Main');
159
159
  (0, chai_1.expect)(names).to.includes('SayHello');
160
160
  });
161
+ it('includes every type of item at base level', () => {
162
+ program.setFile('source/main.bs', `
163
+ sub main()
164
+ print
165
+ end sub
166
+ sub speak()
167
+ end sub
168
+ namespace stuff
169
+ end namespace
170
+ class Person
171
+ end class
172
+ enum Direction
173
+ end enum
174
+ `);
175
+ (0, testHelpers_spec_1.expectCompletionsIncludes)(program.getCompletions('source/main.bs', util_1.default.createPosition(2, 26)), [{
176
+ label: 'main',
177
+ kind: vscode_languageserver_1.CompletionItemKind.Function
178
+ }, {
179
+ label: 'speak',
180
+ kind: vscode_languageserver_1.CompletionItemKind.Function
181
+ }, {
182
+ label: 'stuff',
183
+ kind: vscode_languageserver_1.CompletionItemKind.Module
184
+ }, {
185
+ label: 'Person',
186
+ kind: vscode_languageserver_1.CompletionItemKind.Class
187
+ }, {
188
+ label: 'Direction',
189
+ kind: vscode_languageserver_1.CompletionItemKind.Enum
190
+ }]);
191
+ });
192
+ describe('namespaces', () => {
193
+ it('gets full namespace completions at any point through the leading identifier', () => {
194
+ program.setFile('source/main.bs', `
195
+ sub main()
196
+ foo.bar
197
+ end sub
198
+
199
+ namespace foo.bar
200
+ end namespace
201
+
202
+ class Person
203
+ end class
204
+ `);
205
+ const result = program.getCompletions(`${rootDir}/source/main.bs`, vscode_languageserver_1.Position.create(2, 24)).map(x => x.label);
206
+ (0, chai_1.expect)(result).includes('main');
207
+ (0, chai_1.expect)(result).includes('foo');
208
+ (0, chai_1.expect)(result).includes('Person');
209
+ });
210
+ it('gets namespace completions', () => {
211
+ program.setFile('source/main.bs', `
212
+ namespace foo.bar
213
+ function sayHello()
214
+ end function
215
+ end namespace
216
+
217
+ sub Main()
218
+ print "hello"
219
+ foo.ba
220
+ foo.bar.
221
+ end sub
222
+ `);
223
+ let result = program.getCompletions(`${rootDir}/source/main.bs`, vscode_languageserver_1.Position.create(8, 30));
224
+ let names = result.map(x => x.label);
225
+ (0, chai_1.expect)(names).to.includes('bar');
226
+ result = program.getCompletions(`${rootDir}/source/main.bs`, vscode_languageserver_1.Position.create(9, 32));
227
+ names = result.map(x => x.label);
228
+ (0, chai_1.expect)(names).to.includes('sayHello');
229
+ });
230
+ });
161
231
  it('always includes `m`', () => {
162
232
  //eslint-disable-next-line @typescript-eslint/no-floating-promises
163
233
  program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
@@ -354,7 +424,7 @@ describe('BrsFile', () => {
354
424
  'bs:disable-next-line: LINT9999
355
425
  name = "bob
356
426
  end sub
357
- `);
427
+ `);
358
428
  (0, chai_1.expect)(file.commentFlags[0]).to.exist;
359
429
  (0, testHelpers_spec_1.expectHasDiagnostics)(program);
360
430
  });
@@ -364,7 +434,7 @@ describe('BrsFile', () => {
364
434
  sub main()
365
435
  something = true 'bs:disable-line: LINT1005
366
436
  end sub
367
- `);
437
+ `);
368
438
  file.addDiagnostics([{
369
439
  code: 'LINT1005',
370
440
  file: file,
@@ -375,18 +445,18 @@ describe('BrsFile', () => {
375
445
  (0, testHelpers_spec_1.expectZeroDiagnostics)(scope);
376
446
  });
377
447
  it('adds diagnostics for unknown numeric diagnostic codes', () => {
378
- program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
448
+ program.setFile({ src: `${rootDir} / source / main.brs`, dest: 'source/main.brs' }, `
379
449
  sub main()
380
450
  print "hi" 'bs:disable-line: 123456 999999 aaaab
381
451
  end sub
382
- `);
452
+ `);
383
453
  program.validate();
384
454
  (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.unknownDiagnosticCode(123456)), { range: vscode_languageserver_1.Range.create(2, 53, 2, 59) }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.unknownDiagnosticCode(999999)), { range: vscode_languageserver_1.Range.create(2, 60, 2, 66) })]);
385
455
  });
386
456
  });
387
457
  describe('bs:disable-line', () => {
388
458
  it('works for all', () => {
389
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
459
+ let file = program.setFile({ src: `${rootDir} / source / main.brs`, dest: 'source/main.brs' }, `
390
460
  sub Main()
391
461
  z::;;%%%%%% 'bs:disable-line
392
462
  end sub
@@ -402,7 +472,7 @@ describe('BrsFile', () => {
402
472
  (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
403
473
  });
404
474
  it('works for specific codes', () => {
405
- program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
475
+ program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
406
476
  sub main()
407
477
  'should not have any errors
408
478
  DoSomething(1) 'bs:disable-line:1002
@@ -421,12 +491,12 @@ describe('BrsFile', () => {
421
491
  //the current version of BRS causes parse errors after the `parse` keyword, showing error in comments
422
492
  //the program should ignore all diagnostics found in brs:* comment lines EXCEPT
423
493
  //for the diagnostics about using unknown error codes
424
- program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
494
+ program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
425
495
  sub main()
426
496
  stop 'bs:disable-line
427
497
  print "need a valid line to fix stop error"
428
498
  end sub
429
- `);
499
+ `);
430
500
  program.validate();
431
501
  (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
432
502
  });
@@ -436,9 +506,9 @@ describe('BrsFile', () => {
436
506
  it('supports iife in assignment', () => {
437
507
  program.setFile('source/main.brs', `
438
508
  sub main()
439
- result = sub()
509
+ result = sub()
440
510
  end sub()
441
- result = (sub()
511
+ result = (sub()
442
512
  end sub)()
443
513
  end sub
444
514
  `);
@@ -457,26 +527,26 @@ describe('BrsFile', () => {
457
527
  testParseMode('source/main.spec.bs', Parser_1.ParseMode.BrighterScript);
458
528
  });
459
529
  it('supports labels and goto statements', () => {
460
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
530
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
461
531
  sub Main()
462
532
  'multiple goto statements on one line
463
- goto myLabel : goto myLabel
533
+ goto myLabel: goto myLabel
464
534
  myLabel:
465
535
  end sub
466
536
  `);
467
537
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
468
538
  });
469
539
  it('supports empty print statements', () => {
470
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
540
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
471
541
  sub main()
472
- print
542
+ print
473
543
  end sub
474
544
  `);
475
545
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
476
546
  });
477
547
  describe('conditional compile', () => {
478
548
  it('works for upper case keywords', () => {
479
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
549
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
480
550
  sub main()
481
551
  #CONST someFlag = true
482
552
  #IF someFlag
@@ -491,7 +561,7 @@ describe('BrsFile', () => {
491
561
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
492
562
  });
493
563
  it('supports single-word #elseif and #endif', () => {
494
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
564
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
495
565
  sub main()
496
566
  #const someFlag = true
497
567
  #if someFlag
@@ -504,7 +574,7 @@ describe('BrsFile', () => {
504
574
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
505
575
  });
506
576
  it('supports multi-word #else if and #end if', () => {
507
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
577
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
508
578
  sub main()
509
579
  #const someFlag = true
510
580
  #if someFlag
@@ -517,17 +587,17 @@ describe('BrsFile', () => {
517
587
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
518
588
  });
519
589
  it('does not choke on invalid code inside a false conditional compile', () => {
520
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
590
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
521
591
  sub main()
522
592
  #if false
523
- non-commented code here should not cause parse errors
593
+ non - commented code here should not cause parse errors
524
594
  #end if
525
595
  end sub
526
596
  `);
527
597
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
528
598
  });
529
599
  it('detects syntax error in #if', () => {
530
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
600
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
531
601
  sub main()
532
602
  #if true1
533
603
  print "true"
@@ -539,7 +609,7 @@ describe('BrsFile', () => {
539
609
  ]);
540
610
  });
541
611
  it('detects syntax error in #const', () => {
542
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
612
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
543
613
  sub main()
544
614
  #if %
545
615
  print "true"
@@ -552,7 +622,7 @@ describe('BrsFile', () => {
552
622
  ]);
553
623
  });
554
624
  it('detects #const name using reserved word', () => {
555
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
625
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
556
626
  sub main()
557
627
  #const function = true
558
628
  end sub
@@ -563,7 +633,7 @@ describe('BrsFile', () => {
563
633
  ]);
564
634
  });
565
635
  it('detects syntax error in #const', () => {
566
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
636
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
567
637
  sub main()
568
638
  #const someConst = 123
569
639
  end sub
@@ -574,22 +644,22 @@ describe('BrsFile', () => {
574
644
  });
575
645
  });
576
646
  it('supports stop statement', () => {
577
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
647
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
578
648
  sub main()
579
- stop
649
+ stop
580
650
  end sub
581
651
  `);
582
652
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
583
653
  });
584
654
  it('supports single-line if statements', () => {
585
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
655
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
586
656
  sub main()
587
657
  if 1 < 2: return true: end if
588
658
  if 1 < 2: return true
589
659
  end if
590
660
  if false : print "true" : end if
591
661
  if true: print "8 worked": else if true: print "not run": else: print "not run": end if
592
- if true then : test = sub() : print "yes" : end sub : end if
662
+ if true then: test = sub() : print "yes" : end sub: end if
593
663
  end sub
594
664
  `);
595
665
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
@@ -674,7 +744,7 @@ describe('BrsFile', () => {
674
744
  print &he2
675
745
  print 1.2E+2
676
746
  print 2!
677
- print 12D-12
747
+ print 12D - 12
678
748
  print 2.3#
679
749
  print &hFEDCBA9876543210&
680
750
  print 9876543210&
@@ -741,11 +811,11 @@ describe('BrsFile', () => {
741
811
  it('supports variable names ending with type designators', () => {
742
812
  file.parse(`
743
813
  sub main()
744
- name$ = "bob"
745
- age% = 1
746
- height! = 5.5
747
- salary# = 9.87654321
748
- someHex& = 13
814
+ name$ = "bob"
815
+ age% = 1
816
+ height! = 5.5
817
+ salary# = 9.87654321
818
+ someHex& = 13
749
819
  end sub
750
820
  `);
751
821
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
@@ -755,7 +825,7 @@ describe('BrsFile', () => {
755
825
  sub main()
756
826
  if true then
757
827
  print "true"
758
- else if true then
828
+ else if true then
759
829
  print "also true"
760
830
  end if
761
831
  end sub
@@ -766,9 +836,9 @@ describe('BrsFile', () => {
766
836
  file.parse(`
767
837
  function GetObject()
768
838
  obj = {
769
- stop: function() as void
839
+ stop: function () as void
770
840
 
771
- end function
841
+ end function
772
842
  }
773
843
  return obj
774
844
  end function
@@ -779,10 +849,10 @@ describe('BrsFile', () => {
779
849
  file.parse(`
780
850
  function GetObject()
781
851
  obj = {
782
- run: function() as void
852
+ run: function () as void
783
853
 
784
854
  end function
785
- }
855
+ }
786
856
  return obj
787
857
  end function
788
858
  `);
@@ -810,7 +880,7 @@ describe('BrsFile', () => {
810
880
  function Main()
811
881
  promise = {
812
882
  then: sub()
813
- end sub
883
+ end sub
814
884
  }
815
885
  promise.then()
816
886
  end function
@@ -820,7 +890,7 @@ describe('BrsFile', () => {
820
890
  it('supports function as parameter type', () => {
821
891
  file.parse(`
822
892
  sub Main()
823
- doWork = function(callback as function)
893
+ doWork = function (callback as function)
824
894
  end function
825
895
  end sub
826
896
  `);
@@ -936,7 +1006,7 @@ describe('BrsFile', () => {
936
1006
  sub main()
937
1007
  end sub
938
1008
  import "file.brs"
939
- `);
1009
+ `);
940
1010
  program.validate();
941
1011
  (0, testHelpers_spec_1.expectDiagnostics)(program, [
942
1012
  DiagnosticMessages_1.DiagnosticMessages.importStatementMustBeDeclaredAtTopOfFile()
@@ -973,7 +1043,7 @@ describe('BrsFile', () => {
973
1043
  it('supports colons as separators in associative array properties', () => {
974
1044
  file.parse(`
975
1045
  sub Main()
976
- obj = {x:0 : y: 1}
1046
+ obj = { x: 0 : y: 1 }
977
1047
  end sub
978
1048
  `);
979
1049
  (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
@@ -991,8 +1061,8 @@ describe('BrsFile', () => {
991
1061
  });
992
1062
  it('succeeds when finding variables with the word "function" in them', () => {
993
1063
  file.parse(`
994
- function Test()
995
- typeCheckFunction = RBS_CMN_GetFunction(invalid, methodName)
1064
+ function Test()
1065
+ typeCheckFunction = RBS_CMN_GetFunction(invalid, methodName)
996
1066
  end function
997
1067
  `);
998
1068
  });
@@ -1003,14 +1073,14 @@ describe('BrsFile', () => {
1003
1073
  print "A"
1004
1074
  end function
1005
1075
 
1006
- function DoB()
1007
- print "B"
1008
- end function
1076
+ function DoB()
1077
+ print "B"
1078
+ end function
1009
1079
  `);
1010
1080
  (0, chai_1.expect)(file.callables[0].name).to.equal('DoA');
1011
1081
  (0, chai_1.expect)(file.callables[0].nameRange).to.eql(vscode_languageserver_1.Range.create(1, 25, 1, 28));
1012
1082
  (0, chai_1.expect)(file.callables[1].name).to.equal('DoB');
1013
- (0, chai_1.expect)(file.callables[1].nameRange).to.eql(vscode_languageserver_1.Range.create(5, 26, 5, 29));
1083
+ (0, chai_1.expect)(file.callables[1].nameRange).to.eql(vscode_languageserver_1.Range.create(5, 25, 5, 28));
1014
1084
  });
1015
1085
  it('throws an error if the file has already been parsed', () => {
1016
1086
  let file = new BrsFile_1.BrsFile('abspath', 'relpath', program);
@@ -1341,13 +1411,13 @@ describe('BrsFile', () => {
1341
1411
  it('finds variable type from other variable', () => {
1342
1412
  file.parse(`
1343
1413
  sub Main()
1344
- name = "bob"
1345
- nameCopy = name
1414
+ name = "bob"
1415
+ nameCopy = name
1346
1416
  end sub
1347
1417
  `);
1348
1418
  (0, testHelpers_spec_1.expectSymbolTableEquals)(file.parser.references.functionExpressions[0].symbolTable, [
1349
- ['name', new StringType_1.StringType(), util_1.default.createRange(2, 19, 2, 23)],
1350
- ['nameCopy', new StringType_1.StringType(), util_1.default.createRange(3, 19, 3, 27)]
1419
+ ['name', new StringType_1.StringType(), util_1.default.createRange(2, 20, 2, 24)],
1420
+ ['nameCopy', new StringType_1.StringType(), util_1.default.createRange(3, 20, 3, 28)]
1351
1421
  ]);
1352
1422
  });
1353
1423
  it('sets proper range for functions', () => {
@@ -1358,7 +1428,6 @@ describe('BrsFile', () => {
1358
1428
  end function
1359
1429
  end sub
1360
1430
  `);
1361
- (0, chai_1.expect)(file.parser.references.functionExpressions).to.be.length(2);
1362
1431
  (0, chai_1.expect)(file.parser.references.functionExpressions.map(x => x.range)).to.eql([
1363
1432
  util_1.default.createRange(1, 16, 5, 23),
1364
1433
  util_1.default.createRange(2, 30, 4, 32)
@@ -1367,10 +1436,10 @@ describe('BrsFile', () => {
1367
1436
  });
1368
1437
  describe('getHover', () => {
1369
1438
  it('works for param types', () => {
1370
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
1439
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
1371
1440
  sub DoSomething(name as string)
1372
1441
  name = 1
1373
- sayMyName = function(name as string)
1442
+ sayMyName = function (name as string)
1374
1443
  end function
1375
1444
  end sub
1376
1445
  `);
@@ -1385,19 +1454,19 @@ describe('BrsFile', () => {
1385
1454
  });
1386
1455
  //ignore this for now...it's not a huge deal
1387
1456
  it('does not match on keywords or data types', () => {
1388
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
1457
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
1389
1458
  sub Main(name as string)
1390
1459
  end sub
1391
- sub as()
1460
+ sub as ()
1392
1461
  end sub
1393
1462
  `);
1394
- //hover over the `as`
1463
+ //hover over the `as `
1395
1464
  (0, chai_1.expect)(file.getHover(vscode_languageserver_1.Position.create(1, 31))).not.to.exist;
1396
1465
  //hover over the `string`
1397
1466
  (0, chai_1.expect)(file.getHover(vscode_languageserver_1.Position.create(1, 36))).not.to.exist;
1398
1467
  });
1399
1468
  it('finds declared function', () => {
1400
- let file = program.setFile({ src: `${rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
1469
+ let file = program.setFile({ src: `${rootDir} /source/main.brs`, dest: 'source/main.brs' }, `
1401
1470
  function Main(count = 1)
1402
1471
  firstName = "bob"
1403
1472
  age = 21