brighterscript 1.0.0-alpha.16 → 1.0.0-alpha.19
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 +72 -1
- package/README.md +30 -9
- package/dist/BsConfig.d.ts +4 -0
- package/dist/DiagnosticMessages.d.ts +16 -1
- package/dist/DiagnosticMessages.js +15 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/Logger.js +5 -5
- package/dist/Logger.js.map +1 -1
- package/dist/Program.d.ts +2 -2
- package/dist/Program.js +3 -3
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +4 -0
- package/dist/ProgramBuilder.js +14 -4
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +58 -8
- package/dist/Scope.js +141 -25
- package/dist/Scope.js.map +1 -1
- package/dist/XmlScope.js +1 -1
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/creators.d.ts +3 -3
- package/dist/astUtils/creators.js +8 -8
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/creators.spec.js +10 -0
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +8 -5
- package/dist/astUtils/reflection.js +18 -6
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +10 -0
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +4 -1
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +2 -0
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +2 -2
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +7 -3
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
- package/dist/{types/FunctionType.spec.d.ts → bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts} +0 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +32 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
- package/dist/cli.js +9 -2
- package/dist/cli.js.map +1 -1
- package/dist/examples/plugins/removePrint.js +12 -14
- package/dist/examples/plugins/removePrint.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 +2 -2
- package/dist/files/BrsFile.js +89 -59
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +187 -67
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/globalCallables.js +79 -79
- package/dist/globalCallables.js.map +1 -1
- package/dist/interfaces.d.ts +43 -4
- package/dist/parser/Expression.d.ts +75 -8
- package/dist/parser/Expression.js +147 -22
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +6 -6
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +3 -6
- package/dist/parser/Parser.js +145 -142
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +61 -6
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +2 -2
- package/dist/parser/SGTypes.js +2 -2
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +63 -43
- package/dist/parser/Statement.js +135 -92
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +181 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +7 -5
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/types/ArrayType.js +4 -1
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +3 -1
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.d.ts +4 -2
- package/dist/types/BooleanType.js +7 -2
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BooleanType.spec.js +3 -1
- package/dist/types/BooleanType.spec.js.map +1 -1
- package/dist/types/BscType.d.ts +1 -0
- package/dist/types/BscType.js +16 -1
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/CustomType.js +10 -0
- package/dist/types/CustomType.js.map +1 -1
- package/dist/types/DoubleType.d.ts +2 -0
- package/dist/types/DoubleType.js +7 -2
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DoubleType.spec.js +3 -1
- package/dist/types/DoubleType.spec.js.map +1 -1
- package/dist/types/DynamicType.d.ts +2 -0
- package/dist/types/DynamicType.js +5 -1
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/FloatType.d.ts +3 -1
- package/dist/types/FloatType.js +7 -2
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FloatType.spec.js +2 -0
- package/dist/types/FloatType.spec.js.map +1 -1
- package/dist/types/FunctionType.d.ts +3 -22
- package/dist/types/FunctionType.js +8 -68
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +3 -1
- package/dist/types/IntegerType.js +7 -2
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/IntegerType.spec.js +3 -1
- package/dist/types/IntegerType.spec.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +13 -10
- package/dist/types/InterfaceType.js +33 -29
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +36 -16
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/InvalidType.d.ts +4 -2
- package/dist/types/InvalidType.js +7 -2
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/InvalidType.spec.js +2 -0
- package/dist/types/InvalidType.spec.js.map +1 -1
- package/dist/types/LazyType.js +4 -0
- package/dist/types/LazyType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +3 -1
- package/dist/types/LongIntegerType.js +7 -2
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.spec.js +2 -0
- package/dist/types/LongIntegerType.spec.js.map +1 -1
- package/dist/types/ObjectType.d.ts +2 -1
- package/dist/types/ObjectType.js +4 -2
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/StringType.d.ts +4 -2
- package/dist/types/StringType.js +7 -2
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/StringType.spec.js +2 -0
- package/dist/types/StringType.spec.js.map +1 -1
- package/dist/types/TypedFunctionType.d.ts +28 -0
- package/dist/types/TypedFunctionType.js +88 -0
- package/dist/types/TypedFunctionType.js.map +1 -0
- package/dist/types/TypedFunctionType.spec.d.ts +1 -0
- package/dist/types/TypedFunctionType.spec.js +37 -0
- package/dist/types/TypedFunctionType.spec.js.map +1 -0
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/VoidType.d.ts +4 -2
- package/dist/types/VoidType.js +5 -1
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.js +7 -2
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +6 -7
- package/dist/util.js +43 -55
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +14 -1
- package/dist/validators/ClassValidator.js +129 -82
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +3 -2
- package/dist/types/FunctionType.spec.js +0 -35
- package/dist/types/FunctionType.spec.js.map +0 -1
- package/dist/types/UniversalFunctionType.d.ts +0 -9
- package/dist/types/UniversalFunctionType.js +0 -25
- package/dist/types/UniversalFunctionType.js.map +0 -1
package/dist/ProgramBuilder.js
CHANGED
|
@@ -97,6 +97,7 @@ class ProgramBuilder {
|
|
|
97
97
|
else {
|
|
98
98
|
this.logger.log(`No bsconfig.json file found, using default options`);
|
|
99
99
|
}
|
|
100
|
+
this.loadRequires();
|
|
100
101
|
this.loadPlugins();
|
|
101
102
|
}
|
|
102
103
|
catch (e) {
|
|
@@ -135,10 +136,10 @@ class ProgramBuilder {
|
|
|
135
136
|
return program;
|
|
136
137
|
}
|
|
137
138
|
loadPlugins() {
|
|
138
|
-
var _a, _b, _c;
|
|
139
|
+
var _a, _b, _c, _d;
|
|
139
140
|
const cwd = (_a = this.options.cwd) !== null && _a !== void 0 ? _a : process.cwd();
|
|
140
|
-
const plugins = util_1.util.loadPlugins(cwd, this.options.plugins, (pathOrModule, err) => this.logger.error(`Error when loading plugin '${pathOrModule}':`, err));
|
|
141
|
-
this.logger.log(`Loading ${(
|
|
141
|
+
const plugins = util_1.util.loadPlugins(cwd, (_b = this.options.plugins) !== null && _b !== void 0 ? _b : [], (pathOrModule, err) => this.logger.error(`Error when loading plugin '${pathOrModule}':`, err));
|
|
142
|
+
this.logger.log(`Loading ${(_d = (_c = this.options.plugins) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0} plugins for cwd "${cwd}"`);
|
|
142
143
|
for (let plugin of plugins) {
|
|
143
144
|
this.plugins.add(plugin);
|
|
144
145
|
}
|
|
@@ -146,6 +147,15 @@ class ProgramBuilder {
|
|
|
146
147
|
builder: this
|
|
147
148
|
});
|
|
148
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* `require()` every options.require path
|
|
152
|
+
*/
|
|
153
|
+
loadRequires() {
|
|
154
|
+
var _a;
|
|
155
|
+
for (const dep of (_a = this.options.require) !== null && _a !== void 0 ? _a : []) {
|
|
156
|
+
util_1.util.resolveRequire(this.options.cwd, dep);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
149
159
|
clearConsole() {
|
|
150
160
|
if (this.allowConsoleClearing) {
|
|
151
161
|
util_1.util.clearConsole();
|
|
@@ -373,7 +383,7 @@ class ProgramBuilder {
|
|
|
373
383
|
async loadAllFilesAST() {
|
|
374
384
|
await this.logger.time(Logger_1.LogLevel.log, ['Parsing files'], async () => {
|
|
375
385
|
let errorCount = 0;
|
|
376
|
-
let files = await this.logger.time(Logger_1.LogLevel.debug, ['
|
|
386
|
+
let files = await this.logger.time(Logger_1.LogLevel.debug, ['getFilePaths'], async () => {
|
|
377
387
|
return util_1.util.getFilePaths(this.options);
|
|
378
388
|
});
|
|
379
389
|
this.logger.trace('ProgramBuilder.loadAllFilesAST() files:', files);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramBuilder.js","sourceRoot":"","sources":["../src/ProgramBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProgramBuilder.js","sourceRoot":"","sources":["../src/ProgramBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/Scope.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CompletionItem, Position, Range } from 'vscode-languageserver';
|
|
2
2
|
import { Location } from 'vscode-languageserver';
|
|
3
|
-
import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap, FileLink } from './interfaces';
|
|
3
|
+
import type { CallableContainer, BsDiagnostic, BscFile, CallableContainerMap, FileLink, InheritableStatement, InheritableType } from './interfaces';
|
|
4
4
|
import type { Program } from './Program';
|
|
5
|
-
import type { NamespaceStatement, Statement, FunctionStatement, ClassStatement, EnumStatement } from './parser/Statement';
|
|
5
|
+
import type { NamespaceStatement, Statement, FunctionStatement, ClassStatement, InterfaceStatement, EnumStatement } from './parser/Statement';
|
|
6
6
|
import type { FunctionExpression, NewExpression } from './parser/Expression';
|
|
7
7
|
import { ParseMode } from './parser/Parser';
|
|
8
8
|
import { Cache } from './Cache';
|
|
@@ -10,7 +10,6 @@ import type { BrsFile } from './files/BrsFile';
|
|
|
10
10
|
import type { DependencyGraph, DependencyChangedEvent } from './DependencyGraph';
|
|
11
11
|
import { SymbolTable } from './SymbolTable';
|
|
12
12
|
import type { BscType, TypeContext } from './types/BscType';
|
|
13
|
-
import type { CustomType } from './types/CustomType';
|
|
14
13
|
/**
|
|
15
14
|
* A class to keep track of all declarations within a given scope (like source scope, component scope)
|
|
16
15
|
*/
|
|
@@ -38,6 +37,18 @@ export declare class Scope {
|
|
|
38
37
|
* @param containingNamespace - The namespace used to resolve relative class names. (i.e. the namespace around the current statement trying to find a class)
|
|
39
38
|
*/
|
|
40
39
|
getClass(className: string, containingNamespace?: string): ClassStatement;
|
|
40
|
+
/**
|
|
41
|
+
* Get the interface with the specified name.
|
|
42
|
+
* @param ifaceName - The interface name, including the namespace of the interface if possible
|
|
43
|
+
* @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
|
|
44
|
+
*/
|
|
45
|
+
getInterface(ifaceName: string, containingNamespace?: string): InterfaceStatement;
|
|
46
|
+
/**
|
|
47
|
+
* Get either the class or interface, etc. with a given name
|
|
48
|
+
* @param name - The name, including the namespace of the interface if possible
|
|
49
|
+
* @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find the interface or class)
|
|
50
|
+
*/
|
|
51
|
+
getNamedTypeStatement(name: string, containingNamespace?: string): InheritableStatement;
|
|
41
52
|
/**
|
|
42
53
|
* A cache of a map of tokens -> TokenSymbolLookups, which are the result of getSymbolTypeFromToken()
|
|
43
54
|
* Sometimes the lookup of symbols may take a while if there are lazyTypes or multiple tokens in a chain
|
|
@@ -51,23 +62,62 @@ export declare class Scope {
|
|
|
51
62
|
*/
|
|
52
63
|
getClassFileLink(className: string, containingNamespace?: string): FileLink<ClassStatement>;
|
|
53
64
|
/**
|
|
54
|
-
*
|
|
55
|
-
* @param
|
|
65
|
+
* Get an interface and its containing file by the interface name
|
|
66
|
+
* @param ifaceName - The interface name, including the namespace of the interface if possible
|
|
67
|
+
* @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
|
|
68
|
+
*/
|
|
69
|
+
getInterfaceFileLink(ifaceName: string, containingNamespace?: string): FileLink<InterfaceStatement>;
|
|
70
|
+
/**
|
|
71
|
+
* Get a InheritableStatement and its containing file by the name of the interface or class
|
|
72
|
+
* @param name - The name of the interface or class, including the namespace of the class if possible
|
|
73
|
+
* @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
|
|
56
74
|
*/
|
|
75
|
+
getFileLink(name: string, containingNamespace?: string): FileLink<InheritableStatement>;
|
|
76
|
+
/**
|
|
77
|
+
* Gets the parent class of the given class
|
|
78
|
+
* @param klass - The class to get the parent of, if possible
|
|
79
|
+
*/
|
|
57
80
|
getParentClass(klass: ClassStatement): ClassStatement;
|
|
81
|
+
/**
|
|
82
|
+
* Gets the parent interface of the given interface
|
|
83
|
+
* @param iface - The interface to get the parent of, if possible
|
|
84
|
+
*/
|
|
85
|
+
getParentInterface(iface: InterfaceStatement): InterfaceStatement;
|
|
86
|
+
/**
|
|
87
|
+
* Gets the parent of an Interface or Class
|
|
88
|
+
* @param stmt - The class or interface to get the parent of, if possible
|
|
89
|
+
*/
|
|
90
|
+
getParentStatement(stmt: InheritableStatement): InheritableStatement;
|
|
58
91
|
/**
|
|
59
92
|
* Tests if a class exists with the specified name
|
|
60
93
|
* @param className - the all-lower-case namespace-included class name
|
|
61
94
|
* @param namespaceName - the current namespace name
|
|
62
95
|
*/
|
|
63
96
|
hasClass(className: string, namespaceName?: string): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Tests if an interface exists with the specified name
|
|
99
|
+
* @param ifaceName - the all-lower-case namespace-included class name
|
|
100
|
+
* @param namespaceName - the current namespace name
|
|
101
|
+
*/
|
|
102
|
+
hasInterface(ifaceName: string, namespaceName?: string): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Tests if a class OR an interface, etc. exists with the specified name
|
|
105
|
+
* @param name - the all-lower-case namespace-included class or interface name
|
|
106
|
+
* @param namespaceName - the current namespace name
|
|
107
|
+
*/
|
|
108
|
+
hasNamedType(name: string, namespaceName?: string): boolean;
|
|
64
109
|
/**
|
|
65
110
|
* A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
|
|
66
111
|
* The key is stored in lower case
|
|
67
112
|
*/
|
|
68
113
|
getClassMap(): Map<string, FileLink<ClassStatement>>;
|
|
69
|
-
getAncestorTypeListByContext(thisType: BscType, context?: TypeContext):
|
|
70
|
-
|
|
114
|
+
getAncestorTypeListByContext(thisType: BscType, context?: TypeContext): InheritableType[];
|
|
115
|
+
/**
|
|
116
|
+
* A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
|
|
117
|
+
* The key is stored in lower case
|
|
118
|
+
*/
|
|
119
|
+
getInterfaceMap(): Map<string, FileLink<InterfaceStatement>>;
|
|
120
|
+
getAncestorTypeList(className: string, functionExpression?: FunctionExpression): InheritableType[];
|
|
71
121
|
/**
|
|
72
122
|
* A dictionary of all enums in this scope. This includes namespaced enums always with their full name.
|
|
73
123
|
* The key is stored in lower case
|
|
@@ -238,7 +288,7 @@ export declare class Scope {
|
|
|
238
288
|
/**
|
|
239
289
|
* @param className - The name of the class (including namespace if possible)
|
|
240
290
|
* @param callsiteNamespace - the name of the namespace where the call site resides (this is NOT the known namespace of the class).
|
|
241
|
-
* This is used to help resolve non-namespaced class names that reside in the same
|
|
291
|
+
* This is used to help resolve non-namespaced class names that reside in the same namespace as the call site.
|
|
242
292
|
*/
|
|
243
293
|
getClassHierarchy(className: string, callsiteNamespace?: string): FileLink<ClassStatement>[];
|
|
244
294
|
}
|
package/dist/Scope.js
CHANGED
|
@@ -54,6 +54,24 @@ class Scope {
|
|
|
54
54
|
var _a;
|
|
55
55
|
return (_a = this.getClassFileLink(className, containingNamespace)) === null || _a === void 0 ? void 0 : _a.item;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the interface with the specified name.
|
|
59
|
+
* @param ifaceName - The interface name, including the namespace of the interface if possible
|
|
60
|
+
* @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
|
|
61
|
+
*/
|
|
62
|
+
getInterface(ifaceName, containingNamespace) {
|
|
63
|
+
var _a;
|
|
64
|
+
return (_a = this.getInterfaceFileLink(ifaceName, containingNamespace)) === null || _a === void 0 ? void 0 : _a.item;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get either the class or interface, etc. with a given name
|
|
68
|
+
* @param name - The name, including the namespace of the interface if possible
|
|
69
|
+
* @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find the interface or class)
|
|
70
|
+
*/
|
|
71
|
+
getNamedTypeStatement(name, containingNamespace) {
|
|
72
|
+
var _a;
|
|
73
|
+
return (_a = this.getFileLink(name, containingNamespace)) === null || _a === void 0 ? void 0 : _a.item;
|
|
74
|
+
}
|
|
57
75
|
/**
|
|
58
76
|
* A cache of a map of tokens -> TokenSymbolLookups, which are the result of getSymbolTypeFromToken()
|
|
59
77
|
* Sometimes the lookup of symbols may take a while if there are lazyTypes or multiple tokens in a chain
|
|
@@ -78,11 +96,34 @@ class Scope {
|
|
|
78
96
|
return cls;
|
|
79
97
|
}
|
|
80
98
|
/**
|
|
81
|
-
*
|
|
82
|
-
* @param
|
|
99
|
+
* Get an interface and its containing file by the interface name
|
|
100
|
+
* @param ifaceName - The interface name, including the namespace of the interface if possible
|
|
101
|
+
* @param containingNamespace - The namespace used to resolve relative interface names. (i.e. the namespace around the current statement trying to find a interface)
|
|
83
102
|
*/
|
|
103
|
+
getInterfaceFileLink(ifaceName, containingNamespace) {
|
|
104
|
+
const lowerName = ifaceName === null || ifaceName === void 0 ? void 0 : ifaceName.toLowerCase();
|
|
105
|
+
const ifaceMap = this.getInterfaceMap();
|
|
106
|
+
let iface = ifaceMap.get(util_1.util.getFullyQualifiedClassName(lowerName, containingNamespace === null || containingNamespace === void 0 ? void 0 : containingNamespace.toLowerCase()));
|
|
107
|
+
//if we couldn't find the iface by its full namespaced name, look for a global class with that name
|
|
108
|
+
if (!iface) {
|
|
109
|
+
iface = ifaceMap.get(lowerName);
|
|
110
|
+
}
|
|
111
|
+
return iface;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get a InheritableStatement and its containing file by the name of the interface or class
|
|
115
|
+
* @param name - The name of the interface or class, including the namespace of the class if possible
|
|
116
|
+
* @param containingNamespace - The namespace used to resolve relative names. (i.e. the namespace around the current statement trying to find a class)
|
|
117
|
+
*/
|
|
118
|
+
getFileLink(name, containingNamespace) {
|
|
119
|
+
return this.getClassFileLink(name, containingNamespace) || this.getInterfaceFileLink(name, containingNamespace);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Gets the parent class of the given class
|
|
123
|
+
* @param klass - The class to get the parent of, if possible
|
|
124
|
+
*/
|
|
84
125
|
getParentClass(klass) {
|
|
85
|
-
if (klass === null || klass === void 0 ? void 0 : klass.
|
|
126
|
+
if (klass === null || klass === void 0 ? void 0 : klass.hasParent()) {
|
|
86
127
|
const lowerParentClassNames = klass.getPossibleFullParentNames().map(name => name.toLowerCase());
|
|
87
128
|
for (const lowerParentClassName of lowerParentClassNames) {
|
|
88
129
|
const foundParent = this.getClassMap().get(lowerParentClassName);
|
|
@@ -92,6 +133,33 @@ class Scope {
|
|
|
92
133
|
}
|
|
93
134
|
}
|
|
94
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Gets the parent interface of the given interface
|
|
138
|
+
* @param iface - The interface to get the parent of, if possible
|
|
139
|
+
*/
|
|
140
|
+
getParentInterface(iface) {
|
|
141
|
+
if (iface === null || iface === void 0 ? void 0 : iface.hasParent()) {
|
|
142
|
+
const lowerParentClassNames = iface.getPossibleFullParentNames().map(name => name.toLowerCase());
|
|
143
|
+
for (const lowerParentClassName of lowerParentClassNames) {
|
|
144
|
+
const foundParent = this.getInterfaceMap().get(lowerParentClassName);
|
|
145
|
+
if (foundParent) {
|
|
146
|
+
return foundParent.item;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Gets the parent of an Interface or Class
|
|
153
|
+
* @param stmt - The class or interface to get the parent of, if possible
|
|
154
|
+
*/
|
|
155
|
+
getParentStatement(stmt) {
|
|
156
|
+
if ((0, reflection_1.isInterfaceStatement)(stmt)) {
|
|
157
|
+
return this.getParentInterface(stmt);
|
|
158
|
+
}
|
|
159
|
+
else if ((0, reflection_1.isClassStatement)(stmt)) {
|
|
160
|
+
return this.getParentClass(stmt);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
95
163
|
/**
|
|
96
164
|
* Tests if a class exists with the specified name
|
|
97
165
|
* @param className - the all-lower-case namespace-included class name
|
|
@@ -100,6 +168,22 @@ class Scope {
|
|
|
100
168
|
hasClass(className, namespaceName) {
|
|
101
169
|
return !!this.getClass(className, namespaceName);
|
|
102
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Tests if an interface exists with the specified name
|
|
173
|
+
* @param ifaceName - the all-lower-case namespace-included class name
|
|
174
|
+
* @param namespaceName - the current namespace name
|
|
175
|
+
*/
|
|
176
|
+
hasInterface(ifaceName, namespaceName) {
|
|
177
|
+
return !!this.hasInterface(ifaceName, namespaceName);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Tests if a class OR an interface, etc. exists with the specified name
|
|
181
|
+
* @param name - the all-lower-case namespace-included class or interface name
|
|
182
|
+
* @param namespaceName - the current namespace name
|
|
183
|
+
*/
|
|
184
|
+
hasNamedType(name, namespaceName) {
|
|
185
|
+
return !!this.getNamedTypeStatement(name, namespaceName);
|
|
186
|
+
}
|
|
103
187
|
/**
|
|
104
188
|
* A dictionary of all classes in this scope. This includes namespaced classes always with their full name.
|
|
105
189
|
* The key is stored in lower case
|
|
@@ -125,22 +209,44 @@ class Scope {
|
|
|
125
209
|
getAncestorTypeListByContext(thisType, context) {
|
|
126
210
|
var _a;
|
|
127
211
|
const funcExpr = (_a = context === null || context === void 0 ? void 0 : context.file) === null || _a === void 0 ? void 0 : _a.getFunctionExpressionAtPosition(context === null || context === void 0 ? void 0 : context.position);
|
|
128
|
-
if ((0, reflection_1.isCustomType)(thisType)) {
|
|
212
|
+
if ((0, reflection_1.isCustomType)(thisType) || (0, reflection_1.isInterfaceType)(thisType)) {
|
|
129
213
|
return this.getAncestorTypeList(thisType.name, funcExpr);
|
|
130
214
|
}
|
|
131
215
|
return [];
|
|
132
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* A dictionary of all Interfaces in this scope. This includes namespaced Interfaces always with their full name.
|
|
219
|
+
* The key is stored in lower case
|
|
220
|
+
*/
|
|
221
|
+
getInterfaceMap() {
|
|
222
|
+
return this.cache.getOrAdd('interfaceMap', () => {
|
|
223
|
+
const map = new Map();
|
|
224
|
+
this.enumerateBrsFiles((file) => {
|
|
225
|
+
var _a;
|
|
226
|
+
if ((0, reflection_1.isBrsFile)(file)) {
|
|
227
|
+
for (let cls of file.parser.references.interfaceStatements) {
|
|
228
|
+
const lowerClassName = (_a = cls.getName(Parser_1.ParseMode.BrighterScript)) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
229
|
+
//only track classes with a defined name (i.e. exclude nameless malformed classes)
|
|
230
|
+
if (lowerClassName) {
|
|
231
|
+
map.set(lowerClassName, { item: cls, file: file });
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
return map;
|
|
237
|
+
});
|
|
238
|
+
}
|
|
133
239
|
getAncestorTypeList(className, functionExpression) {
|
|
134
240
|
var _a, _b;
|
|
135
241
|
const lowerNamespaceName = (_a = functionExpression.namespaceName) === null || _a === void 0 ? void 0 : _a.getName().toLowerCase();
|
|
136
242
|
const ancestors = [];
|
|
137
|
-
let
|
|
138
|
-
if (
|
|
139
|
-
ancestors.push(
|
|
243
|
+
let currentClassOrIFace = (_b = this.getFileLink(className, lowerNamespaceName)) === null || _b === void 0 ? void 0 : _b.item;
|
|
244
|
+
if (currentClassOrIFace) {
|
|
245
|
+
ancestors.push(currentClassOrIFace === null || currentClassOrIFace === void 0 ? void 0 : currentClassOrIFace.getThisBscType());
|
|
140
246
|
}
|
|
141
|
-
while (
|
|
142
|
-
|
|
143
|
-
ancestors.push(
|
|
247
|
+
while (currentClassOrIFace === null || currentClassOrIFace === void 0 ? void 0 : currentClassOrIFace.hasParent()) {
|
|
248
|
+
currentClassOrIFace = this.getParentStatement(currentClassOrIFace);
|
|
249
|
+
ancestors.push(currentClassOrIFace === null || currentClassOrIFace === void 0 ? void 0 : currentClassOrIFace.getThisBscType());
|
|
144
250
|
}
|
|
145
251
|
// TODO TYPES: this should probably be cached
|
|
146
252
|
return ancestors;
|
|
@@ -502,7 +608,7 @@ class Scope {
|
|
|
502
608
|
var _a, _b;
|
|
503
609
|
if (!this._symbolTable) {
|
|
504
610
|
this._symbolTable = new SymbolTable_1.SymbolTable((_a = this.getParentScope()) === null || _a === void 0 ? void 0 : _a.symbolTable);
|
|
505
|
-
this._symbolTable.addSymbol('m', null, new ObjectType_1.ObjectType(this.memberTable));
|
|
611
|
+
this._symbolTable.addSymbol('m', null, new ObjectType_1.ObjectType('object', this.memberTable));
|
|
506
612
|
for (let file of this.getOwnFiles()) {
|
|
507
613
|
if ((0, reflection_1.isBrsFile)(file)) {
|
|
508
614
|
this._symbolTable.mergeSymbolTable((_b = file.parser) === null || _b === void 0 ? void 0 : _b.symbolTable);
|
|
@@ -531,7 +637,7 @@ class Scope {
|
|
|
531
637
|
* This will only rebuilt if the symbol table has not been built before
|
|
532
638
|
*/
|
|
533
639
|
linkSymbolTable() {
|
|
534
|
-
var _a;
|
|
640
|
+
var _a, _b;
|
|
535
641
|
for (const file of this.getAllFiles()) {
|
|
536
642
|
if ((0, reflection_1.isBrsFile)(file)) {
|
|
537
643
|
file.parser.symbolTable.setParent(this.symbolTable);
|
|
@@ -562,6 +668,12 @@ class Scope {
|
|
|
562
668
|
const classStmt = (_a = pair[1]) === null || _a === void 0 ? void 0 : _a.item;
|
|
563
669
|
classStmt === null || classStmt === void 0 ? void 0 : classStmt.buildSymbolTable(this.getParentClass(classStmt));
|
|
564
670
|
}
|
|
671
|
+
// also link interfaces
|
|
672
|
+
const ifaceMap = this.getInterfaceMap();
|
|
673
|
+
for (const pair of ifaceMap) {
|
|
674
|
+
const ifaceStmt = (_b = pair[1]) === null || _b === void 0 ? void 0 : _b.item;
|
|
675
|
+
ifaceStmt === null || ifaceStmt === void 0 ? void 0 : ifaceStmt.buildSymbolTable(this.getParentInterface(ifaceStmt));
|
|
676
|
+
}
|
|
565
677
|
}
|
|
566
678
|
unlinkSymbolTable() {
|
|
567
679
|
var _a;
|
|
@@ -626,22 +738,26 @@ class Scope {
|
|
|
626
738
|
diagnosticDetectInvalidFunctionExpressionTypes(file) {
|
|
627
739
|
var _a, _b, _c, _d;
|
|
628
740
|
for (let func of file.parser.references.functionExpressions) {
|
|
629
|
-
const returnType = (0, BscType_1.getTypeFromContext)(func.
|
|
630
|
-
if (!returnType && func.
|
|
741
|
+
const returnType = (0, BscType_1.getTypeFromContext)(func.getReturnType(), { file: file, scope: this, position: (_a = func.range) === null || _a === void 0 ? void 0 : _a.start });
|
|
742
|
+
if (!returnType && func.returnType) {
|
|
631
743
|
// check if this custom type is in our class map
|
|
632
|
-
const returnTypeName = func.
|
|
744
|
+
const returnTypeName = func.returnType.getText();
|
|
633
745
|
const currentNamespaceName = (_b = func.namespaceName) === null || _b === void 0 ? void 0 : _b.getName(Parser_1.ParseMode.BrighterScript);
|
|
634
746
|
if (!this.hasClass(returnTypeName, currentNamespaceName)) {
|
|
635
|
-
this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.invalidFunctionReturnType(returnTypeName)), { range: func.
|
|
747
|
+
this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.invalidFunctionReturnType(returnTypeName)), { range: func.returnType.range, file: file }));
|
|
636
748
|
}
|
|
637
749
|
}
|
|
638
750
|
for (let param of func.parameters) {
|
|
639
|
-
const
|
|
640
|
-
|
|
641
|
-
|
|
751
|
+
const typeContext = { file: file, scope: this, position: (_c = param.range) === null || _c === void 0 ? void 0 : _c.start };
|
|
752
|
+
let paramType = (0, BscType_1.getTypeFromContext)(param.getType(), typeContext);
|
|
753
|
+
while ((0, reflection_1.isArrayType)(paramType)) {
|
|
754
|
+
paramType = (0, BscType_1.getTypeFromContext)(paramType.getDefaultType(typeContext), typeContext);
|
|
755
|
+
}
|
|
756
|
+
if (!paramType && param.type) {
|
|
757
|
+
const paramTypeName = param.type.getText();
|
|
642
758
|
const currentNamespaceName = (_d = func.namespaceName) === null || _d === void 0 ? void 0 : _d.getName(Parser_1.ParseMode.BrighterScript);
|
|
643
759
|
if (!this.hasClass(paramTypeName, currentNamespaceName)) {
|
|
644
|
-
this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.functionParameterTypeIsInvalid(param.name.text, paramTypeName)), { range: param.
|
|
760
|
+
this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.functionParameterTypeIsInvalid(param.name.text, paramTypeName)), { range: param.type.range, file: file }));
|
|
645
761
|
}
|
|
646
762
|
}
|
|
647
763
|
}
|
|
@@ -656,7 +772,7 @@ class Scope {
|
|
|
656
772
|
for (let expCall of file.functionCalls) {
|
|
657
773
|
const symbolTypeInfo = file.getSymbolTypeFromToken(expCall.name, expCall.functionExpression, this);
|
|
658
774
|
let funcType = symbolTypeInfo.type;
|
|
659
|
-
if (!(0, reflection_1.
|
|
775
|
+
if (!(0, reflection_1.isTypedFunctionType)(funcType) && !(0, reflection_1.isDynamicType)(funcType)) {
|
|
660
776
|
// We don't know if this is a function. Try seeing if it is a global
|
|
661
777
|
const callableContainer = util_1.util.getCallableContainerByFunctionCall(callableContainersByLowerName, expCall);
|
|
662
778
|
if (callableContainer) {
|
|
@@ -672,10 +788,10 @@ class Scope {
|
|
|
672
788
|
}
|
|
673
789
|
}
|
|
674
790
|
}
|
|
675
|
-
if ((0, reflection_1.
|
|
791
|
+
if ((0, reflection_1.isFunctionType)(funcType)) {
|
|
676
792
|
// This is a generic function, and it is callable
|
|
677
793
|
}
|
|
678
|
-
else if ((0, reflection_1.
|
|
794
|
+
else if ((0, reflection_1.isTypedFunctionType)(funcType)) {
|
|
679
795
|
// Check for Argument count mismatch.
|
|
680
796
|
//get min/max parameter count for callable
|
|
681
797
|
let paramCount = util_1.util.getMinMaxParamCount(funcType.params);
|
|
@@ -757,7 +873,7 @@ class Scope {
|
|
|
757
873
|
for (let symbol of func.symbolTable.getOwnSymbols()) {
|
|
758
874
|
const symbolNameLower = symbol.name.toLowerCase();
|
|
759
875
|
//if the var is a function
|
|
760
|
-
if ((0, reflection_1.
|
|
876
|
+
if ((0, reflection_1.isTypedFunctionType)(symbol.type)) {
|
|
761
877
|
//local var function with same name as stdlib function
|
|
762
878
|
if (
|
|
763
879
|
//has same name as stdlib
|
|
@@ -976,7 +1092,7 @@ class Scope {
|
|
|
976
1092
|
/**
|
|
977
1093
|
* @param className - The name of the class (including namespace if possible)
|
|
978
1094
|
* @param callsiteNamespace - the name of the namespace where the call site resides (this is NOT the known namespace of the class).
|
|
979
|
-
* This is used to help resolve non-namespaced class names that reside in the same
|
|
1095
|
+
* This is used to help resolve non-namespaced class names that reside in the same namespace as the call site.
|
|
980
1096
|
*/
|
|
981
1097
|
getClassHierarchy(className, callsiteNamespace) {
|
|
982
1098
|
var _a, _b;
|