brighterscript 1.0.0-alpha.25 → 1.0.0-alpha.27
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 +44 -0
- package/bsconfig.schema.json +5 -0
- package/dist/AstValidationSegmenter.d.ts +1 -1
- package/dist/AstValidationSegmenter.js +6 -7
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/BsConfig.d.ts +1 -0
- package/dist/DiagnosticMessages.d.ts +1 -3
- package/dist/DiagnosticMessages.js +5 -8
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/Program.d.ts +1 -1
- package/dist/Program.js +40 -42
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +2 -13
- package/dist/Scope.js +27 -35
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +1 -8
- package/dist/SymbolTable.js +1 -10
- package/dist/SymbolTable.js.map +1 -1
- package/dist/SymbolTableFlag.d.ts +8 -0
- package/dist/SymbolTableFlag.js +13 -0
- package/dist/SymbolTableFlag.js.map +1 -0
- package/dist/XmlScope.d.ts +1 -6
- package/dist/XmlScope.js +6 -25
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.d.ts +1 -2
- package/dist/astUtils/CachedLookups.js +3 -14
- package/dist/astUtils/CachedLookups.js.map +1 -1
- package/dist/astUtils/Editor.spec.js +1 -1
- package/dist/astUtils/Editor.spec.js.map +1 -1
- package/dist/astUtils/creators.js +77 -18
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/creators.spec.js +4 -4
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +3 -1
- package/dist/astUtils/reflection.js +12 -4
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +59 -42
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +30 -19
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +2 -1
- package/dist/bscPlugin/BscPlugin.js +7 -3
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.js +7 -7
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/SignatureHelpUtil.js +5 -4
- package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +2 -2
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +23 -23
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js +210 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.d.ts +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js +88 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.js +28 -8
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +74 -2
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +2 -5
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +8 -6
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +46 -47
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +10 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +120 -39
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +165 -10
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +1 -1
- package/dist/files/BrsFile.Class.spec.js +7 -6
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +7 -15
- package/dist/files/BrsFile.js +49 -309
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +111 -157
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +2 -3
- package/dist/files/XmlFile.js +0 -2
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/interfaces.d.ts +109 -84
- package/dist/interfaces.js +9 -9
- package/dist/interfaces.js.map +1 -1
- package/dist/parser/AstNode.spec.js +6 -6
- package/dist/parser/AstNode.spec.js.map +1 -1
- package/dist/parser/Expression.d.ts +301 -164
- package/dist/parser/Expression.js +355 -294
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +26 -27
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +6 -2
- package/dist/parser/Parser.js +361 -160
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +69 -213
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.js +49 -35
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +36 -24
- package/dist/parser/SGTypes.js +26 -55
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +381 -238
- package/dist/parser/Statement.js +510 -386
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +2 -2
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +2 -2
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +11 -11
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +30 -5
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +2 -2
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +2 -2
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TypeExpression.spec.js +8 -9
- package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Dim.spec.js +8 -8
- package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +2 -2
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.js +2 -2
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +2 -2
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +10 -3
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/roku-types/data.json +70 -52
- package/dist/roku-types/index.d.ts +43 -21
- package/dist/types/ArrayType.js +1 -2
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +7 -8
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/AssociativeArrayType.js +2 -3
- package/dist/types/AssociativeArrayType.js.map +1 -1
- package/dist/types/BscType.d.ts +1 -1
- package/dist/types/BscType.js +2 -3
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.js +15 -9
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.spec.js +31 -32
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -1
- package/dist/types/ClassType.spec.js +10 -11
- package/dist/types/ClassType.spec.js.map +1 -1
- package/dist/types/ComponentType.d.ts +2 -1
- package/dist/types/ComponentType.js.map +1 -1
- package/dist/types/EnumType.js +2 -3
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/InheritableType.js +3 -4
- package/dist/types/InheritableType.js.map +1 -1
- package/dist/types/InterfaceType.js +2 -3
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +3 -4
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/ObjectType.js +1 -2
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +1 -1
- package/dist/types/ReferenceType.spec.js +21 -22
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/UnionType.js +3 -3
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +37 -38
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/helper.spec.js +4 -5
- package/dist/types/helper.spec.js.map +1 -1
- package/dist/util.d.ts +16 -7
- package/dist/util.js +89 -43
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +0 -9
- package/dist/validators/ClassValidator.js +9 -52
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,7 +12,6 @@ const DiagnosticMessages_1 = require("../DiagnosticMessages");
|
|
|
12
12
|
const reflection_1 = require("../astUtils/reflection");
|
|
13
13
|
const testHelpers_spec_1 = require("../testHelpers.spec");
|
|
14
14
|
const visitors_1 = require("../astUtils/visitors");
|
|
15
|
-
const SymbolTable_1 = require("../SymbolTable");
|
|
16
15
|
const IntegerType_1 = require("../types/IntegerType");
|
|
17
16
|
const FloatType_1 = require("../types/FloatType");
|
|
18
17
|
const StringType_1 = require("../types/StringType");
|
|
@@ -24,167 +23,6 @@ describe('parser', () => {
|
|
|
24
23
|
diagnostics: []
|
|
25
24
|
});
|
|
26
25
|
});
|
|
27
|
-
/*
|
|
28
|
-
describe.skip('findReferences', () => {
|
|
29
|
-
it('gets called if references are missing', () => {
|
|
30
|
-
const parser = Parser.parse(`
|
|
31
|
-
sub main()
|
|
32
|
-
end sub
|
|
33
|
-
|
|
34
|
-
sub UnusedFunction()
|
|
35
|
-
end sub
|
|
36
|
-
`);
|
|
37
|
-
expect(parser.references.functionStatements.map(x => x.name.text)).to.eql([
|
|
38
|
-
'main',
|
|
39
|
-
'UnusedFunction'
|
|
40
|
-
]);
|
|
41
|
-
//simulate a tree-shaking plugin by removing the `UnusedFunction`
|
|
42
|
-
parser.ast.statements.splice(1);
|
|
43
|
-
//tell the parser we modified the AST and need to regenerate references
|
|
44
|
-
parser.invalidateReferences();
|
|
45
|
-
expect(parser['_references']).not.to.exist;
|
|
46
|
-
//calling `references` automatically regenerates the references
|
|
47
|
-
expect(parser.references.functionStatements.map(x => x.name.text)).to.eql([
|
|
48
|
-
'main'
|
|
49
|
-
]);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
function expressionsToStrings(expressions: Set<Expression>) {
|
|
53
|
-
return [...expressions.values()].map(x => {
|
|
54
|
-
const file = new BrsFile({
|
|
55
|
-
srcPath: '',
|
|
56
|
-
destPath: '',
|
|
57
|
-
program: new Program({} as any)
|
|
58
|
-
});
|
|
59
|
-
const state = new BrsTranspileState(file);
|
|
60
|
-
return new SourceNode(null, null, null, x.transpile(state)).toString();
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// eslint-disable-next-line func-names, prefer-arrow-callback
|
|
65
|
-
it('works for references.expressions', function () {
|
|
66
|
-
this.timeout(5000); // this test takes a long time on github
|
|
67
|
-
const parser = Parser.parse(`
|
|
68
|
-
b += "plus-equal"
|
|
69
|
-
a += 1 + 2
|
|
70
|
-
b += getValue1() + getValue2()
|
|
71
|
-
increment++
|
|
72
|
-
decrement--
|
|
73
|
-
some.node@.doCallfunc()
|
|
74
|
-
bravo(3 + 4).jump(callMe())
|
|
75
|
-
obj = {
|
|
76
|
-
val1: someValue
|
|
77
|
-
}
|
|
78
|
-
arr = [
|
|
79
|
-
one
|
|
80
|
-
]
|
|
81
|
-
thing = alpha.bravo
|
|
82
|
-
alpha.charlie()
|
|
83
|
-
delta(alpha.delta)
|
|
84
|
-
call1().a.b.call2()
|
|
85
|
-
class Person
|
|
86
|
-
name as string = "bob"
|
|
87
|
-
end class
|
|
88
|
-
function thing(p1 = name.space.getSomething())
|
|
89
|
-
|
|
90
|
-
end function
|
|
91
|
-
`);
|
|
92
|
-
const expected = [
|
|
93
|
-
'"plus-equal"',
|
|
94
|
-
'b',
|
|
95
|
-
'b += "plus-equal"',
|
|
96
|
-
'1',
|
|
97
|
-
'2',
|
|
98
|
-
'a',
|
|
99
|
-
'a += 1 + 2',
|
|
100
|
-
'getValue1()',
|
|
101
|
-
'getValue2()',
|
|
102
|
-
'b',
|
|
103
|
-
'b += getValue1() + getValue2()',
|
|
104
|
-
'increment++',
|
|
105
|
-
'decrement--',
|
|
106
|
-
//currently the "toString" does a transpile, so that's why this is different.
|
|
107
|
-
'some.node.callfunc("doCallfunc", invalid)',
|
|
108
|
-
'3',
|
|
109
|
-
'4',
|
|
110
|
-
'3 + 4',
|
|
111
|
-
'callMe()',
|
|
112
|
-
'bravo(3 + 4).jump(callMe())',
|
|
113
|
-
'someValue',
|
|
114
|
-
'{\n val1: someValue\n}',
|
|
115
|
-
'one',
|
|
116
|
-
'[\n one\n]',
|
|
117
|
-
'alpha.bravo',
|
|
118
|
-
'alpha.charlie()',
|
|
119
|
-
'alpha.delta',
|
|
120
|
-
'delta(alpha.delta)',
|
|
121
|
-
'call1().a.b.call2()',
|
|
122
|
-
'"bob"',
|
|
123
|
-
'name.space.getSomething()'
|
|
124
|
-
];
|
|
125
|
-
|
|
126
|
-
expect(
|
|
127
|
-
expressionsToStrings(parser.references.expressions)
|
|
128
|
-
).to.eql(expected);
|
|
129
|
-
|
|
130
|
-
//tell the parser we modified the AST and need to regenerate references
|
|
131
|
-
parser.invalidateReferences();
|
|
132
|
-
|
|
133
|
-
expect(
|
|
134
|
-
expressionsToStrings(parser.references.expressions).sort()
|
|
135
|
-
).to.eql(expected.sort());
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
it('works for references.expressions', () => {
|
|
139
|
-
const parser = Parser.parse(`
|
|
140
|
-
value = true or type(true) = "something" or Enums.A.Value = "value" and Enum1.Value = Name.Space.Enum2.Value
|
|
141
|
-
`);
|
|
142
|
-
const expected = [
|
|
143
|
-
'true',
|
|
144
|
-
'type(true)',
|
|
145
|
-
'"something"',
|
|
146
|
-
'true',
|
|
147
|
-
'Enums.A.Value',
|
|
148
|
-
'"value"',
|
|
149
|
-
'Enum1.Value',
|
|
150
|
-
'Name.Space.Enum2.Value',
|
|
151
|
-
'true or type(true) = "something" or Enums.A.Value = "value" and Enum1.Value = Name.Space.Enum2.Value'
|
|
152
|
-
];
|
|
153
|
-
|
|
154
|
-
expect(
|
|
155
|
-
expressionsToStrings(parser.references.expressions)
|
|
156
|
-
).to.eql(expected);
|
|
157
|
-
|
|
158
|
-
//tell the parser we modified the AST and need to regenerate references
|
|
159
|
-
parser.invalidateReferences();
|
|
160
|
-
|
|
161
|
-
expect(
|
|
162
|
-
expressionsToStrings(parser.references.expressions).sort()
|
|
163
|
-
).to.eql(expected.sort());
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it('works for logical expression', () => {
|
|
167
|
-
const parser = Parser.parse(`
|
|
168
|
-
value = Enums.A.Value = "value"
|
|
169
|
-
`);
|
|
170
|
-
const expected = [
|
|
171
|
-
'Enums.A.Value',
|
|
172
|
-
'"value"',
|
|
173
|
-
'Enums.A.Value = "value"'
|
|
174
|
-
];
|
|
175
|
-
|
|
176
|
-
expect(
|
|
177
|
-
expressionsToStrings(parser.references.expressions)
|
|
178
|
-
).to.eql(expected);
|
|
179
|
-
|
|
180
|
-
//tell the parser we modified the AST and need to regenerate references
|
|
181
|
-
parser.invalidateReferences();
|
|
182
|
-
|
|
183
|
-
expect(
|
|
184
|
-
expressionsToStrings(parser.references.expressions).sort()
|
|
185
|
-
).to.eql(expected.sort());
|
|
186
|
-
});
|
|
187
|
-
}); */
|
|
188
26
|
describe('callfunc operator', () => {
|
|
189
27
|
it('is not allowed in brightscript mode', () => {
|
|
190
28
|
var _a;
|
|
@@ -221,30 +59,30 @@ describe('parser', () => {
|
|
|
221
59
|
it('works for ?.', () => {
|
|
222
60
|
const expression = getExpression(`value = person?.name`);
|
|
223
61
|
(0, chai_config_spec_1.expect)(expression).to.be.instanceOf(Expression_1.DottedGetExpression);
|
|
224
|
-
(0, chai_config_spec_1.expect)(expression.dot.kind).to.eql(TokenKind_1.TokenKind.QuestionDot);
|
|
62
|
+
(0, chai_config_spec_1.expect)(expression.tokens.dot.kind).to.eql(TokenKind_1.TokenKind.QuestionDot);
|
|
225
63
|
});
|
|
226
64
|
it('works for ?[', () => {
|
|
227
65
|
const expression = getExpression(`value = person?["name"]`, { matcher: reflection_1.isIndexedGetExpression });
|
|
228
66
|
(0, chai_config_spec_1.expect)(expression).to.be.instanceOf(Expression_1.IndexedGetExpression);
|
|
229
|
-
(0, chai_config_spec_1.expect)(expression.openingSquare.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftSquare);
|
|
230
|
-
(0, chai_config_spec_1.expect)(expression.
|
|
67
|
+
(0, chai_config_spec_1.expect)(expression.tokens.openingSquare.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftSquare);
|
|
68
|
+
(0, chai_config_spec_1.expect)(expression.tokens.questionDot).not.to.exist;
|
|
231
69
|
});
|
|
232
70
|
it('works for ?.[', () => {
|
|
233
71
|
var _a;
|
|
234
72
|
const expression = getExpression(`value = person?.["name"]`, { matcher: reflection_1.isIndexedGetExpression });
|
|
235
73
|
(0, chai_config_spec_1.expect)(expression).to.be.instanceOf(Expression_1.IndexedGetExpression);
|
|
236
|
-
(0, chai_config_spec_1.expect)(expression.openingSquare.kind).to.eql(TokenKind_1.TokenKind.LeftSquareBracket);
|
|
237
|
-
(0, chai_config_spec_1.expect)((_a = expression.
|
|
74
|
+
(0, chai_config_spec_1.expect)(expression.tokens.openingSquare.kind).to.eql(TokenKind_1.TokenKind.LeftSquareBracket);
|
|
75
|
+
(0, chai_config_spec_1.expect)((_a = expression.tokens.questionDot) === null || _a === void 0 ? void 0 : _a.kind).to.eql(TokenKind_1.TokenKind.QuestionDot);
|
|
238
76
|
});
|
|
239
77
|
it('works for ?@', () => {
|
|
240
78
|
const expression = getExpression(`value = someXml?@someAttr`);
|
|
241
79
|
(0, chai_config_spec_1.expect)(expression).to.be.instanceOf(Expression_1.XmlAttributeGetExpression);
|
|
242
|
-
(0, chai_config_spec_1.expect)(expression.at.kind).to.eql(TokenKind_1.TokenKind.QuestionAt);
|
|
80
|
+
(0, chai_config_spec_1.expect)(expression.tokens.at.kind).to.eql(TokenKind_1.TokenKind.QuestionAt);
|
|
243
81
|
});
|
|
244
82
|
it('works for ?(', () => {
|
|
245
83
|
const expression = getExpression(`value = person.getName?()`);
|
|
246
84
|
(0, chai_config_spec_1.expect)(expression).to.be.instanceOf(Expression_1.CallExpression);
|
|
247
|
-
(0, chai_config_spec_1.expect)(expression.openingParen.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftParen);
|
|
85
|
+
(0, chai_config_spec_1.expect)(expression.tokens.openingParen.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftParen);
|
|
248
86
|
});
|
|
249
87
|
it('works for print statements using question mark', () => {
|
|
250
88
|
const { statements } = parse(`
|
|
@@ -258,12 +96,12 @@ describe('parser', () => {
|
|
|
258
96
|
it.skip('works for ?( in anonymous function', () => {
|
|
259
97
|
const expression = getExpression(`thing = (function() : end function)?()`);
|
|
260
98
|
(0, chai_config_spec_1.expect)(expression).to.be.instanceOf(Expression_1.CallExpression);
|
|
261
|
-
(0, chai_config_spec_1.expect)(expression.openingParen.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftParen);
|
|
99
|
+
(0, chai_config_spec_1.expect)(expression.tokens.openingParen.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftParen);
|
|
262
100
|
});
|
|
263
101
|
it('works for ?( in new call', () => {
|
|
264
102
|
const expression = getExpression(`thing = new Person?()`, { parseMode: Parser_1.ParseMode.BrighterScript });
|
|
265
103
|
(0, chai_config_spec_1.expect)(expression).to.be.instanceOf(Expression_1.NewExpression);
|
|
266
|
-
(0, chai_config_spec_1.expect)(expression.call.openingParen.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftParen);
|
|
104
|
+
(0, chai_config_spec_1.expect)(expression.call.tokens.openingParen.kind).to.eql(TokenKind_1.TokenKind.QuestionLeftParen);
|
|
267
105
|
});
|
|
268
106
|
it('distinguishes between optional chaining and ternary expression', () => {
|
|
269
107
|
const parser = parse(`
|
|
@@ -480,14 +318,14 @@ describe('parser', () => {
|
|
|
480
318
|
let statements = parser.statements[0].func.body.statements;
|
|
481
319
|
let first = statements[0].value;
|
|
482
320
|
(0, chai_config_spec_1.expect)(first).to.be.instanceof(Expression_1.XmlAttributeGetExpression);
|
|
483
|
-
(0, chai_config_spec_1.expect)(first.name.text).to.equal('firstName');
|
|
484
|
-
(0, chai_config_spec_1.expect)(first.at.text).to.equal('@');
|
|
485
|
-
(0, chai_config_spec_1.expect)(first.obj.name.text).to.equal('personXml');
|
|
321
|
+
(0, chai_config_spec_1.expect)(first.tokens.name.text).to.equal('firstName');
|
|
322
|
+
(0, chai_config_spec_1.expect)(first.tokens.at.text).to.equal('@');
|
|
323
|
+
(0, chai_config_spec_1.expect)(first.obj.tokens.name.text).to.equal('personXml');
|
|
486
324
|
let second = statements[1].value;
|
|
487
325
|
(0, chai_config_spec_1.expect)(second).to.be.instanceof(Expression_1.XmlAttributeGetExpression);
|
|
488
|
-
(0, chai_config_spec_1.expect)(second.name.text).to.equal('age');
|
|
489
|
-
(0, chai_config_spec_1.expect)(second.at.text).to.equal('@');
|
|
490
|
-
(0, chai_config_spec_1.expect)(second.obj.name.text).to.equal('firstChild');
|
|
326
|
+
(0, chai_config_spec_1.expect)(second.tokens.name.text).to.equal('age');
|
|
327
|
+
(0, chai_config_spec_1.expect)(second.tokens.at.text).to.equal('@');
|
|
328
|
+
(0, chai_config_spec_1.expect)(second.obj.tokens.name.text).to.equal('firstChild');
|
|
491
329
|
});
|
|
492
330
|
it('does not allow chaining of @ symbols', () => {
|
|
493
331
|
let parser = parse(`
|
|
@@ -617,7 +455,7 @@ describe('parser', () => {
|
|
|
617
455
|
let stmt = statements[0].func.body.statements[0];
|
|
618
456
|
(0, chai_config_spec_1.expect)((0, reflection_1.isExpressionStatement)(stmt)).to.be.true;
|
|
619
457
|
(0, chai_config_spec_1.expect)((0, reflection_1.isVariableExpression)((stmt).expression)).to.be.true;
|
|
620
|
-
(0, chai_config_spec_1.expect)(stmt.expression.name.text).to.equal('NameA');
|
|
458
|
+
(0, chai_config_spec_1.expect)(stmt.expression.tokens.name.text).to.equal('NameA');
|
|
621
459
|
});
|
|
622
460
|
it('adds unended call statements', () => {
|
|
623
461
|
let { tokens } = Lexer_1.Lexer.scan(`
|
|
@@ -629,7 +467,7 @@ describe('parser', () => {
|
|
|
629
467
|
let stmt = statements[0].func.body.statements[0];
|
|
630
468
|
(0, chai_config_spec_1.expect)((0, reflection_1.isExpressionStatement)(stmt)).to.be.true;
|
|
631
469
|
(0, chai_config_spec_1.expect)((0, reflection_1.isCallExpression)((stmt).expression)).to.be.true;
|
|
632
|
-
(0, chai_config_spec_1.expect)(stmt.expression.callee.name.text).to.equal('lcase');
|
|
470
|
+
(0, chai_config_spec_1.expect)(stmt.expression.callee.tokens.name.text).to.equal('lcase');
|
|
633
471
|
});
|
|
634
472
|
it('adds unended indexed get statements', () => {
|
|
635
473
|
let { tokens } = Lexer_1.Lexer.scan(`
|
|
@@ -643,7 +481,7 @@ describe('parser', () => {
|
|
|
643
481
|
let stmt = statements[0].func.body.statements[0];
|
|
644
482
|
(0, chai_config_spec_1.expect)((0, reflection_1.isExpressionStatement)(stmt)).to.be.true;
|
|
645
483
|
(0, chai_config_spec_1.expect)((0, reflection_1.isIndexedGetExpression)((stmt).expression)).to.be.true;
|
|
646
|
-
(0, chai_config_spec_1.expect)(stmt.expression.obj.name.text).to.equal('nums');
|
|
484
|
+
(0, chai_config_spec_1.expect)(stmt.expression.obj.tokens.name.text).to.equal('nums');
|
|
647
485
|
});
|
|
648
486
|
it('adds dotted gets', () => {
|
|
649
487
|
let { tokens } = Lexer_1.Lexer.scan(`
|
|
@@ -664,8 +502,8 @@ describe('parser', () => {
|
|
|
664
502
|
let stmt = statements[0].func.body.statements[0];
|
|
665
503
|
(0, chai_config_spec_1.expect)((0, reflection_1.isExpressionStatement)(stmt)).to.be.true;
|
|
666
504
|
(0, chai_config_spec_1.expect)((0, reflection_1.isDottedGetExpression)((stmt).expression)).to.be.true;
|
|
667
|
-
(0, chai_config_spec_1.expect)(stmt.expression.obj.name.text).to.equal('a');
|
|
668
|
-
(0, chai_config_spec_1.expect)(stmt.expression.name.text).to.equal('b');
|
|
505
|
+
(0, chai_config_spec_1.expect)(stmt.expression.obj.tokens.name.text).to.equal('a');
|
|
506
|
+
(0, chai_config_spec_1.expect)(stmt.expression.tokens.name.text).to.equal('b');
|
|
669
507
|
});
|
|
670
508
|
it('adds function statement with missing type after as', () => {
|
|
671
509
|
var _a;
|
|
@@ -926,7 +764,7 @@ describe('parser', () => {
|
|
|
926
764
|
}), {
|
|
927
765
|
walkMode: visitors_1.WalkMode.visitAllRecursive
|
|
928
766
|
});
|
|
929
|
-
(0, chai_config_spec_1.expect)(elements.map(x => x.
|
|
767
|
+
(0, chai_config_spec_1.expect)(elements.map(x => x.tokens.key.kind)).to.eql([TokenKind_1.TokenKind.Identifier, TokenKind_1.TokenKind.Identifier]);
|
|
930
768
|
});
|
|
931
769
|
});
|
|
932
770
|
it('"end" is not allowed as a local identifier', () => {
|
|
@@ -1033,13 +871,13 @@ describe('parser', () => {
|
|
|
1033
871
|
let fn = statements[0];
|
|
1034
872
|
(0, chai_config_spec_1.expect)(fn.annotations).to.exist;
|
|
1035
873
|
(0, chai_config_spec_1.expect)(fn.annotations[0]).to.be.instanceof(Expression_1.AnnotationExpression);
|
|
1036
|
-
(0, chai_config_spec_1.expect)(fn.annotations[0].
|
|
874
|
+
(0, chai_config_spec_1.expect)(fn.annotations[0].tokens.name.text).to.equal('meta1');
|
|
1037
875
|
(0, chai_config_spec_1.expect)(fn.annotations[0].name).to.equal('meta1');
|
|
1038
876
|
(0, chai_config_spec_1.expect)(statements[1]).to.be.instanceof(Statement_1.FunctionStatement);
|
|
1039
877
|
fn = statements[1];
|
|
1040
878
|
(0, chai_config_spec_1.expect)(fn.annotations).to.exist;
|
|
1041
879
|
(0, chai_config_spec_1.expect)(fn.annotations[0]).to.be.instanceof(Expression_1.AnnotationExpression);
|
|
1042
|
-
(0, chai_config_spec_1.expect)(fn.annotations[0].
|
|
880
|
+
(0, chai_config_spec_1.expect)(fn.annotations[0].tokens.name.text).to.equal('meta2');
|
|
1043
881
|
});
|
|
1044
882
|
it('attaches annotations inside a function body', () => {
|
|
1045
883
|
var _a, _b;
|
|
@@ -1085,7 +923,7 @@ describe('parser', () => {
|
|
|
1085
923
|
let fn = statements[0];
|
|
1086
924
|
(0, chai_config_spec_1.expect)(fn.annotations).to.exist;
|
|
1087
925
|
(0, chai_config_spec_1.expect)(fn.annotations[0]).to.be.instanceof(Expression_1.AnnotationExpression);
|
|
1088
|
-
(0, chai_config_spec_1.expect)(fn.annotations[0].
|
|
926
|
+
(0, chai_config_spec_1.expect)(fn.annotations[0].tokens.name.text).to.equal('meta1');
|
|
1089
927
|
(0, chai_config_spec_1.expect)(fn.annotations[0].call).to.be.instanceof(Expression_1.CallExpression);
|
|
1090
928
|
});
|
|
1091
929
|
it('attaches annotations to a class', () => {
|
|
@@ -1342,7 +1180,7 @@ describe('parser', () => {
|
|
|
1342
1180
|
(0, chai_config_spec_1.expect)((0, reflection_1.isAssignmentStatement)(assignment)).to.be.true;
|
|
1343
1181
|
(0, chai_config_spec_1.expect)((0, reflection_1.isTypeCastExpression)(assignment.value)).to.be.true;
|
|
1344
1182
|
(0, chai_config_spec_1.expect)((0, reflection_1.isCallExpression)(assignment.value.obj)).to.be.true;
|
|
1345
|
-
(0, testHelpers_spec_1.expectTypeToBe)(assignment.getType({ flags:
|
|
1183
|
+
(0, testHelpers_spec_1.expectTypeToBe)(assignment.getType({ flags: 2 /* SymbolTypeFlag.typetime */ }), IntegerType_1.IntegerType);
|
|
1346
1184
|
});
|
|
1347
1185
|
it('allows type casts in the middle of expressions', () => {
|
|
1348
1186
|
var _a;
|
|
@@ -1366,7 +1204,7 @@ describe('parser', () => {
|
|
|
1366
1204
|
(0, chai_config_spec_1.expect)((0, reflection_1.isGroupingExpression)(assignment.value.callee.obj)).to.be.true;
|
|
1367
1205
|
(0, chai_config_spec_1.expect)((0, reflection_1.isTypeCastExpression)(assignment.value.callee.obj.expression)).to.be.true;
|
|
1368
1206
|
//grouping expression is an integer
|
|
1369
|
-
(0, testHelpers_spec_1.expectTypeToBe)(assignment.value.callee.obj.getType({ flags:
|
|
1207
|
+
(0, testHelpers_spec_1.expectTypeToBe)(assignment.value.callee.obj.getType({ flags: 2 /* SymbolTypeFlag.typetime */ }), IntegerType_1.IntegerType);
|
|
1370
1208
|
});
|
|
1371
1209
|
it('allows type casts in a function call', () => {
|
|
1372
1210
|
var _a;
|
|
@@ -1390,7 +1228,7 @@ describe('parser', () => {
|
|
|
1390
1228
|
(0, chai_config_spec_1.expect)((0, reflection_1.isTypeCastExpression)(fnCall.args[0])).to.be.true;
|
|
1391
1229
|
let arg = fnCall.args[0];
|
|
1392
1230
|
//argument type is float
|
|
1393
|
-
(0, testHelpers_spec_1.expectTypeToBe)(arg.getType({ flags:
|
|
1231
|
+
(0, testHelpers_spec_1.expectTypeToBe)(arg.getType({ flags: 2 /* SymbolTypeFlag.typetime */ }), FloatType_1.FloatType);
|
|
1394
1232
|
});
|
|
1395
1233
|
it('allows multiple type casts', () => {
|
|
1396
1234
|
var _a;
|
|
@@ -1407,7 +1245,7 @@ describe('parser', () => {
|
|
|
1407
1245
|
(0, chai_config_spec_1.expect)((0, reflection_1.isPrintStatement)(print)).to.be.true;
|
|
1408
1246
|
(0, chai_config_spec_1.expect)((0, reflection_1.isTypeCastExpression)(print.expressions[0])).to.be.true;
|
|
1409
1247
|
//argument type is float
|
|
1410
|
-
(0, testHelpers_spec_1.expectTypeToBe)(print.expressions[0].getType({ flags:
|
|
1248
|
+
(0, testHelpers_spec_1.expectTypeToBe)(print.expressions[0].getType({ flags: 2 /* SymbolTypeFlag.typetime */ }), StringType_1.StringType);
|
|
1411
1249
|
});
|
|
1412
1250
|
it('flags invalid type cast syntax - multiple as', () => {
|
|
1413
1251
|
var _a;
|
|
@@ -1427,6 +1265,24 @@ describe('parser', () => {
|
|
|
1427
1265
|
`, Parser_1.ParseMode.BrighterScript);
|
|
1428
1266
|
(0, chai_config_spec_1.expect)((_a = diagnostics[0]) === null || _a === void 0 ? void 0 : _a.message).to.exist;
|
|
1429
1267
|
});
|
|
1268
|
+
it('allows declaring types on assignment in Brighterscript mode', () => {
|
|
1269
|
+
let { diagnostics } = parse(`
|
|
1270
|
+
sub foo()
|
|
1271
|
+
x as string = formatJson("some string")
|
|
1272
|
+
end sub
|
|
1273
|
+
`, Parser_1.ParseMode.BrighterScript);
|
|
1274
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
|
|
1275
|
+
});
|
|
1276
|
+
it('does not allow declaring types on assignment in brightscript mode', () => {
|
|
1277
|
+
var _a, _b;
|
|
1278
|
+
let { diagnostics } = parse(`
|
|
1279
|
+
sub foo()
|
|
1280
|
+
x as string = formatJson("some string")
|
|
1281
|
+
end sub
|
|
1282
|
+
`, Parser_1.ParseMode.BrightScript);
|
|
1283
|
+
(0, chai_config_spec_1.expect)((_a = diagnostics[0]) === null || _a === void 0 ? void 0 : _a.message).to.exist;
|
|
1284
|
+
(0, chai_config_spec_1.expect)((_b = diagnostics[0]) === null || _b === void 0 ? void 0 : _b.message).to.include('typed assignment');
|
|
1285
|
+
});
|
|
1430
1286
|
});
|
|
1431
1287
|
describe('union types', () => {
|
|
1432
1288
|
it('is not allowed in brightscript mode', () => {
|
|
@@ -1474,7 +1330,7 @@ describe('parser', () => {
|
|
|
1474
1330
|
end sub
|
|
1475
1331
|
`, Parser_1.ParseMode.BrighterScript);
|
|
1476
1332
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
|
|
1477
|
-
const paramType = statements[0].func.parameters[0].getType({ flags:
|
|
1333
|
+
const paramType = statements[0].func.parameters[0].getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1478
1334
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType, types_1.ArrayType);
|
|
1479
1335
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType.defaultType, StringType_1.StringType);
|
|
1480
1336
|
});
|
|
@@ -1485,7 +1341,7 @@ describe('parser', () => {
|
|
|
1485
1341
|
end sub
|
|
1486
1342
|
`, Parser_1.ParseMode.BrighterScript);
|
|
1487
1343
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
|
|
1488
|
-
const paramType = statements[0].func.parameters[0].getType({ flags:
|
|
1344
|
+
const paramType = statements[0].func.parameters[0].getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1489
1345
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType, types_1.ArrayType);
|
|
1490
1346
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType.defaultType, types_1.ArrayType);
|
|
1491
1347
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType.defaultType.defaultType, StringType_1.StringType);
|
|
@@ -1497,7 +1353,7 @@ describe('parser', () => {
|
|
|
1497
1353
|
end function
|
|
1498
1354
|
`, Parser_1.ParseMode.BrighterScript);
|
|
1499
1355
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
|
|
1500
|
-
const paramType = statements[0].func.returnTypeExpression.getType({ flags:
|
|
1356
|
+
const paramType = statements[0].func.returnTypeExpression.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1501
1357
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType, types_1.ArrayType);
|
|
1502
1358
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType.defaultType, IntegerType_1.IntegerType);
|
|
1503
1359
|
});
|
|
@@ -1508,7 +1364,7 @@ describe('parser', () => {
|
|
|
1508
1364
|
end sub
|
|
1509
1365
|
`, Parser_1.ParseMode.BrighterScript);
|
|
1510
1366
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(diagnostics);
|
|
1511
|
-
const paramType = statements[0].func.parameters[0].getType({ flags:
|
|
1367
|
+
const paramType = statements[0].func.parameters[0].getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1512
1368
|
(0, testHelpers_spec_1.expectTypeToBe)(paramType, types_1.UnionType);
|
|
1513
1369
|
(0, chai_config_spec_1.expect)(paramType.toString().includes('Array<string>')).to.be.true;
|
|
1514
1370
|
(0, chai_config_spec_1.expect)(paramType.toString().includes('Array<integer>')).to.be.true;
|
|
@@ -1551,9 +1407,9 @@ describe('parser', () => {
|
|
|
1551
1407
|
(0, chai_config_spec_1.expect)((0, reflection_1.isInterfaceStatement)(statements[0])).to.be.true;
|
|
1552
1408
|
const iface = statements[0];
|
|
1553
1409
|
iface.fields.forEach(f => (0, chai_config_spec_1.expect)(f.isOptional).to.be.true);
|
|
1554
|
-
const ifaceType = iface.getType({ flags:
|
|
1410
|
+
const ifaceType = iface.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1555
1411
|
// eslint-disable-next-line no-bitwise
|
|
1556
|
-
ifaceType.getMemberTable().getAllSymbols(
|
|
1412
|
+
ifaceType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */).forEach(sym => (0, chai_config_spec_1.expect)(sym.flags & 4 /* SymbolTypeFlag.optional */).to.eq(4 /* SymbolTypeFlag.optional */));
|
|
1557
1413
|
});
|
|
1558
1414
|
it('allows fields named optional', () => {
|
|
1559
1415
|
let { statements, diagnostics } = parse(`
|
|
@@ -1567,11 +1423,11 @@ describe('parser', () => {
|
|
|
1567
1423
|
(0, chai_config_spec_1.expect)((0, reflection_1.isInterfaceStatement)(statements[0])).to.be.true;
|
|
1568
1424
|
const iface = statements[0];
|
|
1569
1425
|
iface.fields.forEach(f => (0, chai_config_spec_1.expect)(f.isOptional).to.be.false);
|
|
1570
|
-
const ifaceType = iface.getType({ flags:
|
|
1571
|
-
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(
|
|
1426
|
+
const ifaceType = iface.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1427
|
+
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */);
|
|
1572
1428
|
(0, chai_config_spec_1.expect)(iFaceMembers.length).to.eq(2);
|
|
1573
1429
|
// eslint-disable-next-line no-bitwise
|
|
1574
|
-
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags &
|
|
1430
|
+
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags & 4 /* SymbolTypeFlag.optional */).to.eq(0));
|
|
1575
1431
|
});
|
|
1576
1432
|
it('allows fields named optional that are also optional', () => {
|
|
1577
1433
|
let { statements, diagnostics } = parse(`
|
|
@@ -1584,11 +1440,11 @@ describe('parser', () => {
|
|
|
1584
1440
|
(0, chai_config_spec_1.expect)((0, reflection_1.isInterfaceStatement)(statements[0])).to.be.true;
|
|
1585
1441
|
const iface = statements[0];
|
|
1586
1442
|
iface.fields.forEach(f => (0, chai_config_spec_1.expect)(f.isOptional).to.be.true);
|
|
1587
|
-
const ifaceType = iface.getType({ flags:
|
|
1588
|
-
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(
|
|
1443
|
+
const ifaceType = iface.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1444
|
+
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */);
|
|
1589
1445
|
(0, chai_config_spec_1.expect)(iFaceMembers.length).to.eq(1);
|
|
1590
1446
|
// eslint-disable-next-line no-bitwise
|
|
1591
|
-
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags &
|
|
1447
|
+
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags & 4 /* SymbolTypeFlag.optional */).to.eq(4 /* SymbolTypeFlag.optional */));
|
|
1592
1448
|
});
|
|
1593
1449
|
it('allows optional methods', () => {
|
|
1594
1450
|
let { statements, diagnostics } = parse(`
|
|
@@ -1603,9 +1459,9 @@ describe('parser', () => {
|
|
|
1603
1459
|
(0, chai_config_spec_1.expect)((0, reflection_1.isInterfaceStatement)(statements[0])).to.be.true;
|
|
1604
1460
|
const iface = statements[0];
|
|
1605
1461
|
iface.methods.forEach(m => (0, chai_config_spec_1.expect)(m.isOptional).to.equal(true));
|
|
1606
|
-
const ifaceType = iface.getType({ flags:
|
|
1462
|
+
const ifaceType = iface.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1607
1463
|
// eslint-disable-next-line no-bitwise
|
|
1608
|
-
ifaceType.getMemberTable().getAllSymbols(
|
|
1464
|
+
ifaceType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */).forEach(sym => (0, chai_config_spec_1.expect)(sym.flags & 4 /* SymbolTypeFlag.optional */).to.eq(4 /* SymbolTypeFlag.optional */));
|
|
1609
1465
|
});
|
|
1610
1466
|
it('allows fields named `as` that are also optional', () => {
|
|
1611
1467
|
let { statements, diagnostics } = parse(`
|
|
@@ -1618,11 +1474,11 @@ describe('parser', () => {
|
|
|
1618
1474
|
(0, chai_config_spec_1.expect)((0, reflection_1.isInterfaceStatement)(statements[0])).to.be.true;
|
|
1619
1475
|
const iface = statements[0];
|
|
1620
1476
|
iface.fields.forEach(f => (0, chai_config_spec_1.expect)(f.isOptional).to.be.true);
|
|
1621
|
-
const ifaceType = iface.getType({ flags:
|
|
1622
|
-
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(
|
|
1477
|
+
const ifaceType = iface.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1478
|
+
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */);
|
|
1623
1479
|
(0, chai_config_spec_1.expect)(iFaceMembers.length).to.eq(1);
|
|
1624
1480
|
// eslint-disable-next-line no-bitwise
|
|
1625
|
-
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags &
|
|
1481
|
+
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags & 4 /* SymbolTypeFlag.optional */).to.eq(4 /* SymbolTypeFlag.optional */));
|
|
1626
1482
|
});
|
|
1627
1483
|
it('allows fields named `as` that are also typed', () => {
|
|
1628
1484
|
let { statements, diagnostics } = parse(`
|
|
@@ -1635,11 +1491,11 @@ describe('parser', () => {
|
|
|
1635
1491
|
(0, chai_config_spec_1.expect)((0, reflection_1.isInterfaceStatement)(statements[0])).to.be.true;
|
|
1636
1492
|
const iface = statements[0];
|
|
1637
1493
|
iface.fields.forEach(f => (0, chai_config_spec_1.expect)(f.isOptional).to.be.true);
|
|
1638
|
-
const ifaceType = iface.getType({ flags:
|
|
1639
|
-
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(
|
|
1494
|
+
const ifaceType = iface.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1495
|
+
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */);
|
|
1640
1496
|
(0, chai_config_spec_1.expect)(iFaceMembers.length).to.eq(1);
|
|
1641
1497
|
// eslint-disable-next-line no-bitwise
|
|
1642
|
-
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags &
|
|
1498
|
+
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags & 4 /* SymbolTypeFlag.optional */).to.eq(4 /* SymbolTypeFlag.optional */));
|
|
1643
1499
|
});
|
|
1644
1500
|
it('allows fields named `optional` that are also typed', () => {
|
|
1645
1501
|
let { statements, diagnostics } = parse(`
|
|
@@ -1652,11 +1508,11 @@ describe('parser', () => {
|
|
|
1652
1508
|
(0, chai_config_spec_1.expect)((0, reflection_1.isInterfaceStatement)(statements[0])).to.be.true;
|
|
1653
1509
|
const iface = statements[0];
|
|
1654
1510
|
iface.fields.forEach(f => (0, chai_config_spec_1.expect)(f.isOptional).to.be.false);
|
|
1655
|
-
const ifaceType = iface.getType({ flags:
|
|
1656
|
-
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(
|
|
1511
|
+
const ifaceType = iface.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1512
|
+
const iFaceMembers = ifaceType.getMemberTable().getAllSymbols(1 /* SymbolTypeFlag.runtime */);
|
|
1657
1513
|
(0, chai_config_spec_1.expect)(iFaceMembers.length).to.eq(1);
|
|
1658
1514
|
// eslint-disable-next-line no-bitwise
|
|
1659
|
-
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags &
|
|
1515
|
+
iFaceMembers.forEach(sym => (0, chai_config_spec_1.expect)(sym.flags & 4 /* SymbolTypeFlag.optional */).to.eq(0));
|
|
1660
1516
|
});
|
|
1661
1517
|
});
|
|
1662
1518
|
describe('leadingTrivia', () => {
|