brighterscript 1.0.0-alpha.25 → 1.0.0-alpha.26
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 +28 -0
- package/bsconfig.schema.json +5 -0
- package/dist/AstValidationSegmenter.js +4 -4
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/BsConfig.d.ts +1 -0
- package/dist/Program.d.ts +1 -1
- package/dist/Program.js +18 -19
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +0 -5
- package/dist/Scope.js +8 -14
- package/dist/Scope.js.map +1 -1
- package/dist/XmlScope.d.ts +0 -5
- package/dist/XmlScope.js +3 -21
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.js +3 -3
- 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 +32 -12
- 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 +1 -1
- package/dist/astUtils/reflection.js +1 -1
- 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 +3 -3
- 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.js +2 -2
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +0 -2
- 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 +28 -28
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +4 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +51 -20
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +73 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +3 -3
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +4 -11
- package/dist/files/BrsFile.js +39 -206
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +56 -2
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/interfaces.d.ts +32 -1
- 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 +288 -145
- package/dist/parser/Expression.js +310 -271
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +11 -11
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +5 -0
- package/dist/parser/Parser.js +315 -120
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +42 -185
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/Statement.d.ts +332 -188
- package/dist/parser/Statement.js +475 -364
- 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/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 +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.js +11 -4
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
- package/dist/util.d.ts +17 -8
- package/dist/util.js +96 -51
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.js +6 -6
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TryCatch.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/TryCatch.spec.ts"],"names":[],"mappings":";;AAAA,gEAAmD;AACnD,yCAAsC;AACtC,+CAAoD;AACpD,6DAAoE;AAGpE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;;QACtC,MAAM,MAAM,GAAG,eAAM,CAAC,KAAK,CAAC;;;;;;;;SAQ3B,CAAC,CAAC;QACH,IAAA,yBAAM,EAAC,MAAA,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;QAEpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAqB,iCAAoB,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAsB,CAAC;QAC5E,IAAA,yBAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,6BAAiB,CAAC,CAAC;QACjD,IAAA,yBAAM,EAAC,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAA,yBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChF,IAAA,yBAAM,EAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QAClC,IAAA,yBAAM,EAAC,MAAA,KAAM,CAAC,MAAM,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClD,IAAA,yBAAM,EAAC,KAAM,CAAC,iBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"TryCatch.spec.js","sourceRoot":"","sources":["../../../../src/parser/tests/statement/TryCatch.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ const util_1 = require("../util");
|
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
10
10
|
class BuiltInInterfaceAdder {
|
|
11
11
|
static addBuiltInInterfacesToType(thisType, overrides) {
|
|
12
|
-
var _a, _b, _c, _d, _e, _f;
|
|
12
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
13
13
|
const builtInMemberTable = thisType.getBuiltInMemberTable();
|
|
14
14
|
if (!builtInMemberTable) {
|
|
15
15
|
// no memberTable to add to
|
|
@@ -32,13 +32,20 @@ class BuiltInInterfaceAdder {
|
|
|
32
32
|
for (const iface of interfacesToLoop) {
|
|
33
33
|
const lowerIfaceName = iface.name.toLowerCase();
|
|
34
34
|
const ifaceData = ((_b = roku_types_1.interfaces[lowerIfaceName]) !== null && _b !== void 0 ? _b : roku_types_1.events[lowerIfaceName]);
|
|
35
|
-
|
|
35
|
+
if (builtInComponent.interfaces) {
|
|
36
|
+
// this type has interfaces - add them directly as members
|
|
37
|
+
const ifaceType = (_c = this.getLookupTable()) === null || _c === void 0 ? void 0 : _c.getSymbolType(iface.name, { flags: SymbolTable_1.SymbolTypeFlag.typetime });
|
|
38
|
+
if (ifaceType) {
|
|
39
|
+
builtInMemberTable.addSymbol(iface.name, { completionPriority: 1 }, ifaceType, SymbolTable_1.SymbolTypeFlag.runtime);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const method of (_d = ifaceData.methods) !== null && _d !== void 0 ? _d : []) {
|
|
36
43
|
const methodFuncType = this.buildMethodFromDocData(method, overrides, thisType);
|
|
37
44
|
builtInMemberTable.addSymbol(method.name, { description: method.description, completionPriority: 1 }, methodFuncType, SymbolTable_1.SymbolTypeFlag.runtime);
|
|
38
45
|
}
|
|
39
|
-
for (const property of (
|
|
46
|
+
for (const property of (_e = ifaceData.properties) !== null && _e !== void 0 ? _e : []) {
|
|
40
47
|
const override = overrides === null || overrides === void 0 ? void 0 : overrides.get(property.name.toLowerCase());
|
|
41
|
-
builtInMemberTable.addSymbol(property.name, { description: property.description, completionPriority: 1 }, (
|
|
48
|
+
builtInMemberTable.addSymbol(property.name, { description: property.description, completionPriority: 1 }, (_g = (_f = override === null || override === void 0 ? void 0 : override.type) !== null && _f !== void 0 ? _f : this.getPrimitiveType(property.type)) !== null && _g !== void 0 ? _g : this.getPrimitiveType('dynamic'), SymbolTable_1.SymbolTypeFlag.runtime);
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltInInterfaceAdder.js","sourceRoot":"","sources":["../../src/types/BuiltInInterfaceAdder.ts"],"names":[],"mappings":";;;AACA,8CAAsE;AACtE,oCAAiC;AAGjC,gDAAgD;AAEhD,uDAA0P;AAE1P,kCAA2B;AAU3B,kEAAkE;AAClE,MAAa,qBAAqB;IAS9B,MAAM,CAAC,0BAA0B,CAAC,QAAiB,EAAE,SAAiD;;QAClG,MAAM,kBAAkB,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAC5D,IAAI,CAAC,kBAAkB,EAAE;YACrB,2BAA2B;YAC3B,uDAAuD;YACvD,iDAAiD;YACjD,OAAO;SACV;QACD,oDAAoD;QACpD,4FAA4F;QAC5F,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,EAAE;YACnB,gFAAgF;YAChF,+HAA+H;YAC/H,OAAO;SACV;QACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;SAClF;QACD,MAAM,gBAAgB,GAAG,MAAA,gBAAgB,CAAC,UAAU,mCAAI,CAAC,gBAAgB,CAAC,CAAC;QAE3E,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE;YAClC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,CAAC,MAAA,uBAAU,CAAC,cAAc,CAAC,mCAAI,mBAAM,CAAC,cAAc,CAAC,CAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"BuiltInInterfaceAdder.js","sourceRoot":"","sources":["../../src/types/BuiltInInterfaceAdder.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type Diagnostic, type Position, type
|
|
1
|
+
import { type Diagnostic, type Position, type Location } from 'vscode-languageserver';
|
|
2
|
+
import { Range } from 'vscode-languageserver';
|
|
2
3
|
import type { BsConfig, FinalizedBsConfig } from './BsConfig';
|
|
3
4
|
import type { CallableContainer, BsDiagnostic, FileReference, CallableContainerMap, CompilerPlugin, ExpressionInfo, TypeChainEntry, TypeChainProcessResult } from './interfaces';
|
|
4
5
|
import { BooleanType } from './types/BooleanType';
|
|
@@ -16,12 +17,11 @@ import type { Identifier, Locatable, Token } from './lexer/Token';
|
|
|
16
17
|
import { SourceNode } from 'source-map';
|
|
17
18
|
import type { BrsFile } from './files/BrsFile';
|
|
18
19
|
import type { XmlFile } from './files/XmlFile';
|
|
19
|
-
import type
|
|
20
|
-
import { type Expression, type Statement } from './parser/AstNode';
|
|
21
|
-
import type { BscType } from './types/BscType';
|
|
22
|
-
import { FunctionType } from './types/FunctionType';
|
|
23
|
-
import type { SymbolTable } from './SymbolTable';
|
|
20
|
+
import { type AstNode, type Expression, type Statement } from './parser/AstNode';
|
|
24
21
|
import type { UnresolvedSymbol } from './AstValidationSegmenter';
|
|
22
|
+
import type { SymbolTable } from './SymbolTable';
|
|
23
|
+
import type { BscType } from './types';
|
|
24
|
+
import { FunctionType } from './types/FunctionType';
|
|
25
25
|
export declare class Util {
|
|
26
26
|
clearConsole(): void;
|
|
27
27
|
/**
|
|
@@ -151,6 +151,7 @@ export declare class Util {
|
|
|
151
151
|
*/
|
|
152
152
|
rangeContains(range: Range | undefined, position: Position | undefined): boolean;
|
|
153
153
|
comparePositionToRange(position: Position | undefined, range: Range | undefined): 1 | -1 | 0;
|
|
154
|
+
comparePosition(a: Position | undefined, b: Position): 1 | -1 | 0;
|
|
154
155
|
/**
|
|
155
156
|
* Combine all the documentation found before a token (i.e. comment tokens)
|
|
156
157
|
*/
|
|
@@ -292,11 +293,19 @@ export declare class Util {
|
|
|
292
293
|
*/
|
|
293
294
|
createRangeFromPositions(startPosition: Position, endPosition: Position): Range;
|
|
294
295
|
/**
|
|
295
|
-
*
|
|
296
|
-
*
|
|
296
|
+
* Gets the bounding range of a bunch of ranges or objects that have ranges
|
|
297
|
+
* TODO: this does a full iteration of the args. If the args were guaranteed to be in range order, we could optimize this
|
|
297
298
|
*/
|
|
298
299
|
createBoundingRange(...locatables: Array<{
|
|
299
300
|
range?: Range;
|
|
301
|
+
} | Range>): Range | undefined;
|
|
302
|
+
/**
|
|
303
|
+
* Gets the bounding range of an object that contains a bunch of tokens
|
|
304
|
+
* @param tokens Object with tokens in it
|
|
305
|
+
* @returns Range containing all the tokens
|
|
306
|
+
*/
|
|
307
|
+
createBoundingRangeFromTokens(tokens: Record<string, {
|
|
308
|
+
range?: Range;
|
|
300
309
|
}>): Range | undefined;
|
|
301
310
|
/**
|
|
302
311
|
* A cache of `Position` objects. The key is a 26bit integer created from line and character and leveraging bitshifting
|
package/dist/util.js
CHANGED
|
@@ -6,6 +6,7 @@ const fsExtra = require("fs-extra");
|
|
|
6
6
|
const jsonc_parser_1 = require("jsonc-parser");
|
|
7
7
|
const path = require("path");
|
|
8
8
|
const roku_deploy_1 = require("roku-deploy");
|
|
9
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
9
10
|
const vscode_uri_1 = require("vscode-uri");
|
|
10
11
|
const xml2js = require("xml2js");
|
|
11
12
|
const DiagnosticMessages_1 = require("./DiagnosticMessages");
|
|
@@ -26,15 +27,13 @@ const visitors_1 = require("./astUtils/visitors");
|
|
|
26
27
|
const source_map_1 = require("source-map");
|
|
27
28
|
const requireRelative = require("require-relative");
|
|
28
29
|
const AstNode_1 = require("./parser/AstNode");
|
|
29
|
-
const creators_1 = require("./astUtils/creators");
|
|
30
|
-
const FunctionType_1 = require("./types/FunctionType");
|
|
31
|
-
const ArrayType_1 = require("./types/ArrayType");
|
|
32
30
|
const SymbolTable_1 = require("./SymbolTable");
|
|
31
|
+
const creators_1 = require("./astUtils/creators");
|
|
32
|
+
const diagnosticUtils_1 = require("./diagnosticUtils");
|
|
33
|
+
const types_1 = require("./types");
|
|
33
34
|
const AssociativeArrayType_1 = require("./types/AssociativeArrayType");
|
|
34
35
|
const ComponentType_1 = require("./types/ComponentType");
|
|
35
|
-
const
|
|
36
|
-
const ReferenceType_1 = require("./types/ReferenceType");
|
|
37
|
-
const UnionType_1 = require("./types/UnionType");
|
|
36
|
+
const FunctionType_1 = require("./types/FunctionType");
|
|
38
37
|
class Util {
|
|
39
38
|
constructor() {
|
|
40
39
|
/**
|
|
@@ -350,7 +349,8 @@ class Util {
|
|
|
350
349
|
emitDefinitions: config.emitDefinitions === true ? true : false,
|
|
351
350
|
removeParameterTypes: config.removeParameterTypes === true ? true : false,
|
|
352
351
|
logLevel: logLevel,
|
|
353
|
-
bslibDestinationDir: bslibDestinationDir
|
|
352
|
+
bslibDestinationDir: bslibDestinationDir,
|
|
353
|
+
legacyCallfuncHandling: config.legacyCallfuncHandling === true ? true : false
|
|
354
354
|
};
|
|
355
355
|
//mutate `config` in case anyone is holding a reference to the incomplete one
|
|
356
356
|
const merged = Object.assign(config, configWithDefaults);
|
|
@@ -549,14 +549,27 @@ class Util {
|
|
|
549
549
|
return this.comparePositionToRange(position, range) === 0;
|
|
550
550
|
}
|
|
551
551
|
comparePositionToRange(position, range) {
|
|
552
|
-
//stop if the either range is
|
|
552
|
+
//stop if the either range is missng
|
|
553
553
|
if (!position || !range) {
|
|
554
554
|
return 0;
|
|
555
555
|
}
|
|
556
|
-
if (
|
|
556
|
+
if (this.comparePosition(position, range.start) < 0) {
|
|
557
|
+
return -1;
|
|
558
|
+
}
|
|
559
|
+
if (this.comparePosition(position, range.end) > 0) {
|
|
560
|
+
return 1;
|
|
561
|
+
}
|
|
562
|
+
return 0;
|
|
563
|
+
}
|
|
564
|
+
comparePosition(a, b) {
|
|
565
|
+
//stop if the either position is missing
|
|
566
|
+
if (!a || !b) {
|
|
567
|
+
return 0;
|
|
568
|
+
}
|
|
569
|
+
if (a.line < b.line || (a.line === b.line && a.character < b.character)) {
|
|
557
570
|
return -1;
|
|
558
571
|
}
|
|
559
|
-
if (
|
|
572
|
+
if (a.line > b.line || (a.line === b.line && a.character > b.character)) {
|
|
560
573
|
return 1;
|
|
561
574
|
}
|
|
562
575
|
return 0;
|
|
@@ -969,35 +982,67 @@ class Util {
|
|
|
969
982
|
return this.createRange(startPosition.line, startPosition.character, endPosition.line, endPosition.character);
|
|
970
983
|
}
|
|
971
984
|
/**
|
|
972
|
-
*
|
|
973
|
-
*
|
|
985
|
+
* Gets the bounding range of a bunch of ranges or objects that have ranges
|
|
986
|
+
* TODO: this does a full iteration of the args. If the args were guaranteed to be in range order, we could optimize this
|
|
974
987
|
*/
|
|
975
988
|
createBoundingRange(...locatables) {
|
|
976
|
-
let
|
|
977
|
-
let
|
|
978
|
-
for (let
|
|
979
|
-
//set the leftmost non-null-range item
|
|
980
|
-
const left = locatables[i];
|
|
989
|
+
let startPosition;
|
|
990
|
+
let endPosition;
|
|
991
|
+
for (let locatable of locatables) {
|
|
981
992
|
//the range might be a getter, so access it exactly once
|
|
982
|
-
const
|
|
983
|
-
if (!
|
|
984
|
-
|
|
993
|
+
const locatableRange = vscode_languageserver_1.Range.is(locatable) ? locatable : locatable === null || locatable === void 0 ? void 0 : locatable.range;
|
|
994
|
+
if (!locatableRange) {
|
|
995
|
+
continue;
|
|
985
996
|
}
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
//the range might be a getter, so access it exactly once
|
|
989
|
-
const rightRange = right === null || right === void 0 ? void 0 : right.range;
|
|
990
|
-
if (!rightmostRange && rightRange) {
|
|
991
|
-
rightmostRange = rightRange;
|
|
997
|
+
if (!startPosition) {
|
|
998
|
+
startPosition = locatableRange.start;
|
|
992
999
|
}
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
1000
|
+
else if (this.comparePosition(locatableRange.start, startPosition) < 0) {
|
|
1001
|
+
startPosition = locatableRange.start;
|
|
1002
|
+
}
|
|
1003
|
+
if (!endPosition) {
|
|
1004
|
+
endPosition = locatableRange.end;
|
|
1005
|
+
}
|
|
1006
|
+
else if (this.comparePosition(locatableRange.end, endPosition) > 0) {
|
|
1007
|
+
endPosition = locatableRange.end;
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
if (startPosition && endPosition) {
|
|
1011
|
+
return this.createRangeFromPositions(startPosition, endPosition);
|
|
1012
|
+
}
|
|
1013
|
+
else {
|
|
1014
|
+
return undefined;
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
/**
|
|
1018
|
+
* Gets the bounding range of an object that contains a bunch of tokens
|
|
1019
|
+
* @param tokens Object with tokens in it
|
|
1020
|
+
* @returns Range containing all the tokens
|
|
1021
|
+
*/
|
|
1022
|
+
createBoundingRangeFromTokens(tokens) {
|
|
1023
|
+
var _a;
|
|
1024
|
+
let startPosition;
|
|
1025
|
+
let endPosition;
|
|
1026
|
+
for (let key in tokens) {
|
|
1027
|
+
let locatableRange = (_a = tokens === null || tokens === void 0 ? void 0 : tokens[key]) === null || _a === void 0 ? void 0 : _a.range;
|
|
1028
|
+
if (!locatableRange) {
|
|
1029
|
+
continue;
|
|
1030
|
+
}
|
|
1031
|
+
if (!startPosition) {
|
|
1032
|
+
startPosition = locatableRange.start;
|
|
1033
|
+
}
|
|
1034
|
+
else if (this.comparePosition(locatableRange.start, startPosition) < 0) {
|
|
1035
|
+
startPosition = locatableRange.start;
|
|
1036
|
+
}
|
|
1037
|
+
if (!endPosition) {
|
|
1038
|
+
endPosition = locatableRange.end;
|
|
1039
|
+
}
|
|
1040
|
+
else if (this.comparePosition(locatableRange.end, endPosition) > 0) {
|
|
1041
|
+
endPosition = locatableRange.end;
|
|
996
1042
|
}
|
|
997
1043
|
}
|
|
998
|
-
if (
|
|
999
|
-
|
|
1000
|
-
return this.createRangeFromPositions(leftmostRange.start, rightmostRange ? rightmostRange.end : leftmostRange.end);
|
|
1044
|
+
if (startPosition && endPosition) {
|
|
1045
|
+
return this.createRangeFromPositions(startPosition, endPosition);
|
|
1001
1046
|
}
|
|
1002
1047
|
else {
|
|
1003
1048
|
return undefined;
|
|
@@ -1122,7 +1167,7 @@ class Util {
|
|
|
1122
1167
|
return rect2dType;
|
|
1123
1168
|
}
|
|
1124
1169
|
function getColorType() {
|
|
1125
|
-
return (0,
|
|
1170
|
+
return (0, types_1.unionTypeFactory)([IntegerType_1.IntegerType.instance, StringType_1.StringType.instance]);
|
|
1126
1171
|
}
|
|
1127
1172
|
if (typeDescriptorLower.startsWith('array of ')) {
|
|
1128
1173
|
let arrayOfTypeName = typeDescriptorLower.substring(9); //cut off beginning 'array of'
|
|
@@ -1135,7 +1180,7 @@ class Util {
|
|
|
1135
1180
|
arrayOfTypeName = arrayOfTypeName.substring(0, arrayOfTypeName.length - 1);
|
|
1136
1181
|
}
|
|
1137
1182
|
let arrayType = this.getNodeFieldType(arrayOfTypeName, lookupTable);
|
|
1138
|
-
return new
|
|
1183
|
+
return new types_1.ArrayType(arrayType);
|
|
1139
1184
|
}
|
|
1140
1185
|
else if (typeDescriptorLower.startsWith('option ')) {
|
|
1141
1186
|
const actualTypeName = typeDescriptorLower.substring('option '.length); //cut off beginning 'option '
|
|
@@ -1152,22 +1197,22 @@ class Util {
|
|
|
1152
1197
|
return getColorType();
|
|
1153
1198
|
}
|
|
1154
1199
|
else if (typeDescriptorLower === 'vector2d' || typeDescriptorLower === 'floatarray') {
|
|
1155
|
-
return new
|
|
1200
|
+
return new types_1.ArrayType(FloatType_1.FloatType.instance);
|
|
1156
1201
|
}
|
|
1157
1202
|
else if (typeDescriptorLower === 'vector2darray') {
|
|
1158
|
-
return new
|
|
1203
|
+
return new types_1.ArrayType(new types_1.ArrayType(FloatType_1.FloatType.instance));
|
|
1159
1204
|
}
|
|
1160
1205
|
else if (typeDescriptorLower === 'intarray') {
|
|
1161
|
-
return new
|
|
1206
|
+
return new types_1.ArrayType(IntegerType_1.IntegerType.instance);
|
|
1162
1207
|
}
|
|
1163
1208
|
else if (typeDescriptorLower === 'colorarray') {
|
|
1164
|
-
return new
|
|
1209
|
+
return new types_1.ArrayType(getColorType());
|
|
1165
1210
|
}
|
|
1166
1211
|
else if (typeDescriptorLower === 'boolarray') {
|
|
1167
|
-
return new
|
|
1212
|
+
return new types_1.ArrayType(BooleanType_1.BooleanType.instance);
|
|
1168
1213
|
}
|
|
1169
1214
|
else if (typeDescriptorLower === 'stringarray' || typeDescriptorLower === 'strarray') {
|
|
1170
|
-
return new
|
|
1215
|
+
return new types_1.ArrayType(StringType_1.StringType.instance);
|
|
1171
1216
|
}
|
|
1172
1217
|
else if (typeDescriptorLower === 'int') {
|
|
1173
1218
|
return IntegerType_1.IntegerType.instance;
|
|
@@ -1182,7 +1227,7 @@ class Util {
|
|
|
1182
1227
|
return BooleanType_1.BooleanType.instance;
|
|
1183
1228
|
}
|
|
1184
1229
|
else if (typeDescriptorLower === 'array') {
|
|
1185
|
-
return new
|
|
1230
|
+
return new types_1.ArrayType();
|
|
1186
1231
|
}
|
|
1187
1232
|
else if (typeDescriptorLower === 'assocarray' || typeDescriptorLower === 'associative array' || typeDescriptorLower === 'associativearray') {
|
|
1188
1233
|
return new AssociativeArrayType_1.AssociativeArrayType();
|
|
@@ -1191,13 +1236,13 @@ class Util {
|
|
|
1191
1236
|
return ComponentType_1.ComponentType.instance;
|
|
1192
1237
|
}
|
|
1193
1238
|
else if (typeDescriptorLower === 'nodearray') {
|
|
1194
|
-
return new
|
|
1239
|
+
return new types_1.ArrayType(ComponentType_1.ComponentType.instance);
|
|
1195
1240
|
}
|
|
1196
1241
|
else if (typeDescriptorLower === 'rect2d') {
|
|
1197
1242
|
return getRect2dType();
|
|
1198
1243
|
}
|
|
1199
1244
|
else if (typeDescriptorLower === 'rect2darray') {
|
|
1200
|
-
return new
|
|
1245
|
+
return new types_1.ArrayType(getRect2dType());
|
|
1201
1246
|
}
|
|
1202
1247
|
else if (lookupTable) {
|
|
1203
1248
|
//try doing a lookup
|
|
@@ -1213,7 +1258,7 @@ class Util {
|
|
|
1213
1258
|
binaryOperatorResultType(leftType, operator, rightType) {
|
|
1214
1259
|
if (((0, reflection_1.isAnyReferenceType)(leftType) && !leftType.isResolvable()) ||
|
|
1215
1260
|
((0, reflection_1.isAnyReferenceType)(rightType) && !rightType.isResolvable())) {
|
|
1216
|
-
return new
|
|
1261
|
+
return new types_1.BinaryOperatorReferenceType(leftType, operator, rightType, (lhs, op, rhs) => {
|
|
1217
1262
|
return this.binaryOperatorResultType(lhs, op, rhs);
|
|
1218
1263
|
});
|
|
1219
1264
|
}
|
|
@@ -1433,7 +1478,7 @@ class Util {
|
|
|
1433
1478
|
}
|
|
1434
1479
|
if ((0, reflection_1.isVariableExpression)(expression)) {
|
|
1435
1480
|
variableExpressions.push(expression);
|
|
1436
|
-
uniqueVarNames.add(expression.name.text);
|
|
1481
|
+
uniqueVarNames.add(expression.tokens.name.text);
|
|
1437
1482
|
}
|
|
1438
1483
|
}
|
|
1439
1484
|
// Collect all expressions. Most of these expressions are fairly small so this should be quick!
|
|
@@ -1596,9 +1641,9 @@ class Util {
|
|
|
1596
1641
|
loop: while (nextPart) {
|
|
1597
1642
|
switch (nextPart === null || nextPart === void 0 ? void 0 : nextPart.kind) {
|
|
1598
1643
|
case AstNode_1.AstNodeKind.AssignmentStatement:
|
|
1599
|
-
return [node.name];
|
|
1644
|
+
return [node.tokens.name];
|
|
1600
1645
|
case AstNode_1.AstNodeKind.DottedGetExpression:
|
|
1601
|
-
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.name);
|
|
1646
|
+
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.tokens.name);
|
|
1602
1647
|
nextPart = nextPart.obj;
|
|
1603
1648
|
continue;
|
|
1604
1649
|
case AstNode_1.AstNodeKind.CallExpression:
|
|
@@ -1608,16 +1653,16 @@ class Util {
|
|
|
1608
1653
|
nextPart = nextPart.expression;
|
|
1609
1654
|
continue;
|
|
1610
1655
|
case AstNode_1.AstNodeKind.VariableExpression:
|
|
1611
|
-
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.name);
|
|
1656
|
+
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.tokens.name);
|
|
1612
1657
|
break loop;
|
|
1613
1658
|
case AstNode_1.AstNodeKind.LiteralExpression:
|
|
1614
|
-
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.
|
|
1659
|
+
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.tokens.value);
|
|
1615
1660
|
break loop;
|
|
1616
1661
|
case AstNode_1.AstNodeKind.IndexedGetExpression:
|
|
1617
1662
|
nextPart = nextPart.obj;
|
|
1618
1663
|
continue;
|
|
1619
1664
|
case AstNode_1.AstNodeKind.FunctionParameterExpression:
|
|
1620
|
-
return [nextPart.name];
|
|
1665
|
+
return [nextPart.tokens.name];
|
|
1621
1666
|
case AstNode_1.AstNodeKind.GroupingExpression:
|
|
1622
1667
|
parts.push((0, creators_1.createIdentifier)('()', nextPart.range));
|
|
1623
1668
|
break loop;
|
|
@@ -1806,7 +1851,7 @@ class Util {
|
|
|
1806
1851
|
}
|
|
1807
1852
|
if ((0, reflection_1.isBinaryExpression)(expression.parent)) {
|
|
1808
1853
|
let currentExpr = expression.parent;
|
|
1809
|
-
while ((0, reflection_1.isBinaryExpression)(currentExpr) && currentExpr.operator.kind === TokenKind_1.TokenKind.Or) {
|
|
1854
|
+
while ((0, reflection_1.isBinaryExpression)(currentExpr) && currentExpr.tokens.operator.kind === TokenKind_1.TokenKind.Or) {
|
|
1810
1855
|
currentExpr = currentExpr.parent;
|
|
1811
1856
|
}
|
|
1812
1857
|
return (0, reflection_1.isTypeExpression)(currentExpr) || (0, reflection_1.isTypedArrayExpression)(currentExpr);
|