brighterscript 1.0.0-alpha.26 → 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 +21 -5
- package/dist/AstValidationSegmenter.d.ts +1 -1
- package/dist/AstValidationSegmenter.js +2 -3
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +1 -3
- package/dist/DiagnosticMessages.js +5 -8
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/Program.js +24 -25
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +2 -8
- package/dist/Scope.js +20 -22
- 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 -1
- package/dist/XmlScope.js +6 -7
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.d.ts +1 -2
- package/dist/astUtils/CachedLookups.js +0 -11
- package/dist/astUtils/CachedLookups.js.map +1 -1
- package/dist/astUtils/creators.js +45 -6
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +2 -0
- package/dist/astUtils/reflection.js +11 -3
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +1 -1
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +20 -20
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.js +26 -6
- 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 -3
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +25 -26
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +6 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +70 -20
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +92 -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 +4 -3
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +3 -4
- package/dist/files/BrsFile.js +19 -112
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +56 -156
- 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 +77 -83
- package/dist/interfaces.js +9 -9
- package/dist/interfaces.js.map +1 -1
- package/dist/parser/Expression.d.ts +85 -91
- package/dist/parser/Expression.js +50 -28
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +15 -16
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +1 -2
- package/dist/parser/Parser.js +68 -62
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +27 -28
- 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 +138 -139
- package/dist/parser/Statement.js +50 -37
- package/dist/parser/Statement.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/TryCatch.spec.js +9 -2
- 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 +7 -8
- 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 +3 -3
- package/dist/util.js +20 -19
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +0 -9
- package/dist/validators/ClassValidator.js +3 -46
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +1 -1
package/dist/parser/Statement.js
CHANGED
|
@@ -8,10 +8,9 @@ const Parser_1 = require("./Parser");
|
|
|
8
8
|
const visitors_1 = require("../astUtils/visitors");
|
|
9
9
|
const reflection_1 = require("../astUtils/reflection");
|
|
10
10
|
const interfaces_1 = require("../interfaces");
|
|
11
|
-
const SymbolTable_1 = require("../SymbolTable");
|
|
12
11
|
const creators_1 = require("../astUtils/creators");
|
|
13
12
|
const DynamicType_1 = require("../types/DynamicType");
|
|
14
|
-
const
|
|
13
|
+
const SymbolTable_1 = require("../SymbolTable");
|
|
15
14
|
const AstNode_1 = require("./AstNode");
|
|
16
15
|
const AstNode_2 = require("./AstNode");
|
|
17
16
|
const ClassType_1 = require("../types/ClassType");
|
|
@@ -20,7 +19,7 @@ const NamespaceType_1 = require("../types/NamespaceType");
|
|
|
20
19
|
const InterfaceType_1 = require("../types/InterfaceType");
|
|
21
20
|
const VoidType_1 = require("../types/VoidType");
|
|
22
21
|
const TypedFunctionType_1 = require("../types/TypedFunctionType");
|
|
23
|
-
const
|
|
22
|
+
const ArrayType_1 = require("../types/ArrayType");
|
|
24
23
|
class EmptyStatement extends AstNode_2.Statement {
|
|
25
24
|
constructor(options) {
|
|
26
25
|
var _a;
|
|
@@ -45,7 +44,7 @@ class Body extends AstNode_2.Statement {
|
|
|
45
44
|
super();
|
|
46
45
|
this.statements = [];
|
|
47
46
|
this.kind = AstNode_1.AstNodeKind.Body;
|
|
48
|
-
this.symbolTable = new
|
|
47
|
+
this.symbolTable = new SymbolTable_1.SymbolTable('Body', () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
49
48
|
this.statements = (_a = options === null || options === void 0 ? void 0 : options.statements) !== null && _a !== void 0 ? _a : [];
|
|
50
49
|
}
|
|
51
50
|
get range() {
|
|
@@ -139,7 +138,7 @@ class AssignmentStatement extends AstNode_2.Statement {
|
|
|
139
138
|
const variableType = (_b = (_a = this.typeExpression) === null || _a === void 0 ? void 0 : _a.getType(Object.assign(Object.assign({}, options), { typeChain: undefined }))) !== null && _b !== void 0 ? _b : this.value.getType(Object.assign(Object.assign({}, options), { typeChain: undefined }));
|
|
140
139
|
// Note: compound assignments (eg. +=) are internally dealt with via the RHS being a BinaryExpression
|
|
141
140
|
// so this.value will be a BinaryExpression, and BinaryExpressions can figure out their own types
|
|
142
|
-
(_c = options.typeChain) === null || _c === void 0 ? void 0 : _c.push(new interfaces_1.TypeChainEntry(this.tokens.name.text, variableType, options.data, this.tokens.name.range));
|
|
141
|
+
(_c = options.typeChain) === null || _c === void 0 ? void 0 : _c.push(new interfaces_1.TypeChainEntry({ name: this.tokens.name.text, type: variableType, data: options.data, range: this.tokens.name.range, kind: this.kind }));
|
|
143
142
|
return variableType;
|
|
144
143
|
}
|
|
145
144
|
}
|
|
@@ -151,7 +150,7 @@ class Block extends AstNode_2.Statement {
|
|
|
151
150
|
this.kind = AstNode_1.AstNodeKind.Block;
|
|
152
151
|
this.statements = options.statements;
|
|
153
152
|
this.startingRange = options.startingRange;
|
|
154
|
-
this.range = util_1.util.createBoundingRange(
|
|
153
|
+
this.range = util_1.util.createBoundingRange(this.startingRange, ...((_a = this.statements) !== null && _a !== void 0 ? _a : []));
|
|
155
154
|
}
|
|
156
155
|
transpile(state) {
|
|
157
156
|
state.blockDepth++;
|
|
@@ -282,12 +281,15 @@ class ExitWhileStatement extends AstNode_2.Statement {
|
|
|
282
281
|
exports.ExitWhileStatement = ExitWhileStatement;
|
|
283
282
|
class FunctionStatement extends AstNode_2.Statement {
|
|
284
283
|
constructor(options) {
|
|
284
|
+
var _a;
|
|
285
285
|
super();
|
|
286
286
|
this.kind = AstNode_1.AstNodeKind.FunctionStatement;
|
|
287
287
|
this.tokens = {
|
|
288
288
|
name: options.name
|
|
289
289
|
};
|
|
290
290
|
this.func = options.func;
|
|
291
|
+
this.func.symbolTable.name += `: '${(_a = this.tokens.name) === null || _a === void 0 ? void 0 : _a.text}'`;
|
|
292
|
+
this.func.functionStatement = this;
|
|
291
293
|
this.range = this.func.range;
|
|
292
294
|
}
|
|
293
295
|
/**
|
|
@@ -539,9 +541,9 @@ class DimStatement extends AstNode_2.Statement {
|
|
|
539
541
|
getType(options) {
|
|
540
542
|
var _a, _b;
|
|
541
543
|
const numDimensions = (_b = (_a = this.dimensions) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 1;
|
|
542
|
-
let type = new
|
|
544
|
+
let type = new ArrayType_1.ArrayType();
|
|
543
545
|
for (let i = 0; i < numDimensions - 1; i++) {
|
|
544
|
-
type = new
|
|
546
|
+
type = new ArrayType_1.ArrayType(type);
|
|
545
547
|
}
|
|
546
548
|
return type;
|
|
547
549
|
}
|
|
@@ -834,7 +836,12 @@ class DottedSetStatement extends AstNode_2.Statement {
|
|
|
834
836
|
var _a, _b, _c, _d, _e, _f;
|
|
835
837
|
const objType = (_a = this.obj) === null || _a === void 0 ? void 0 : _a.getType(options);
|
|
836
838
|
const result = objType === null || objType === void 0 ? void 0 : objType.getMemberType((_b = this.tokens.name) === null || _b === void 0 ? void 0 : _b.text, options);
|
|
837
|
-
(_c = options.typeChain) === null || _c === void 0 ? void 0 : _c.push(new interfaces_1.TypeChainEntry(
|
|
839
|
+
(_c = options.typeChain) === null || _c === void 0 ? void 0 : _c.push(new interfaces_1.TypeChainEntry({
|
|
840
|
+
name: (_d = this.tokens.name) === null || _d === void 0 ? void 0 : _d.text,
|
|
841
|
+
type: result, data: options.data,
|
|
842
|
+
range: (_f = (_e = this.tokens.name) === null || _e === void 0 ? void 0 : _e.range) !== null && _f !== void 0 ? _f : this.range,
|
|
843
|
+
kind: this.kind
|
|
844
|
+
}));
|
|
838
845
|
return result;
|
|
839
846
|
}
|
|
840
847
|
}
|
|
@@ -924,7 +931,7 @@ class NamespaceStatement extends AstNode_2.Statement {
|
|
|
924
931
|
this.nameExpression = options.nameExpression;
|
|
925
932
|
this.body = options.body;
|
|
926
933
|
this.name = this.getName(Parser_1.ParseMode.BrighterScript);
|
|
927
|
-
this.symbolTable = new
|
|
934
|
+
this.symbolTable = new SymbolTable_1.SymbolTable(`NamespaceStatement: '${this.name}'`, () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
928
935
|
}
|
|
929
936
|
get range() {
|
|
930
937
|
return this.cacheRange();
|
|
@@ -993,14 +1000,14 @@ class ImportStatement extends AstNode_2.Statement {
|
|
|
993
1000
|
this.kind = AstNode_1.AstNodeKind.ImportStatement;
|
|
994
1001
|
this.tokens = {
|
|
995
1002
|
import: options.import,
|
|
996
|
-
|
|
1003
|
+
path: options.path
|
|
997
1004
|
};
|
|
998
|
-
this.range = util_1.util.createBoundingRange(this.tokens.import, this.tokens.
|
|
999
|
-
if (this.tokens.
|
|
1005
|
+
this.range = util_1.util.createBoundingRange(this.tokens.import, this.tokens.path);
|
|
1006
|
+
if (this.tokens.path) {
|
|
1000
1007
|
//remove quotes
|
|
1001
|
-
this.filePath = this.tokens.
|
|
1008
|
+
this.filePath = this.tokens.path.text.replace(/"/g, '');
|
|
1002
1009
|
//adjust the range to exclude the quotes
|
|
1003
|
-
this.tokens.
|
|
1010
|
+
this.tokens.path.range = util_1.util.createRange(this.tokens.path.range.start.line, this.tokens.path.range.start.character + 1, this.tokens.path.range.end.line, this.tokens.path.range.end.character - 1);
|
|
1004
1011
|
}
|
|
1005
1012
|
}
|
|
1006
1013
|
transpile(state) {
|
|
@@ -1010,7 +1017,7 @@ class ImportStatement extends AstNode_2.Statement {
|
|
|
1010
1017
|
`'`,
|
|
1011
1018
|
state.transpileToken(this.tokens.import, 'import'),
|
|
1012
1019
|
' ',
|
|
1013
|
-
state.transpileToken(this.tokens.
|
|
1020
|
+
state.transpileToken(this.tokens.path)
|
|
1014
1021
|
];
|
|
1015
1022
|
}
|
|
1016
1023
|
/**
|
|
@@ -1022,7 +1029,7 @@ class ImportStatement extends AstNode_2.Statement {
|
|
|
1022
1029
|
(_b = (_a = this.tokens.import) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : 'import',
|
|
1023
1030
|
' ',
|
|
1024
1031
|
//replace any `.bs` extension with `.brs`
|
|
1025
|
-
this.tokens.
|
|
1032
|
+
this.tokens.path.text.replace(/\.bs"?$/i, '.brs"')
|
|
1026
1033
|
];
|
|
1027
1034
|
}
|
|
1028
1035
|
walk(visitor, options) {
|
|
@@ -1145,15 +1152,21 @@ class InterfaceStatement extends AstNode_2.Statement {
|
|
|
1145
1152
|
const resultType = new InterfaceType_1.InterfaceType(this.getName(Parser_1.ParseMode.BrighterScript), superIface);
|
|
1146
1153
|
for (const statement of this.methods) {
|
|
1147
1154
|
const memberType = statement === null || statement === void 0 ? void 0 : statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); // no typechain info needed
|
|
1148
|
-
const flag = statement.isOptional ?
|
|
1155
|
+
const flag = statement.isOptional ? 1 /* SymbolTypeFlag.runtime */ | 4 /* SymbolTypeFlag.optional */ : 1 /* SymbolTypeFlag.runtime */;
|
|
1149
1156
|
resultType.addMember((_b = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _b === void 0 ? void 0 : _b.text, { definingNode: statement }, memberType, flag);
|
|
1150
1157
|
}
|
|
1151
1158
|
for (const statement of this.fields) {
|
|
1152
1159
|
const memberType = statement === null || statement === void 0 ? void 0 : statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); // no typechain info needed
|
|
1153
|
-
const flag = statement.isOptional ?
|
|
1160
|
+
const flag = statement.isOptional ? 1 /* SymbolTypeFlag.runtime */ | 4 /* SymbolTypeFlag.optional */ : 1 /* SymbolTypeFlag.runtime */;
|
|
1154
1161
|
resultType.addMember((_c = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, memberType, flag);
|
|
1155
1162
|
}
|
|
1156
|
-
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry(
|
|
1163
|
+
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry({
|
|
1164
|
+
name: this.getName(Parser_1.ParseMode.BrighterScript),
|
|
1165
|
+
type: resultType,
|
|
1166
|
+
data: options.data,
|
|
1167
|
+
range: this.range,
|
|
1168
|
+
kind: this.kind
|
|
1169
|
+
}));
|
|
1157
1170
|
return resultType;
|
|
1158
1171
|
}
|
|
1159
1172
|
}
|
|
@@ -1299,7 +1312,7 @@ class InterfaceMethodStatement extends AstNode_2.Statement {
|
|
|
1299
1312
|
}
|
|
1300
1313
|
let funcName = this.getName(Parser_1.ParseMode.BrighterScript);
|
|
1301
1314
|
resultType.setName(funcName);
|
|
1302
|
-
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry(resultType.name, resultType, options.data, this.range));
|
|
1315
|
+
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry({ name: resultType.name, type: resultType, data: options.data, range: this.range, kind: this.kind }));
|
|
1303
1316
|
return resultType;
|
|
1304
1317
|
}
|
|
1305
1318
|
}
|
|
@@ -1320,7 +1333,7 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1320
1333
|
extends: options.extends
|
|
1321
1334
|
};
|
|
1322
1335
|
this.parentClassName = options.parentClassName;
|
|
1323
|
-
this.symbolTable = new
|
|
1336
|
+
this.symbolTable = new SymbolTable_1.SymbolTable(`ClassStatement: '${(_b = this.tokens.name) === null || _b === void 0 ? void 0 : _b.text}'`, () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
1324
1337
|
for (let statement of this.body) {
|
|
1325
1338
|
if ((0, reflection_1.isMethodStatement)(statement)) {
|
|
1326
1339
|
this.methods.push(statement);
|
|
@@ -1459,8 +1472,8 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1459
1472
|
}
|
|
1460
1473
|
getConstructorType() {
|
|
1461
1474
|
var _a, _b;
|
|
1462
|
-
const constructorType = (_b = (_a = this.getConstructorFunction()) === null || _a === void 0 ? void 0 : _a.getType({ flags:
|
|
1463
|
-
constructorType.returnType = this.getType({ flags:
|
|
1475
|
+
const constructorType = (_b = (_a = this.getConstructorFunction()) === null || _a === void 0 ? void 0 : _a.getType({ flags: 1 /* SymbolTypeFlag.runtime */ })) !== null && _b !== void 0 ? _b : new TypedFunctionType_1.TypedFunctionType(null);
|
|
1476
|
+
constructorType.returnType = this.getType({ flags: 1 /* SymbolTypeFlag.runtime */ });
|
|
1464
1477
|
return constructorType;
|
|
1465
1478
|
}
|
|
1466
1479
|
/**
|
|
@@ -1605,30 +1618,30 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1605
1618
|
const resultType = new ClassType_1.ClassType(this.getName(Parser_1.ParseMode.BrighterScript), superClass);
|
|
1606
1619
|
for (const statement of this.methods) {
|
|
1607
1620
|
const funcType = statement === null || statement === void 0 ? void 0 : statement.func.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); //no typechain needed
|
|
1608
|
-
let flag =
|
|
1621
|
+
let flag = 1 /* SymbolTypeFlag.runtime */;
|
|
1609
1622
|
if (((_b = statement.accessModifier) === null || _b === void 0 ? void 0 : _b.kind) === TokenKind_1.TokenKind.Private) {
|
|
1610
|
-
flag |=
|
|
1623
|
+
flag |= 8 /* SymbolTypeFlag.private */;
|
|
1611
1624
|
}
|
|
1612
1625
|
if (((_c = statement.accessModifier) === null || _c === void 0 ? void 0 : _c.kind) === TokenKind_1.TokenKind.Protected) {
|
|
1613
|
-
flag |=
|
|
1626
|
+
flag |= 16 /* SymbolTypeFlag.protected */;
|
|
1614
1627
|
}
|
|
1615
1628
|
resultType.addMember((_d = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _d === void 0 ? void 0 : _d.text, { definingNode: statement }, funcType, flag);
|
|
1616
1629
|
}
|
|
1617
1630
|
for (const statement of this.fields) {
|
|
1618
1631
|
const fieldType = statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); //no typechain needed
|
|
1619
|
-
let flag =
|
|
1632
|
+
let flag = 1 /* SymbolTypeFlag.runtime */;
|
|
1620
1633
|
if (statement.isOptional) {
|
|
1621
|
-
flag |=
|
|
1634
|
+
flag |= 4 /* SymbolTypeFlag.optional */;
|
|
1622
1635
|
}
|
|
1623
1636
|
if (((_e = statement.tokens.accessModifier) === null || _e === void 0 ? void 0 : _e.kind) === TokenKind_1.TokenKind.Private) {
|
|
1624
|
-
flag |=
|
|
1637
|
+
flag |= 8 /* SymbolTypeFlag.private */;
|
|
1625
1638
|
}
|
|
1626
1639
|
if (((_f = statement.tokens.accessModifier) === null || _f === void 0 ? void 0 : _f.kind) === TokenKind_1.TokenKind.Protected) {
|
|
1627
|
-
flag |=
|
|
1640
|
+
flag |= 16 /* SymbolTypeFlag.protected */;
|
|
1628
1641
|
}
|
|
1629
1642
|
resultType.addMember((_g = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _g === void 0 ? void 0 : _g.text, { definingNode: statement }, fieldType, flag);
|
|
1630
1643
|
}
|
|
1631
|
-
(_h = options.typeChain) === null || _h === void 0 ? void 0 : _h.push(new interfaces_1.TypeChainEntry(resultType.name, resultType, options.data, this.range));
|
|
1644
|
+
(_h = options.typeChain) === null || _h === void 0 ? void 0 : _h.push(new interfaces_1.TypeChainEntry({ name: resultType.name, type: resultType, data: options.data, range: this.range, kind: this.kind }));
|
|
1632
1645
|
return resultType;
|
|
1633
1646
|
}
|
|
1634
1647
|
}
|
|
@@ -1822,7 +1835,7 @@ class FieldStatement extends AstNode_2.Statement {
|
|
|
1822
1835
|
*/
|
|
1823
1836
|
getType(options) {
|
|
1824
1837
|
var _a, _b, _c, _d;
|
|
1825
|
-
return (_d = (_b = (_a = this.typeExpression) === null || _a === void 0 ? void 0 : _a.getType(Object.assign(Object.assign({}, options), { flags:
|
|
1838
|
+
return (_d = (_b = (_a = this.typeExpression) === null || _a === void 0 ? void 0 : _a.getType(Object.assign(Object.assign({}, options), { flags: 2 /* SymbolTypeFlag.typetime */ }))) !== null && _b !== void 0 ? _b : (_c = this.initialValue) === null || _c === void 0 ? void 0 : _c.getType(Object.assign(Object.assign({}, options), { flags: 1 /* SymbolTypeFlag.runtime */ }))) !== null && _d !== void 0 ? _d : DynamicType_1.DynamicType.instance;
|
|
1826
1839
|
}
|
|
1827
1840
|
getLeadingTrivia() {
|
|
1828
1841
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -1841,7 +1854,7 @@ class FieldStatement extends AstNode_2.Statement {
|
|
|
1841
1854
|
for (let annotation of (_a = this.annotations) !== null && _a !== void 0 ? _a : []) {
|
|
1842
1855
|
result.push(...annotation.getTypedef(state), state.newline, state.indent());
|
|
1843
1856
|
}
|
|
1844
|
-
let type = this.getType({ flags:
|
|
1857
|
+
let type = this.getType({ flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1845
1858
|
if ((0, reflection_1.isInvalidType)(type) || (0, reflection_1.isVoidType)(type)) {
|
|
1846
1859
|
type = new DynamicType_1.DynamicType();
|
|
1847
1860
|
}
|
|
@@ -1958,13 +1971,13 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
1958
1971
|
var _a;
|
|
1959
1972
|
super();
|
|
1960
1973
|
this.kind = AstNode_1.AstNodeKind.EnumStatement;
|
|
1961
|
-
this.symbolTable = new SymbolTable_2.SymbolTable('Enum');
|
|
1962
1974
|
this.tokens = {
|
|
1963
1975
|
enum: options.enum,
|
|
1964
1976
|
name: options.name,
|
|
1965
1977
|
endEnum: options.endEnum
|
|
1966
1978
|
};
|
|
1967
|
-
this.
|
|
1979
|
+
this.symbolTable = new SymbolTable_1.SymbolTable('Enum');
|
|
1980
|
+
this.body = (_a = options.body) !== null && _a !== void 0 ? _a : [];
|
|
1968
1981
|
}
|
|
1969
1982
|
get range() {
|
|
1970
1983
|
return util_1.util.createBoundingRange(this.tokens.enum, this.tokens.name, ...this.body, this.tokens.endEnum);
|
|
@@ -2081,7 +2094,7 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
2081
2094
|
const resultType = new EnumType_1.EnumType(this.fullName, (_a = members[0]) === null || _a === void 0 ? void 0 : _a.getType(options).underlyingType);
|
|
2082
2095
|
resultType.pushMemberProvider(() => this.getSymbolTable());
|
|
2083
2096
|
for (const statement of members) {
|
|
2084
|
-
resultType.addMember((_c = (_b = statement === null || statement === void 0 ? void 0 : statement.tokens) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, statement.getType(options),
|
|
2097
|
+
resultType.addMember((_c = (_b = statement === null || statement === void 0 ? void 0 : statement.tokens) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, statement.getType(options), 1 /* SymbolTypeFlag.runtime */);
|
|
2085
2098
|
}
|
|
2086
2099
|
return resultType;
|
|
2087
2100
|
}
|