brighterscript 0.71.1 → 0.72.1

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 (121) hide show
  1. package/bsconfig.schema.json +75 -0
  2. package/dist/BsConfig.d.ts +90 -5
  3. package/dist/CodeActionUtil.d.ts +17 -0
  4. package/dist/CodeActionUtil.js.map +1 -1
  5. package/dist/CommentFlagProcessor.d.ts +16 -12
  6. package/dist/CommentFlagProcessor.js +141 -59
  7. package/dist/CommentFlagProcessor.js.map +1 -1
  8. package/dist/DiagnosticMessages.d.ts +32 -1
  9. package/dist/DiagnosticMessages.js +37 -2
  10. package/dist/DiagnosticMessages.js.map +1 -1
  11. package/dist/LanguageServer.d.ts +15 -2
  12. package/dist/LanguageServer.js +100 -7
  13. package/dist/LanguageServer.js.map +1 -1
  14. package/dist/Program.d.ts +80 -1
  15. package/dist/Program.js +217 -2
  16. package/dist/Program.js.map +1 -1
  17. package/dist/ProgramBuilder.d.ts +1 -8
  18. package/dist/ProgramBuilder.js +31 -11
  19. package/dist/ProgramBuilder.js.map +1 -1
  20. package/dist/Scope.d.ts +53 -7
  21. package/dist/Scope.js +28 -66
  22. package/dist/Scope.js.map +1 -1
  23. package/dist/ScopeNamespaceLookup.d.ts +73 -0
  24. package/dist/ScopeNamespaceLookup.js +240 -0
  25. package/dist/ScopeNamespaceLookup.js.map +1 -0
  26. package/dist/SymbolTable.d.ts +9 -2
  27. package/dist/SymbolTable.js +10 -5
  28. package/dist/SymbolTable.js.map +1 -1
  29. package/dist/bscPlugin/BscPlugin.d.ts +3 -1
  30. package/dist/bscPlugin/BscPlugin.js +8 -0
  31. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  32. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +38 -0
  33. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +259 -18
  34. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  35. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +360 -10
  36. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  37. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
  38. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
  39. package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
  40. package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
  41. package/dist/bscPlugin/codeActions/codeActionHelpers.js +29 -0
  42. package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
  43. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
  44. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +74 -0
  45. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
  46. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.d.ts +1 -0
  47. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js +298 -0
  48. package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js.map +1 -0
  49. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +2 -0
  50. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +49 -4
  51. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
  52. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -0
  53. package/dist/bscPlugin/validation/BrsFileValidator.js +55 -0
  54. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  55. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +316 -0
  56. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  57. package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
  58. package/dist/bscPlugin/validation/ScopeValidator.js +69 -0
  59. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  60. package/dist/cli.js +13 -0
  61. package/dist/cli.js.map +1 -1
  62. package/dist/diagnosticUtils.d.ts +51 -1
  63. package/dist/diagnosticUtils.js +222 -1
  64. package/dist/diagnosticUtils.js.map +1 -1
  65. package/dist/files/BrsFile.d.ts +15 -0
  66. package/dist/files/BrsFile.js +92 -7
  67. package/dist/files/BrsFile.js.map +1 -1
  68. package/dist/files/BrsFile.spec.js +347 -3
  69. package/dist/files/BrsFile.spec.js.map +1 -1
  70. package/dist/files/XmlFile.js +2 -1
  71. package/dist/files/XmlFile.js.map +1 -1
  72. package/dist/files/XmlFile.spec.js +50 -0
  73. package/dist/files/XmlFile.spec.js.map +1 -1
  74. package/dist/interfaces.d.ts +66 -2
  75. package/dist/lexer/TokenKind.d.ts +8 -0
  76. package/dist/lexer/TokenKind.js +21 -1
  77. package/dist/lexer/TokenKind.js.map +1 -1
  78. package/dist/lsp/DocumentManager.spec.js +1 -1
  79. package/dist/lsp/DocumentManager.spec.js.map +1 -1
  80. package/dist/lsp/LspProject.d.ts +49 -1
  81. package/dist/lsp/Project.d.ts +33 -1
  82. package/dist/lsp/Project.js +107 -3
  83. package/dist/lsp/Project.js.map +1 -1
  84. package/dist/lsp/Project.spec.js +146 -9
  85. package/dist/lsp/Project.spec.js.map +1 -1
  86. package/dist/lsp/ProjectManager.d.ts +38 -2
  87. package/dist/lsp/ProjectManager.js +131 -5
  88. package/dist/lsp/ProjectManager.js.map +1 -1
  89. package/dist/lsp/ProjectManager.spec.js +272 -1
  90. package/dist/lsp/ProjectManager.spec.js.map +1 -1
  91. package/dist/lsp/worker/WorkerThreadProject.d.ts +27 -2
  92. package/dist/lsp/worker/WorkerThreadProject.js +16 -0
  93. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -1
  94. package/dist/lsp/worker/WorkerThreadProject.spec.js +2 -1
  95. package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -1
  96. package/dist/parser/Parser.d.ts +22 -0
  97. package/dist/parser/Parser.js +57 -16
  98. package/dist/parser/Parser.js.map +1 -1
  99. package/dist/parser/Parser.spec.js +239 -0
  100. package/dist/parser/Parser.spec.js.map +1 -1
  101. package/dist/parser/TranspileState.d.ts +4 -2
  102. package/dist/parser/TranspileState.js +3 -3
  103. package/dist/parser/TranspileState.js.map +1 -1
  104. package/dist/parser/tests/controlFlow/For.spec.js +47 -0
  105. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  106. package/dist/parser/tests/controlFlow/ForEach.spec.js +37 -0
  107. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  108. package/dist/parser/tests/controlFlow/While.spec.js +49 -0
  109. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  110. package/dist/parser/tests/expression/Call.spec.js +4 -5
  111. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  112. package/dist/parser/tests/expression/Function.spec.js +2 -2
  113. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  114. package/dist/parser/tests/statement/ConstStatement.spec.js +218 -1
  115. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  116. package/dist/parser/tests/statement/Enum.spec.js +2 -0
  117. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  118. package/dist/util.d.ts +26 -0
  119. package/dist/util.js +87 -8
  120. package/dist/util.js.map +1 -1
  121. package/package.json +4 -2
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const chai_config_spec_1 = require("../chai-config.spec");
4
+ const path = require("path");
4
5
  const sinonImport = require("sinon");
5
6
  const vscode_languageserver_1 = require("vscode-languageserver");
6
7
  const Program_1 = require("../Program");
@@ -71,6 +72,230 @@ describe('BrsFile', () => {
71
72
  (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
72
73
  });
73
74
  });
75
+ describe('line continuation', () => {
76
+ it('does not allow binary operator continuation in .brs files by default', () => {
77
+ program.setFile('source/main.brs', `
78
+ sub main()
79
+ result = 1 +
80
+ 2
81
+ end sub
82
+ `);
83
+ program.validate();
84
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
85
+ DiagnosticMessages_1.DiagnosticMessages.unexpectedToken('\n'),
86
+ DiagnosticMessages_1.DiagnosticMessages.expectedStatementOrFunctionCallButReceivedExpression()
87
+ ]);
88
+ });
89
+ it('allows binary operator continuation in .bs files', () => {
90
+ program.setFile('source/main.bs', `
91
+ sub main()
92
+ result = 1 +
93
+ 2
94
+ end sub
95
+ `);
96
+ program.validate();
97
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
98
+ });
99
+ it('transpiles binary operator continuation in .bs files to a single line', () => {
100
+ testTranspile(`
101
+ sub main()
102
+ result = 1 +
103
+ 2
104
+ end sub
105
+ `, `
106
+ sub main()
107
+ result = 1 + 2
108
+ end sub
109
+ `);
110
+ });
111
+ it('allows binary operator continuation in .brs files when allowBrighterScriptInBrightScript is enabled', () => {
112
+ program.options.allowBrighterScriptInBrightScript = true;
113
+ program.setFile('source/main.brs', `
114
+ sub main()
115
+ result = 1 +
116
+ 2
117
+ end sub
118
+ `);
119
+ program.validate();
120
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
121
+ });
122
+ it('does not allow multi-line function call args in .brs files by default', () => {
123
+ program.setFile('source/main.brs', `
124
+ sub main()
125
+ foo(
126
+ 1,
127
+ 2
128
+ )
129
+ end sub
130
+ sub foo(a, b)
131
+ end sub
132
+ `);
133
+ program.validate();
134
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
135
+ DiagnosticMessages_1.DiagnosticMessages.unexpectedToken('\n'),
136
+ DiagnosticMessages_1.DiagnosticMessages.expectedRightParenAfterFunctionCallArguments(),
137
+ DiagnosticMessages_1.DiagnosticMessages.expectedStatementOrFunctionCallButReceivedExpression()
138
+ ]);
139
+ });
140
+ it('allows multi-line array literals as function call args in .brs files by default', () => {
141
+ program.setFile('source/main.brs', `
142
+ sub main()
143
+ foo([
144
+ 1,
145
+ 2
146
+ ])
147
+ end sub
148
+ sub foo(arg)
149
+ end sub
150
+ `);
151
+ program.validate();
152
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
153
+ });
154
+ it('allows multi-line associative array literals as function call args in .brs files by default', () => {
155
+ program.setFile('source/main.brs', `
156
+ sub main()
157
+ foo({
158
+ name: "bob",
159
+ age: 1
160
+ })
161
+ end sub
162
+ sub foo(arg)
163
+ end sub
164
+ `);
165
+ program.validate();
166
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
167
+ });
168
+ it('allows multi-line function call args in .bs files', () => {
169
+ program.setFile('source/main.bs', `
170
+ sub main()
171
+ foo(
172
+ 1,
173
+ 2
174
+ )
175
+ end sub
176
+ sub foo(a, b)
177
+ end sub
178
+ `);
179
+ program.validate();
180
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
181
+ });
182
+ it('transpiles multi-line function call args in .bs files to a single line', () => {
183
+ testTranspile(`
184
+ sub main()
185
+ foo(
186
+ 1,
187
+ 2
188
+ )
189
+ end sub
190
+
191
+ sub foo(a, b)
192
+ end sub
193
+ `, `
194
+ sub main()
195
+ foo(1, 2)
196
+ end sub
197
+
198
+ sub foo(a, b)
199
+ end sub
200
+ `);
201
+ });
202
+ it('allows multi-line function call args in .brs files when allowBrighterScriptInBrightScript is enabled', () => {
203
+ program.options.allowBrighterScriptInBrightScript = true;
204
+ program.setFile('source/main.brs', `
205
+ sub main()
206
+ foo(
207
+ 1,
208
+ 2
209
+ )
210
+ end sub
211
+ sub foo(a, b)
212
+ end sub
213
+ `);
214
+ program.validate();
215
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
216
+ });
217
+ it('allows binary operator continuation in .brs files when minFirmwareVersion is 15.3', () => {
218
+ program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, minFirmwareVersion: '15.3' });
219
+ program.setFile('source/main.brs', `
220
+ sub main()
221
+ result = 1 +
222
+ 2
223
+ end sub
224
+ `);
225
+ program.validate();
226
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
227
+ });
228
+ it('allows binary operator continuation in .brs files when minFirmwareVersion is above 15.3', () => {
229
+ program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, minFirmwareVersion: '16.0.0' });
230
+ program.setFile('source/main.brs', `
231
+ sub main()
232
+ result = 1 +
233
+ 2
234
+ end sub
235
+ `);
236
+ program.validate();
237
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
238
+ });
239
+ it('does not allow binary operator continuation in .brs files when minFirmwareVersion is below 15.3', () => {
240
+ program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, minFirmwareVersion: '11.0.0' });
241
+ program.setFile('source/main.brs', `
242
+ sub main()
243
+ result = 1 +
244
+ 2
245
+ end sub
246
+ `);
247
+ program.validate();
248
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
249
+ DiagnosticMessages_1.DiagnosticMessages.unexpectedToken('\n'),
250
+ DiagnosticMessages_1.DiagnosticMessages.expectedStatementOrFunctionCallButReceivedExpression()
251
+ ]);
252
+ });
253
+ it('allows multi-line function call args in .brs files when minFirmwareVersion is 15.3', () => {
254
+ program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, minFirmwareVersion: '15.3.0' });
255
+ program.setFile('source/main.brs', `
256
+ sub main()
257
+ foo(
258
+ 1,
259
+ 2
260
+ )
261
+ end sub
262
+ sub foo(a, b)
263
+ end sub
264
+ `);
265
+ program.validate();
266
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
267
+ });
268
+ it('does not allow multi-line function call args in .brs files when minFirmwareVersion is below 15.3', () => {
269
+ program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, minFirmwareVersion: '15.2.9' });
270
+ program.setFile('source/main.brs', `
271
+ sub main()
272
+ foo(
273
+ 1,
274
+ 2
275
+ )
276
+ end sub
277
+ sub foo(a, b)
278
+ end sub
279
+ `);
280
+ program.validate();
281
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [
282
+ DiagnosticMessages_1.DiagnosticMessages.unexpectedToken('\n'),
283
+ DiagnosticMessages_1.DiagnosticMessages.expectedRightParenAfterFunctionCallArguments(),
284
+ DiagnosticMessages_1.DiagnosticMessages.expectedStatementOrFunctionCallButReceivedExpression()
285
+ ]);
286
+ });
287
+ it('always allows binary operator continuation in .bs files regardless of minFirmwareVersion', () => {
288
+ program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, minFirmwareVersion: '10.0.0' });
289
+ program.setFile('source/main.bs', `
290
+ sub main()
291
+ result = 1 +
292
+ 2
293
+ end sub
294
+ `);
295
+ program.validate();
296
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
297
+ });
298
+ });
74
299
  it('does not show "missing function" diagnostic for `call().dottedGet` as a statement', () => {
75
300
  program.setFile(`source/main.brs`, `
76
301
  sub main()
@@ -686,6 +911,116 @@ describe('BrsFile', () => {
686
911
  (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
687
912
  });
688
913
  });
914
+ describe('bs:disable / bs:enable block directives', () => {
915
+ it('a bare bs:disable with no closing bs:enable suppresses every diagnostic in the file', () => {
916
+ let file = program.setFile({ src: `${testHelpers_spec_2.rootDir}/source/main.brs`, dest: 'source/main.brs' }, `
917
+ 'bs:disable
918
+ sub Main()
919
+ name = "bob
920
+ end sub
921
+ `);
922
+ const blockFlag = file.commentFlags.find(flag => flag.codes === null && flag.affectedRange.end.line === Number.MAX_SAFE_INTEGER);
923
+ (0, chai_config_spec_1.expect)(blockFlag, 'a bs:disable flag should be emitted').to.exist;
924
+ program.validate();
925
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
926
+ });
927
+ it('suppresses only the listed codes', () => {
928
+ program.setFile('source/main.brs', `
929
+ 'bs:disable: 1083
930
+ sub Main()
931
+ name = "bob
932
+ end sub
933
+ `);
934
+ program.validate();
935
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
936
+ });
937
+ it('does not suppress unlisted codes', () => {
938
+ program.setFile('source/main.brs', `
939
+ 'bs:disable: 9999
940
+ sub Main()
941
+ name = "bob
942
+ end sub
943
+ `);
944
+ program.validate();
945
+ (0, testHelpers_spec_1.expectHasDiagnostics)(program);
946
+ });
947
+ it('honors a directive that follows other comment-only lines and blank lines', () => {
948
+ program.setFile('source/main.brs', `
949
+ 'leading comment
950
+ 'bs:disable
951
+ sub Main()
952
+ name = "bob
953
+ end sub
954
+ `);
955
+ program.validate();
956
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
957
+ });
958
+ it('a bs:enable closes the bs:disable block, leaving later code un-suppressed', () => {
959
+ program.setFile('source/main.brs', `
960
+ 'bs:disable
961
+ 'bs:enable
962
+ sub Main()
963
+ name = "bob
964
+ end sub
965
+ `);
966
+ program.validate();
967
+ (0, testHelpers_spec_1.expectHasDiagnostics)(program);
968
+ });
969
+ it('bs:enable: <code> after a bare bs:disable carves out an exception for that code', () => {
970
+ program.setFile('source/main.brs', `
971
+ 'bs:disable
972
+ 'bs:enable: 1083
973
+ sub Main()
974
+ name = "bob
975
+ end sub
976
+ `);
977
+ //code 1083 is now re-enabled, so the diagnostic surfaces
978
+ program.validate();
979
+ (0, testHelpers_spec_1.expectHasDiagnostics)(program);
980
+ });
981
+ });
982
+ describe('unknown diagnostic codes', () => {
983
+ it('reports an unknown-code warning for bs:disable-next-line: <unknown>', () => {
984
+ program.setFile('source/main.brs', `
985
+ sub main()
986
+ 'bs:disable-next-line: 999999
987
+ print "hi"
988
+ end sub
989
+ `);
990
+ program.validate();
991
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.unknownDiagnosticCode(999999))]);
992
+ });
993
+ it('reports an unknown-code warning for bs:disable: <unknown> (block directive)', () => {
994
+ program.setFile('source/main.brs', `
995
+ 'bs:disable: 999999
996
+ sub main()
997
+ end sub
998
+ `);
999
+ program.validate();
1000
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.unknownDiagnosticCode(999999))]);
1001
+ });
1002
+ it('reports an unknown-code warning for bs:enable: <unknown>', () => {
1003
+ program.setFile('source/main.brs', `
1004
+ 'bs:disable
1005
+ 'bs:enable: 999999
1006
+ sub main()
1007
+ end sub
1008
+ `);
1009
+ program.validate();
1010
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.unknownDiagnosticCode(999999))]);
1011
+ });
1012
+ it('still suppresses the valid code when an unknown code is mixed in', () => {
1013
+ program.setFile('source/main.brs', `
1014
+ sub Main()
1015
+ 'bs:disable-next-line: 1083 999999
1016
+ name = "bob
1017
+ end sub
1018
+ `);
1019
+ program.validate();
1020
+ //the unterminated string (1083) is suppressed; 999999 is still reported as unknown
1021
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.unknownDiagnosticCode(999999))]);
1022
+ });
1023
+ });
689
1024
  });
690
1025
  describe('parse', () => {
691
1026
  it('allows class as parameter type', () => {
@@ -1401,10 +1736,8 @@ describe('BrsFile', () => {
1401
1736
  `);
1402
1737
  (0, testHelpers_spec_1.expectDiagnostics)(file.parser.diagnostics, [
1403
1738
  DiagnosticMessages_1.DiagnosticMessages.expectedRightParenAfterFunctionCallArguments(),
1404
- DiagnosticMessages_1.DiagnosticMessages.expectedNewlineOrColon(),
1405
- DiagnosticMessages_1.DiagnosticMessages.unexpectedToken('end function'),
1406
1739
  DiagnosticMessages_1.DiagnosticMessages.expectedRightParenAfterFunctionCallArguments(),
1407
- DiagnosticMessages_1.DiagnosticMessages.expectedNewlineOrColon()
1740
+ DiagnosticMessages_1.DiagnosticMessages.unexpectedToken('\n')
1408
1741
  ]);
1409
1742
  (0, chai_config_spec_1.expect)(file.functionCalls.length).to.equal(2);
1410
1743
  (0, chai_config_spec_1.expect)(file.functionCalls[0].range).to.eql(vscode_languageserver_1.Range.create(2, 20, 2, 27));
@@ -2884,6 +3217,17 @@ describe('BrsFile', () => {
2884
3217
  `);
2885
3218
  (0, chai_config_spec_1.expect)(file.transpile().map.toJSON().file).to.eql('main.brs');
2886
3219
  });
3220
+ it('sourcemap sources array contains absolute path by default', () => {
3221
+ program.options.sourceMap = true;
3222
+ const file = program.setFile('source/main.bs', `
3223
+ sub main()
3224
+ end sub
3225
+ `);
3226
+ const map = file.transpile().map.toJSON();
3227
+ (0, chai_config_spec_1.expect)(map.sources).to.have.lengthOf(1);
3228
+ (0, chai_config_spec_1.expect)(path.isAbsolute(map.sources[0])).to.be.true;
3229
+ (0, chai_config_spec_1.expect)((0, util_1.standardizePath) `${map.sources[0]}`).to.eql((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/source/main.bs`);
3230
+ });
2887
3231
  it('handles sourcemap edge case', async () => {
2888
3232
  let source = 'sub main()\n' +
2889
3233
  '\n' +