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.
- package/bsconfig.schema.json +75 -0
- package/dist/BsConfig.d.ts +90 -5
- package/dist/CodeActionUtil.d.ts +17 -0
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +16 -12
- package/dist/CommentFlagProcessor.js +141 -59
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +32 -1
- package/dist/DiagnosticMessages.js +37 -2
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +15 -2
- package/dist/LanguageServer.js +100 -7
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +80 -1
- package/dist/Program.js +217 -2
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +1 -8
- package/dist/ProgramBuilder.js +31 -11
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +53 -7
- package/dist/Scope.js +28 -66
- package/dist/Scope.js.map +1 -1
- package/dist/ScopeNamespaceLookup.d.ts +73 -0
- package/dist/ScopeNamespaceLookup.js +240 -0
- package/dist/ScopeNamespaceLookup.js.map +1 -0
- package/dist/SymbolTable.d.ts +9 -2
- package/dist/SymbolTable.js +10 -5
- package/dist/SymbolTable.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +3 -1
- package/dist/bscPlugin/BscPlugin.js +8 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +38 -0
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +259 -18
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +360 -10
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js +29 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +74 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js +298 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +2 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +49 -4
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +55 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +316 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +69 -0
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +51 -1
- package/dist/diagnosticUtils.js +222 -1
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/files/BrsFile.d.ts +15 -0
- package/dist/files/BrsFile.js +92 -7
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +347 -3
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.js +2 -1
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +50 -0
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/interfaces.d.ts +66 -2
- package/dist/lexer/TokenKind.d.ts +8 -0
- package/dist/lexer/TokenKind.js +21 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/lsp/DocumentManager.spec.js +1 -1
- package/dist/lsp/DocumentManager.spec.js.map +1 -1
- package/dist/lsp/LspProject.d.ts +49 -1
- package/dist/lsp/Project.d.ts +33 -1
- package/dist/lsp/Project.js +107 -3
- package/dist/lsp/Project.js.map +1 -1
- package/dist/lsp/Project.spec.js +146 -9
- package/dist/lsp/Project.spec.js.map +1 -1
- package/dist/lsp/ProjectManager.d.ts +38 -2
- package/dist/lsp/ProjectManager.js +131 -5
- package/dist/lsp/ProjectManager.js.map +1 -1
- package/dist/lsp/ProjectManager.spec.js +272 -1
- package/dist/lsp/ProjectManager.spec.js.map +1 -1
- package/dist/lsp/worker/WorkerThreadProject.d.ts +27 -2
- package/dist/lsp/worker/WorkerThreadProject.js +16 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -1
- package/dist/lsp/worker/WorkerThreadProject.spec.js +2 -1
- package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +22 -0
- package/dist/parser/Parser.js +57 -16
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +239 -0
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +4 -2
- package/dist/parser/TranspileState.js +3 -3
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +47 -0
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +37 -0
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +49 -0
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -5
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Function.spec.js +2 -2
- package/dist/parser/tests/expression/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +218 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +2 -0
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/util.d.ts +26 -0
- package/dist/util.js +87 -8
- package/dist/util.js.map +1 -1
- 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.
|
|
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' +
|