brighterscript 0.44.0 → 0.45.2
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/CHANGELOG.md +26 -0
- package/dist/Cache.d.ts +2 -7
- package/dist/Cache.js +4 -13
- package/dist/Cache.js.map +1 -1
- package/dist/DependencyGraph.js +5 -4
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +21 -1
- package/dist/DiagnosticMessages.js +20 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.js +3 -3
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +21 -7
- package/dist/Program.js +14 -10
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +3 -3
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +13 -7
- package/dist/Scope.js +24 -1
- package/dist/Scope.js.map +1 -1
- package/dist/XmlScope.d.ts +3 -3
- package/dist/astUtils/AstEditor.d.ts +6 -0
- package/dist/astUtils/AstEditor.js +10 -0
- package/dist/astUtils/AstEditor.js.map +1 -1
- package/dist/astUtils/AstEditor.spec.js +37 -0
- package/dist/astUtils/AstEditor.spec.js.map +1 -1
- package/dist/astUtils/creators.d.ts +7 -3
- package/dist/astUtils/creators.js +86 -5
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +3 -1
- package/dist/astUtils/reflection.js +10 -2
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +3 -2
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +3 -1
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +6 -6
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +4 -1
- package/dist/bscPlugin/BscPlugin.js +16 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +16 -16
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +36 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +30 -2
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +8 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +36 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +9 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +66 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +94 -0
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
- package/dist/diagnosticUtils.js +3 -3
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +47 -47
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +9 -1
- package/dist/files/BrsFile.js +111 -29
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +164 -94
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +5 -5
- package/dist/files/XmlFile.js +3 -3
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +80 -80
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +23 -23
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/interfaces.d.ts +5 -5
- package/dist/lexer/Lexer.spec.js +8 -0
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +2 -0
- package/dist/lexer/TokenKind.js +5 -0
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/Expression.d.ts +0 -1
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +10 -1
- package/dist/parser/Parser.js +90 -4
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/SGParser.spec.js +1 -1
- package/dist/parser/SGParser.spec.js.map +1 -1
- package/dist/parser/Statement.d.ts +52 -0
- package/dist/parser/Statement.js +159 -15
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +1 -1
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +1 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
- package/dist/parser/tests/statement/Enum.spec.js +774 -0
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
- package/dist/parser/tests/statement/For.spec.d.ts +1 -0
- package/dist/parser/tests/statement/For.spec.js +46 -0
- package/dist/parser/tests/statement/For.spec.js.map +1 -0
- package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
- package/dist/parser/tests/statement/ForEach.spec.js +37 -0
- package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/util.d.ts +10 -0
- package/dist/util.js +37 -0
- package/dist/util.js.map +1 -1
- package/package.json +2 -3
|
@@ -46,7 +46,7 @@ describe('XmlFile', () => {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
-
file = program.
|
|
49
|
+
file = program.setFile('components/ChildScene.xml', (0, testHelpers_spec_1.trim) `
|
|
50
50
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
51
51
|
<component name="ChildScene" extends="Scene">
|
|
52
52
|
</component>
|
|
@@ -83,7 +83,7 @@ describe('XmlFile', () => {
|
|
|
83
83
|
`);
|
|
84
84
|
});
|
|
85
85
|
it('supports importing BrighterScript files', () => {
|
|
86
|
-
file = program.
|
|
86
|
+
file = program.setFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, (0, testHelpers_spec_1.trim) `
|
|
87
87
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
88
88
|
<component name="ChildScene" extends="Scene">
|
|
89
89
|
<script type="text/brightscript" uri="ChildScene.bs" />
|
|
@@ -93,7 +93,7 @@ describe('XmlFile', () => {
|
|
|
93
93
|
});
|
|
94
94
|
it('does not include commented-out script imports', () => {
|
|
95
95
|
var _a, _b;
|
|
96
|
-
file = program.
|
|
96
|
+
file = program.setFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, (0, testHelpers_spec_1.trim) `
|
|
97
97
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
98
98
|
<component name="ChildScene" extends="Scene">
|
|
99
99
|
<script type="text/brightscript" uri="ChildScene.brs" />
|
|
@@ -167,7 +167,7 @@ describe('XmlFile', () => {
|
|
|
167
167
|
(0, chai_1.expect)(file.diagnostics[1]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpectedToo')), { range: vscode_languageserver_1.Range.create(5, 5, 5, 18) }));
|
|
168
168
|
});
|
|
169
169
|
it('Adds error when no component is declared in xml', () => {
|
|
170
|
-
program.
|
|
170
|
+
program.setFile('components/comp.xml', '<script type="text/brightscript" uri="ChildScene.brs" />');
|
|
171
171
|
program.validate();
|
|
172
172
|
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
173
173
|
Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('script')), { range: vscode_languageserver_1.Range.create(0, 1, 0, 7) }),
|
|
@@ -175,7 +175,7 @@ describe('XmlFile', () => {
|
|
|
175
175
|
]);
|
|
176
176
|
});
|
|
177
177
|
it('adds error when component does not declare a name', () => {
|
|
178
|
-
file = program.
|
|
178
|
+
file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
179
179
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
180
180
|
<component extends="ParentScene">
|
|
181
181
|
<script type="text/brightscript" uri="ChildScene.brs" />
|
|
@@ -189,7 +189,7 @@ describe('XmlFile', () => {
|
|
|
189
189
|
});
|
|
190
190
|
});
|
|
191
191
|
it('catches xml parse errors', () => {
|
|
192
|
-
file = program.
|
|
192
|
+
file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
193
193
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
194
194
|
<component 1extends="ParentScene">
|
|
195
195
|
</component>
|
|
@@ -230,7 +230,7 @@ describe('XmlFile', () => {
|
|
|
230
230
|
}
|
|
231
231
|
});
|
|
232
232
|
it('resolves relative paths', () => {
|
|
233
|
-
file = program.
|
|
233
|
+
file = program.setFile({
|
|
234
234
|
src: `${rootDir}/components/comp1.xml`,
|
|
235
235
|
dest: 'components/comp1.xml'
|
|
236
236
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -247,7 +247,7 @@ describe('XmlFile', () => {
|
|
|
247
247
|
});
|
|
248
248
|
it('finds correct position for empty uri in script tag', () => {
|
|
249
249
|
var _a;
|
|
250
|
-
file = program.
|
|
250
|
+
file = program.setFile({
|
|
251
251
|
src: `${rootDir}/components/comp1.xml`,
|
|
252
252
|
dest: 'components/comp1.xml'
|
|
253
253
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -262,7 +262,7 @@ describe('XmlFile', () => {
|
|
|
262
262
|
});
|
|
263
263
|
describe('doesReferenceFile', () => {
|
|
264
264
|
it('compares case insensitive', () => {
|
|
265
|
-
let xmlFile = program.
|
|
265
|
+
let xmlFile = program.setFile({
|
|
266
266
|
src: `${rootDir}/components/comp1.xml`,
|
|
267
267
|
dest: 'components/comp1.xml'
|
|
268
268
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -271,7 +271,7 @@ describe('XmlFile', () => {
|
|
|
271
271
|
<script type="text/brightscript" uri="HeroGrid.brs" />
|
|
272
272
|
</component>
|
|
273
273
|
`);
|
|
274
|
-
let brsFile = program.
|
|
274
|
+
let brsFile = program.setFile({
|
|
275
275
|
src: `${rootDir}/components/HEROGRID.brs`,
|
|
276
276
|
dest: `components/HEROGRID.brs`
|
|
277
277
|
}, ``);
|
|
@@ -280,17 +280,17 @@ describe('XmlFile', () => {
|
|
|
280
280
|
});
|
|
281
281
|
describe('autoImportComponentScript', () => {
|
|
282
282
|
it('is not enabled by default', () => {
|
|
283
|
-
program.
|
|
283
|
+
program.setFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, (0, testHelpers_spec_1.trim) `
|
|
284
284
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
285
285
|
<component name="ParentScene" extends="GrandparentScene">
|
|
286
286
|
<script type="text/brightscript" uri="./lib.brs" />
|
|
287
287
|
</component>
|
|
288
288
|
`);
|
|
289
|
-
program.
|
|
289
|
+
program.setFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
|
|
290
290
|
function libFunc()
|
|
291
291
|
end function
|
|
292
292
|
`);
|
|
293
|
-
program.
|
|
293
|
+
program.setFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
|
|
294
294
|
function init()
|
|
295
295
|
libFunc()
|
|
296
296
|
end function
|
|
@@ -305,17 +305,17 @@ describe('XmlFile', () => {
|
|
|
305
305
|
rootDir: rootDir,
|
|
306
306
|
autoImportComponentScript: true
|
|
307
307
|
});
|
|
308
|
-
program.
|
|
308
|
+
program.setFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, (0, testHelpers_spec_1.trim) `
|
|
309
309
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
310
310
|
<component name="ParentScene" extends="GrandparentScene">
|
|
311
311
|
<script type="text/brightscript" uri="./lib.brs" />
|
|
312
312
|
</component>
|
|
313
313
|
`);
|
|
314
|
-
program.
|
|
314
|
+
program.setFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
|
|
315
315
|
function libFunc()
|
|
316
316
|
end function
|
|
317
317
|
`);
|
|
318
|
-
program.
|
|
318
|
+
program.setFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
|
|
319
319
|
function init()
|
|
320
320
|
libFunc()
|
|
321
321
|
end function
|
|
@@ -345,13 +345,13 @@ describe('XmlFile', () => {
|
|
|
345
345
|
});
|
|
346
346
|
});
|
|
347
347
|
it('returns empty set when out of range', () => {
|
|
348
|
-
program.
|
|
348
|
+
program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
|
|
349
349
|
(0, chai_1.expect)(file.getCompletions(vscode_languageserver_1.Position.create(99, 99))).to.be.empty;
|
|
350
350
|
});
|
|
351
351
|
//TODO - refine this test once cdata scripts are supported
|
|
352
352
|
it('prevents scope completions entirely', () => {
|
|
353
|
-
program.
|
|
354
|
-
let xmlFile = program.
|
|
353
|
+
program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
|
|
354
|
+
let xmlFile = program.setFile({ src: `${rootDir}/components/Component1.xml`, dest: 'components/component1.xml' }, (0, testHelpers_spec_1.trim) `
|
|
355
355
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
356
356
|
<component name="ParentScene" extends="GrandparentScene">
|
|
357
357
|
<script type="text/brightscript" uri="./Component1.brs" />
|
|
@@ -362,7 +362,7 @@ describe('XmlFile', () => {
|
|
|
362
362
|
});
|
|
363
363
|
describe('getAllDependencies', () => {
|
|
364
364
|
it('returns own imports', () => {
|
|
365
|
-
file = program.
|
|
365
|
+
file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
366
366
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
367
367
|
<component name="ChildScene" extends="BaseScene">
|
|
368
368
|
<script type="text/brightscript" uri="pkg:/source/lib.brs" />
|
|
@@ -375,7 +375,7 @@ describe('XmlFile', () => {
|
|
|
375
375
|
});
|
|
376
376
|
});
|
|
377
377
|
it('invalidates dependent scopes on change', () => {
|
|
378
|
-
let xmlFile = program.
|
|
378
|
+
let xmlFile = program.setFile({
|
|
379
379
|
src: `${rootDir}/components/comp1.xml`,
|
|
380
380
|
dest: `components/comp1.xml`
|
|
381
381
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -389,7 +389,7 @@ describe('XmlFile', () => {
|
|
|
389
389
|
//scope should be validated
|
|
390
390
|
(0, chai_1.expect)(scope.isValidated);
|
|
391
391
|
//add lib1
|
|
392
|
-
program.
|
|
392
|
+
program.setFile({
|
|
393
393
|
src: `${rootDir}/source/lib.bs`,
|
|
394
394
|
dest: `source/lib.bs`
|
|
395
395
|
}, ``);
|
|
@@ -398,7 +398,7 @@ describe('XmlFile', () => {
|
|
|
398
398
|
program.validate();
|
|
399
399
|
(0, chai_1.expect)(scope.isValidated).to.be.true;
|
|
400
400
|
//update lib1 to include an import
|
|
401
|
-
program.
|
|
401
|
+
program.setFile({
|
|
402
402
|
src: `${rootDir}/source/lib.bs`,
|
|
403
403
|
dest: `source/lib.bs`
|
|
404
404
|
}, `
|
|
@@ -409,7 +409,7 @@ describe('XmlFile', () => {
|
|
|
409
409
|
program.validate();
|
|
410
410
|
(0, chai_1.expect)(scope.isValidated).to.be.true;
|
|
411
411
|
//add the lib2 imported from lib
|
|
412
|
-
program.
|
|
412
|
+
program.setFile({
|
|
413
413
|
src: `${rootDir}/source/lib2.bs`,
|
|
414
414
|
dest: `source/lib2.bs`
|
|
415
415
|
}, ``);
|
|
@@ -421,7 +421,7 @@ describe('XmlFile', () => {
|
|
|
421
421
|
(0, chai_1.expect)(scope.isValidated).to.be.false;
|
|
422
422
|
});
|
|
423
423
|
it('does not invalidate unrelated scopes on change', () => {
|
|
424
|
-
let xmlFile1 = program.
|
|
424
|
+
let xmlFile1 = program.setFile({
|
|
425
425
|
src: `${rootDir}/components/comp1.xml`,
|
|
426
426
|
dest: `components/comp1.xml`
|
|
427
427
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -430,7 +430,7 @@ describe('XmlFile', () => {
|
|
|
430
430
|
<script type="text/brightscript" uri="pkg:/source/lib.brs" />
|
|
431
431
|
</component>
|
|
432
432
|
`);
|
|
433
|
-
let xmlFile2 = program.
|
|
433
|
+
let xmlFile2 = program.setFile({
|
|
434
434
|
src: `${rootDir}/components/comp2.xml`,
|
|
435
435
|
dest: `components/comp2.xml`
|
|
436
436
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -443,7 +443,7 @@ describe('XmlFile', () => {
|
|
|
443
443
|
(0, chai_1.expect)(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.true;
|
|
444
444
|
(0, chai_1.expect)(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
|
|
445
445
|
//add the lib file
|
|
446
|
-
program.
|
|
446
|
+
program.setFile({
|
|
447
447
|
src: `${rootDir}/source/lib.brs`,
|
|
448
448
|
dest: `source/lib.brs`
|
|
449
449
|
}, ``);
|
|
@@ -461,7 +461,7 @@ describe('XmlFile', () => {
|
|
|
461
461
|
});
|
|
462
462
|
describe('component extends', () => {
|
|
463
463
|
it('works for single-line', () => {
|
|
464
|
-
file = program.
|
|
464
|
+
file = program.setFile({
|
|
465
465
|
src: `${rootDir}/components/comp1.xml`,
|
|
466
466
|
dest: `components/comp1.xml`
|
|
467
467
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -472,7 +472,7 @@ describe('XmlFile', () => {
|
|
|
472
472
|
(0, chai_1.expect)(file.parentComponentName.range).to.eql(vscode_languageserver_1.Range.create(1, 38, 1, 47));
|
|
473
473
|
});
|
|
474
474
|
it('works for multi-line', () => {
|
|
475
|
-
file = program.
|
|
475
|
+
file = program.setFile({
|
|
476
476
|
src: `${rootDir}/components/comp1.xml`,
|
|
477
477
|
dest: `components/comp1.xml`
|
|
478
478
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -484,7 +484,7 @@ describe('XmlFile', () => {
|
|
|
484
484
|
(0, chai_1.expect)(file.parentComponentName.range).to.eql(vscode_languageserver_1.Range.create(2, 13, 2, 22));
|
|
485
485
|
});
|
|
486
486
|
it('does not throw when unable to find extends', () => {
|
|
487
|
-
file = program.
|
|
487
|
+
file = program.setFile({
|
|
488
488
|
src: `${rootDir}/components/comp1.xml`,
|
|
489
489
|
dest: `components/comp1.xml`
|
|
490
490
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -495,7 +495,7 @@ describe('XmlFile', () => {
|
|
|
495
495
|
(0, chai_1.expect)(file.parentComponentName).to.not.exist;
|
|
496
496
|
});
|
|
497
497
|
it('adds warning when no "extends" attribute is found', () => {
|
|
498
|
-
program.
|
|
498
|
+
program.setFile({
|
|
499
499
|
src: `${rootDir}/components/comp1.xml`,
|
|
500
500
|
dest: `components/comp1.xml`
|
|
501
501
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -514,11 +514,11 @@ describe('XmlFile', () => {
|
|
|
514
514
|
autoImportComponentScript: true,
|
|
515
515
|
rootDir: rootDir
|
|
516
516
|
});
|
|
517
|
-
program.
|
|
517
|
+
program.setFile({
|
|
518
518
|
src: `${rootDir}/components/SimpleScene.bs`,
|
|
519
519
|
dest: `components/SimpleScene.bs`
|
|
520
520
|
}, '');
|
|
521
|
-
program.
|
|
521
|
+
program.setFile({
|
|
522
522
|
src: `${rootDir}/components/SimpleScene.xml`,
|
|
523
523
|
dest: `components/SimpleScene.xml`
|
|
524
524
|
}, (0, testHelpers_spec_1.trim) `
|
|
@@ -573,7 +573,7 @@ describe('XmlFile', () => {
|
|
|
573
573
|
file.needsTranspiled = true;
|
|
574
574
|
}
|
|
575
575
|
});
|
|
576
|
-
const file = program.
|
|
576
|
+
const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
577
577
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
578
578
|
<component name="Comp" extends="Group">
|
|
579
579
|
</component>
|
|
@@ -606,8 +606,8 @@ describe('XmlFile', () => {
|
|
|
606
606
|
`, 'none', 'components/child.xml');
|
|
607
607
|
});
|
|
608
608
|
it('does not include bslib script if already there from ropm', () => {
|
|
609
|
-
program.
|
|
610
|
-
program.
|
|
609
|
+
program.setFile('source/roku_modules/bslib/bslib.brs', ``);
|
|
610
|
+
program.setFile('source/lib.bs', ``);
|
|
611
611
|
//include a bs file to force transpile for the xml file
|
|
612
612
|
testTranspile((0, testHelpers_spec_1.trim) `
|
|
613
613
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
@@ -624,7 +624,7 @@ describe('XmlFile', () => {
|
|
|
624
624
|
`, 'none', 'components/child.xml');
|
|
625
625
|
});
|
|
626
626
|
it('does not transpile xml file when bslib script is already present', () => {
|
|
627
|
-
const file = program.
|
|
627
|
+
const file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
628
628
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
629
629
|
<component name="Comp" extends="Group">
|
|
630
630
|
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
@@ -638,8 +638,8 @@ describe('XmlFile', () => {
|
|
|
638
638
|
* There was a bug that would incorrectly replace one of the script paths on the second or third transpile, so this test verifies it doesn't do that anymore
|
|
639
639
|
*/
|
|
640
640
|
it('does not mangle scripts on multiple transpile', async () => {
|
|
641
|
-
program.
|
|
642
|
-
program.
|
|
641
|
+
program.setFile('components/SimpleScene.bs', ``);
|
|
642
|
+
program.setFile(`components/SimpleScene.xml`, (0, testHelpers_spec_1.trim) `
|
|
643
643
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
644
644
|
<component name="SimpleScene" extends="Scene">
|
|
645
645
|
<script type="text/brightscript" uri="SimpleScene.bs" />
|
|
@@ -660,7 +660,7 @@ describe('XmlFile', () => {
|
|
|
660
660
|
(0, chai_1.expect)(fsExtra.readFileSync(`${stagingDir}/components/SimpleScene.xml`).toString()).to.eql(expected);
|
|
661
661
|
});
|
|
662
662
|
it('keeps all content of the XML', () => {
|
|
663
|
-
program.
|
|
663
|
+
program.setFile(`components/SimpleScene.bs`, `
|
|
664
664
|
sub b()
|
|
665
665
|
end sub
|
|
666
666
|
`);
|
|
@@ -700,10 +700,10 @@ describe('XmlFile', () => {
|
|
|
700
700
|
`, 'none', 'components/SimpleScene.xml');
|
|
701
701
|
});
|
|
702
702
|
it('changes file extensions from bs to brs', () => {
|
|
703
|
-
program.
|
|
703
|
+
program.setFile(`components/SimpleScene.bs`, `
|
|
704
704
|
import "pkg:/source/lib.bs"
|
|
705
705
|
`);
|
|
706
|
-
program.
|
|
706
|
+
program.setFile('source/lib.bs', ``);
|
|
707
707
|
testTranspile((0, testHelpers_spec_1.trim) `
|
|
708
708
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
709
709
|
<component name="SimpleScene" extends="Scene">
|
|
@@ -719,7 +719,7 @@ describe('XmlFile', () => {
|
|
|
719
719
|
`, 'none', 'components/SimpleScene.xml');
|
|
720
720
|
});
|
|
721
721
|
it('does not fail on missing script type', () => {
|
|
722
|
-
program.
|
|
722
|
+
program.setFile('components/SimpleScene.brs', '');
|
|
723
723
|
testTranspile((0, testHelpers_spec_1.trim) `
|
|
724
724
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
725
725
|
<component name="SimpleScene" extends="Scene">
|
|
@@ -734,7 +734,7 @@ describe('XmlFile', () => {
|
|
|
734
734
|
`, null, 'components/comp.xml');
|
|
735
735
|
});
|
|
736
736
|
it('returns the XML unmodified if needsTranspiled is false', () => {
|
|
737
|
-
let file = program.
|
|
737
|
+
let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
|
|
738
738
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
739
739
|
<!-- should stay as-is -->
|
|
740
740
|
<component name="SimpleScene" extends="Scene" >
|
|
@@ -752,7 +752,7 @@ describe('XmlFile', () => {
|
|
|
752
752
|
`);
|
|
753
753
|
});
|
|
754
754
|
it('needsTranspiled is false by default', () => {
|
|
755
|
-
let file = program.
|
|
755
|
+
let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
|
|
756
756
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
757
757
|
<component name="SimpleScene" extends="Scene" >
|
|
758
758
|
</component>
|
|
@@ -760,7 +760,7 @@ describe('XmlFile', () => {
|
|
|
760
760
|
(0, chai_1.expect)(file.needsTranspiled).to.be.false;
|
|
761
761
|
});
|
|
762
762
|
it('needsTranspiled is true if an import is brighterscript', () => {
|
|
763
|
-
let file = program.
|
|
763
|
+
let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
|
|
764
764
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
765
765
|
<component name="SimpleScene" extends="Scene" >
|
|
766
766
|
<script type="text/brightscript" uri="SimpleScene.bs"/>
|
|
@@ -770,7 +770,7 @@ describe('XmlFile', () => {
|
|
|
770
770
|
});
|
|
771
771
|
it('simple source mapping includes sourcemap reference', () => {
|
|
772
772
|
program.options.sourceMap = true;
|
|
773
|
-
let file = program.
|
|
773
|
+
let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
|
|
774
774
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
775
775
|
<component name="SimpleScene" extends="Scene">
|
|
776
776
|
</component>
|
|
@@ -782,7 +782,7 @@ describe('XmlFile', () => {
|
|
|
782
782
|
});
|
|
783
783
|
it('AST-based source mapping includes sourcemap reference', () => {
|
|
784
784
|
program.options.sourceMap = true;
|
|
785
|
-
let file = program.
|
|
785
|
+
let file = program.setFile({ src: (0, util_1.standardizePath) `${rootDir}/components/SimpleScene.xml`, dest: 'components/SimpleScene.xml' }, (0, testHelpers_spec_1.trim) `
|
|
786
786
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
787
787
|
<component name="SimpleScene" extends="Scene">
|
|
788
788
|
</component>
|
|
@@ -802,7 +802,7 @@ describe('XmlFile', () => {
|
|
|
802
802
|
name: 'Transform plugins',
|
|
803
803
|
afterFileParse: file => validateXml(file)
|
|
804
804
|
});
|
|
805
|
-
file = program.
|
|
805
|
+
file = program.setFile('components/component.xml', (0, testHelpers_spec_1.trim) `
|
|
806
806
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
807
807
|
<component name="Cmp1" extends="Scene">
|
|
808
808
|
</component>
|
|
@@ -831,7 +831,7 @@ describe('XmlFile', () => {
|
|
|
831
831
|
}
|
|
832
832
|
}
|
|
833
833
|
});
|
|
834
|
-
program.
|
|
834
|
+
program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
835
835
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
836
836
|
<component name="Cmp1" extends="Scene">
|
|
837
837
|
</component>
|
|
@@ -844,40 +844,40 @@ describe('XmlFile', () => {
|
|
|
844
844
|
});
|
|
845
845
|
describe('typedef', () => {
|
|
846
846
|
it('loads d.bs files from parent scope', () => {
|
|
847
|
-
program.
|
|
847
|
+
program.setFile('components/ParentComponent.xml', (0, testHelpers_spec_1.trim) `
|
|
848
848
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
849
849
|
<component name="ParentComponent" extends="Scene">
|
|
850
850
|
<script uri="ParentComponent.brs" />
|
|
851
851
|
</component>
|
|
852
852
|
`);
|
|
853
|
-
program.
|
|
853
|
+
program.setFile('components/ParentComponent.d.bs', `
|
|
854
854
|
import "Lib.brs"
|
|
855
855
|
namespace Parent
|
|
856
856
|
sub log()
|
|
857
857
|
end sub
|
|
858
858
|
end namespace
|
|
859
859
|
`);
|
|
860
|
-
program.
|
|
860
|
+
program.setFile('components/ParentComponent.brs', `
|
|
861
861
|
sub Parent_log()
|
|
862
862
|
end sub
|
|
863
863
|
`);
|
|
864
|
-
program.
|
|
864
|
+
program.setFile('components/Lib.d.bs', `
|
|
865
865
|
namespace Lib
|
|
866
866
|
sub log()
|
|
867
867
|
end sub
|
|
868
868
|
end namespace
|
|
869
869
|
`);
|
|
870
|
-
program.
|
|
870
|
+
program.setFile('components/Lib.brs', `
|
|
871
871
|
sub Lib_log()
|
|
872
872
|
end sub
|
|
873
873
|
`);
|
|
874
|
-
program.
|
|
874
|
+
program.setFile('components/ChildComponent.xml', (0, testHelpers_spec_1.trim) `
|
|
875
875
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
876
876
|
<component name="ChildComponent" extends="ParentComponent">
|
|
877
877
|
<script uri="ChildComponent.bs" />
|
|
878
878
|
</component>
|
|
879
879
|
`);
|
|
880
|
-
program.
|
|
880
|
+
program.setFile('components/ChildComponent.bs', `
|
|
881
881
|
sub init()
|
|
882
882
|
Parent.log()
|
|
883
883
|
Lib.log()
|
|
@@ -892,28 +892,28 @@ describe('XmlFile', () => {
|
|
|
892
892
|
]);
|
|
893
893
|
});
|
|
894
894
|
it('loads `d.bs` files into scope', () => {
|
|
895
|
-
const xmlFile = program.
|
|
895
|
+
const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
|
|
896
896
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
897
897
|
<component name="Component1" extends="Scene">
|
|
898
898
|
<script uri="Component1.brs" />
|
|
899
899
|
</component>
|
|
900
900
|
`);
|
|
901
|
-
program.
|
|
901
|
+
program.setFile('components/Component1.d.bs', `
|
|
902
902
|
sub logInfo()
|
|
903
903
|
end sub
|
|
904
904
|
`);
|
|
905
905
|
(0, chai_1.expect)(program.getScopesForFile(xmlFile)[0].getAllCallables().map(x => x.callable.name)).to.include('logInfo');
|
|
906
906
|
});
|
|
907
907
|
it('does not include `d.bs` script during transpile', () => {
|
|
908
|
-
program.
|
|
908
|
+
program.setFile('source/logger.d.bs', `
|
|
909
909
|
sub logInfo()
|
|
910
910
|
end sub
|
|
911
911
|
`);
|
|
912
|
-
program.
|
|
912
|
+
program.setFile('source/logger.brs', `
|
|
913
913
|
sub logInfo()
|
|
914
914
|
end sub
|
|
915
915
|
`);
|
|
916
|
-
program.
|
|
916
|
+
program.setFile('components/Component1.bs', `
|
|
917
917
|
import "pkg:/source/logger.brs"
|
|
918
918
|
sub init()
|
|
919
919
|
end sub
|
|
@@ -933,7 +933,7 @@ describe('XmlFile', () => {
|
|
|
933
933
|
`, 'none', 'components/Component1.xml');
|
|
934
934
|
});
|
|
935
935
|
it('does not load .brs information into scope if related d.bs is in scope', () => {
|
|
936
|
-
const xmlFile = program.
|
|
936
|
+
const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
|
|
937
937
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
938
938
|
<component name="Component1" extends="Scene">
|
|
939
939
|
<script uri="Component1.brs" />
|
|
@@ -941,7 +941,7 @@ describe('XmlFile', () => {
|
|
|
941
941
|
`);
|
|
942
942
|
const scope = program.getScopesForFile(xmlFile)[0];
|
|
943
943
|
//load brs file
|
|
944
|
-
program.
|
|
944
|
+
program.setFile('components/Component1.brs', `
|
|
945
945
|
sub logInfo()
|
|
946
946
|
end sub
|
|
947
947
|
sub logWarning()
|
|
@@ -951,7 +951,7 @@ describe('XmlFile', () => {
|
|
|
951
951
|
(0, chai_1.expect)(functionNames).to.include('logInfo');
|
|
952
952
|
(0, chai_1.expect)(functionNames).to.include('logWarning');
|
|
953
953
|
//load d.bs file, which should shadow out the .brs file
|
|
954
|
-
program.
|
|
954
|
+
program.setFile('components/Component1.d.bs', `
|
|
955
955
|
sub logError()
|
|
956
956
|
end sub
|
|
957
957
|
`);
|
|
@@ -961,7 +961,7 @@ describe('XmlFile', () => {
|
|
|
961
961
|
(0, chai_1.expect)(functionNames).not.to.include('logWarning');
|
|
962
962
|
});
|
|
963
963
|
it('updates xml scope when typedef disappears', () => {
|
|
964
|
-
const xmlFile = program.
|
|
964
|
+
const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
|
|
965
965
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
966
966
|
<component name="Component1" extends="Scene">
|
|
967
967
|
<script uri="Component1.brs" />
|
|
@@ -969,12 +969,12 @@ describe('XmlFile', () => {
|
|
|
969
969
|
`);
|
|
970
970
|
const scope = program.getScopesForFile(xmlFile)[0];
|
|
971
971
|
//load brs file
|
|
972
|
-
program.
|
|
972
|
+
program.setFile('components/Component1.brs', `
|
|
973
973
|
sub logBrs()
|
|
974
974
|
end sub
|
|
975
975
|
`);
|
|
976
976
|
//load d.bs file, which should shadow out the .brs file
|
|
977
|
-
const typedef = program.
|
|
977
|
+
const typedef = program.setFile('components/Component1.d.bs', `
|
|
978
978
|
sub logTypedef()
|
|
979
979
|
end sub
|
|
980
980
|
`);
|
|
@@ -992,7 +992,7 @@ describe('XmlFile', () => {
|
|
|
992
992
|
});
|
|
993
993
|
it('finds script imports for single-quoted script tags', () => {
|
|
994
994
|
var _a;
|
|
995
|
-
const file = program.
|
|
995
|
+
const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
996
996
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
997
997
|
<component name="Cmp1" extends="Scene">
|
|
998
998
|
<script uri='SingleQuotedFile.brs' />
|
|
@@ -1003,7 +1003,7 @@ describe('XmlFile', () => {
|
|
|
1003
1003
|
describe('commentFlags', () => {
|
|
1004
1004
|
it('ignores warning from previous line comment', () => {
|
|
1005
1005
|
//component without a name attribute
|
|
1006
|
-
program.
|
|
1006
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
1007
1007
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1008
1008
|
<!--bs:disable-next-line-->
|
|
1009
1009
|
<component>
|
|
@@ -1014,7 +1014,7 @@ describe('XmlFile', () => {
|
|
|
1014
1014
|
});
|
|
1015
1015
|
it('ignores warning from previous line just for the specified code', () => {
|
|
1016
1016
|
//component without a name attribute
|
|
1017
|
-
program.
|
|
1017
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
1018
1018
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1019
1019
|
<!--bs:disable-next-line 1006-->
|
|
1020
1020
|
<component>
|
|
@@ -1027,7 +1027,7 @@ describe('XmlFile', () => {
|
|
|
1027
1027
|
});
|
|
1028
1028
|
it('ignores warning from previous line comment', () => {
|
|
1029
1029
|
//component without a name attribute
|
|
1030
|
-
program.
|
|
1030
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
1031
1031
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1032
1032
|
<component> <!--bs:disable-line-->
|
|
1033
1033
|
</component>
|
|
@@ -1037,7 +1037,7 @@ describe('XmlFile', () => {
|
|
|
1037
1037
|
});
|
|
1038
1038
|
it('ignores warning from previous line just for the specified code', () => {
|
|
1039
1039
|
//component without a name attribute
|
|
1040
|
-
program.
|
|
1040
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
1041
1041
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1042
1042
|
<component> <!--bs:disable-line 1006-->
|
|
1043
1043
|
</component>
|
|
@@ -1050,16 +1050,16 @@ describe('XmlFile', () => {
|
|
|
1050
1050
|
});
|
|
1051
1051
|
describe('duplicate components', () => {
|
|
1052
1052
|
it('more gracefully handles multiple components with the same name', () => {
|
|
1053
|
-
program.
|
|
1054
|
-
program.
|
|
1053
|
+
program.setFile('components/comp1.brs', ``);
|
|
1054
|
+
program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
1055
1055
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1056
1056
|
<component name="comp1" extends="Group">
|
|
1057
1057
|
<script uri="comp1.brs" />
|
|
1058
1058
|
</component>
|
|
1059
1059
|
`);
|
|
1060
1060
|
//add another component with the same name
|
|
1061
|
-
program.
|
|
1062
|
-
program.
|
|
1061
|
+
program.setFile('components/comp2.brs', ``);
|
|
1062
|
+
program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
|
|
1063
1063
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1064
1064
|
<component name="comp1" extends="Group">
|
|
1065
1065
|
<script uri="comp2.brs" />
|
|
@@ -1073,14 +1073,14 @@ describe('XmlFile', () => {
|
|
|
1073
1073
|
});
|
|
1074
1074
|
it('maintains consistent component selection', () => {
|
|
1075
1075
|
//add comp2 first
|
|
1076
|
-
const comp2 = program.
|
|
1076
|
+
const comp2 = program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
|
|
1077
1077
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1078
1078
|
<component name="comp1">
|
|
1079
1079
|
</component>
|
|
1080
1080
|
`);
|
|
1081
1081
|
(0, chai_1.expect)(program.getComponent('comp1').file.pkgPath).to.equal(comp2.pkgPath);
|
|
1082
1082
|
//add comp1. it should become the main component with this name
|
|
1083
|
-
const comp1 = program.
|
|
1083
|
+
const comp1 = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
1084
1084
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1085
1085
|
<component name="comp1" extends="Group">
|
|
1086
1086
|
</component>
|
|
@@ -1090,7 +1090,7 @@ describe('XmlFile', () => {
|
|
|
1090
1090
|
program.removeFile((0, util_1.standardizePath) `${rootDir}/components/comp1.xml`);
|
|
1091
1091
|
(0, chai_1.expect)(program.getComponent('comp1').file.pkgPath).to.equal(comp2.pkgPath);
|
|
1092
1092
|
//add comp3
|
|
1093
|
-
program.
|
|
1093
|
+
program.setFile('components/comp3.xml', (0, testHelpers_spec_1.trim) `
|
|
1094
1094
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1095
1095
|
<component name="comp1">
|
|
1096
1096
|
</component>
|