brighterscript 0.57.2 → 0.58.0
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 +19 -0
- package/README.md +2 -0
- package/dist/Program.d.ts +7 -1
- package/dist/Program.js +49 -18
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +2 -1
- package/dist/Scope.js +8 -8
- package/dist/Scope.js.map +1 -1
- package/dist/astUtils/AstEditor.d.ts +2 -3
- package/dist/astUtils/AstEditor.js.map +1 -1
- package/dist/astUtils/creators.d.ts +4 -4
- package/dist/astUtils/creators.js +6 -6
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +65 -64
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +3 -3
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +32 -31
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.js +4 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +6 -0
- package/dist/bscPlugin/hover/HoverProcessor.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/validation/BrsFileValidator.d.ts +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +118 -6
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +21 -19
- package/dist/bscPlugin/validation/ScopeValidator.js +164 -179
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +11 -5
- package/dist/files/BrsFile.js +15 -47
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +29 -0
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +9 -4
- package/dist/files/XmlFile.js +6 -30
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/tests/optionalChaning.spec.js +2 -1
- package/dist/files/tests/optionalChaning.spec.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +2 -3
- package/dist/parser/AstNode.d.ts +65 -0
- package/dist/parser/AstNode.js +93 -0
- package/dist/parser/AstNode.js.map +1 -0
- package/dist/parser/AstNode.spec.d.ts +1 -0
- package/dist/parser/AstNode.spec.js +44 -0
- package/dist/parser/AstNode.spec.js.map +1 -0
- package/dist/parser/Expression.d.ts +6 -43
- package/dist/parser/Expression.js +53 -81
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +11 -12
- package/dist/parser/Parser.js +118 -117
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.d.ts +1 -1
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/Statement.d.ts +15 -44
- package/dist/parser/Statement.js +91 -102
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +14 -7
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +37 -0
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +41 -0
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +109 -1
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +49 -4
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +7 -4
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/util.d.ts +11 -5
- package/dist/util.js +50 -0
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.js +22 -19
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +2 -2
|
@@ -19,154 +19,105 @@ const platformComponentNames = new Set(Object.values(roku_types_1.components).ma
|
|
|
19
19
|
*/
|
|
20
20
|
class ScopeValidator {
|
|
21
21
|
constructor() {
|
|
22
|
-
this.
|
|
22
|
+
this.expressionsByFile = new Cache_1.Cache();
|
|
23
23
|
this.onceCache = new Cache_1.Cache();
|
|
24
24
|
this.multiScopeCache = new Cache_1.Cache();
|
|
25
25
|
}
|
|
26
26
|
processEvent(event) {
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
this.detectDuplicateEnums(
|
|
30
|
-
this.validateCreateObjectCalls(event);
|
|
31
|
-
this.iterateExpressions(event);
|
|
32
|
-
event.scope.unlinkSymbolTable();
|
|
27
|
+
this.event = event;
|
|
28
|
+
this.walkFiles();
|
|
29
|
+
this.detectDuplicateEnums();
|
|
33
30
|
}
|
|
34
31
|
reset() {
|
|
32
|
+
this.event = undefined;
|
|
35
33
|
this.onceCache.clear();
|
|
36
34
|
this.multiScopeCache.clear();
|
|
37
|
-
this.events = [];
|
|
38
35
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
event.scope.addDiagnostics([diagnostic]);
|
|
46
|
-
return true;
|
|
36
|
+
walkFiles() {
|
|
37
|
+
this.event.scope.enumerateOwnFiles((file) => {
|
|
38
|
+
if ((0, reflection_1.isBrsFile)(file)) {
|
|
39
|
+
this.iterateFileExpressions(file);
|
|
40
|
+
this.validateCreateObjectCalls(file);
|
|
41
|
+
}
|
|
47
42
|
});
|
|
48
43
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
44
|
+
iterateFileExpressions(file) {
|
|
45
|
+
var _a, _b, _c, _d;
|
|
46
|
+
const { scope } = this.event;
|
|
47
|
+
//build an expression collection ONCE per file
|
|
48
|
+
const expressionInfos = this.expressionsByFile.getOrAdd(file, () => {
|
|
49
|
+
const result = [];
|
|
50
|
+
const expressions = [
|
|
51
|
+
...file.parser.references.expressions,
|
|
52
|
+
//all class "extends <whatever>" expressions
|
|
53
|
+
...file.parser.references.classStatements.map(x => { var _a; return (_a = x.parentClassName) === null || _a === void 0 ? void 0 : _a.expression; }),
|
|
54
|
+
//all interface "extends <whatever>" expressions
|
|
55
|
+
...file.parser.references.interfaceStatements.map(x => { var _a; return (_a = x.parentInterfaceName) === null || _a === void 0 ? void 0 : _a.expression; })
|
|
56
|
+
];
|
|
57
|
+
for (let expression of expressions) {
|
|
58
|
+
if (!expression) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
//walk left-to-right on every expression, only keep the ones that start with VariableExpression, and then keep subsequent DottedGet parts
|
|
62
|
+
const parts = util_1.default.getDottedGetPath(expression);
|
|
63
|
+
if (parts.length > 0) {
|
|
64
|
+
result.push({
|
|
65
|
+
parts: parts,
|
|
66
|
+
expression: expression
|
|
67
|
+
});
|
|
68
|
+
}
|
|
60
69
|
}
|
|
61
|
-
|
|
62
|
-
return diagnostic;
|
|
70
|
+
return result;
|
|
63
71
|
});
|
|
64
|
-
const info
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
let expression;
|
|
107
|
-
//lift the callee from call expressions to handle namespaced function calls
|
|
108
|
-
if ((0, reflection_1.isCallExpression)(referenceExpression)) {
|
|
109
|
-
expression = referenceExpression.callee;
|
|
110
|
-
}
|
|
111
|
-
else if ((0, reflection_1.isNewExpression)(referenceExpression)) {
|
|
112
|
-
expression = referenceExpression.call.callee;
|
|
72
|
+
outer: for (const info of expressionInfos) {
|
|
73
|
+
const symbolTable = info.expression.getSymbolTable();
|
|
74
|
+
const firstPart = info.parts[0];
|
|
75
|
+
//flag all unknown left-most variables
|
|
76
|
+
if (!symbolTable.hasSymbol((_a = firstPart.name) === null || _a === void 0 ? void 0 : _a.text)) {
|
|
77
|
+
this.addMultiScopeDiagnostic(Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.cannotFindName((_b = firstPart.name) === null || _b === void 0 ? void 0 : _b.text)), { range: firstPart.name.range }));
|
|
78
|
+
//skip to the next expression
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const firstNamespacePart = info.parts[0].name.text;
|
|
82
|
+
const firstNamespacePartLower = firstNamespacePart === null || firstNamespacePart === void 0 ? void 0 : firstNamespacePart.toLowerCase();
|
|
83
|
+
const namespaceContainer = scope.namespaceLookup.get(firstNamespacePartLower);
|
|
84
|
+
const enumStatement = scope.getEnum(firstNamespacePartLower);
|
|
85
|
+
//if this isn't a namespace, skip it
|
|
86
|
+
if (!namespaceContainer && !enumStatement) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
//catch unknown namespace items
|
|
90
|
+
const processedNames = [firstNamespacePart];
|
|
91
|
+
for (let i = 1; i < info.parts.length; i++) {
|
|
92
|
+
const part = info.parts[i];
|
|
93
|
+
processedNames.push(part.name.text);
|
|
94
|
+
const entityName = processedNames.join('.');
|
|
95
|
+
const entityNameLower = entityName.toLowerCase();
|
|
96
|
+
//if this is an enum member, stop validating here to prevent errors further down the chain
|
|
97
|
+
if (scope.getEnumMemberMap().has(entityNameLower)) {
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
if (!scope.getEnumMap().has(entityNameLower) &&
|
|
101
|
+
!scope.getClassMap().has(entityNameLower) &&
|
|
102
|
+
!scope.getConstMap().has(entityNameLower) &&
|
|
103
|
+
!scope.getCallableByName(entityNameLower) &&
|
|
104
|
+
!scope.namespaceLookup.has(entityNameLower)) {
|
|
105
|
+
//if this looks like an enum, provide a nicer error message
|
|
106
|
+
const theEnum = (_c = this.getEnum(scope, entityNameLower)) === null || _c === void 0 ? void 0 : _c.item;
|
|
107
|
+
if (theEnum) {
|
|
108
|
+
this.addMultiScopeDiagnostic(Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.unknownEnumValue((_d = part.name.text) === null || _d === void 0 ? void 0 : _d.split('.').pop(), theEnum.fullName)), { range: part.name.range, relatedInformation: [{
|
|
109
|
+
message: 'Enum declared here',
|
|
110
|
+
location: util_1.default.createLocation(vscode_uri_1.URI.file(file.srcPath).toString(), theEnum.tokens.name.range)
|
|
111
|
+
}] }));
|
|
113
112
|
}
|
|
114
113
|
else {
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
const tokens = util_1.default.getAllDottedGetParts(expression);
|
|
118
|
-
if ((tokens === null || tokens === void 0 ? void 0 : tokens.length) > 0) {
|
|
119
|
-
const symbolTable = this.getSymbolTable(scope, file, tokens[0].range.start); //flag all unknown left-most variables
|
|
120
|
-
if (!symbolTable.hasSymbol((_a = tokens[0]) === null || _a === void 0 ? void 0 : _a.text)) {
|
|
121
|
-
this.addMultiScopeDiagnostic(event, Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.cannotFindName(tokens[0].text)), { range: tokens[0].range }));
|
|
122
|
-
//skip to the next expression
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
//at this point, we know the first item is a known symbol. find unknown namespace parts after the first part
|
|
126
|
-
if (tokens.length > 1) {
|
|
127
|
-
const firstNamespacePart = tokens.shift().text;
|
|
128
|
-
const firstNamespacePartLower = firstNamespacePart === null || firstNamespacePart === void 0 ? void 0 : firstNamespacePart.toLowerCase();
|
|
129
|
-
const namespaceContainer = scope.namespaceLookup.get(firstNamespacePartLower);
|
|
130
|
-
const enumStatement = scope.getEnum(firstNamespacePartLower);
|
|
131
|
-
//if this isn't a namespace, skip it
|
|
132
|
-
if (!namespaceContainer && !enumStatement) {
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
//catch unknown namespace items
|
|
136
|
-
const processedNames = [firstNamespacePart];
|
|
137
|
-
for (const token of tokens !== null && tokens !== void 0 ? tokens : []) {
|
|
138
|
-
processedNames.push(token.text);
|
|
139
|
-
const entityName = processedNames.join('.');
|
|
140
|
-
const entityNameLower = entityName.toLowerCase();
|
|
141
|
-
//if this is an enum member, stop validating here to prevent errors further down the chain
|
|
142
|
-
if (scope.getEnumMemberMap().has(entityNameLower)) {
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
if (!scope.getEnumMap().has(entityNameLower) &&
|
|
146
|
-
!scope.getClassMap().has(entityNameLower) &&
|
|
147
|
-
!scope.getConstMap().has(entityNameLower) &&
|
|
148
|
-
!scope.getCallableByName(entityNameLower) &&
|
|
149
|
-
!scope.namespaceLookup.has(entityNameLower)) {
|
|
150
|
-
//if this looks like an enum, provide a nicer error message
|
|
151
|
-
const theEnum = (_b = this.getEnum(scope, entityNameLower)) === null || _b === void 0 ? void 0 : _b.item;
|
|
152
|
-
if (theEnum) {
|
|
153
|
-
this.addMultiScopeDiagnostic(event, Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.unknownEnumValue((_c = token.text) === null || _c === void 0 ? void 0 : _c.split('.').pop(), theEnum.fullName)), { range: tokens[tokens.length - 1].range, relatedInformation: [{
|
|
154
|
-
message: 'Enum declared here',
|
|
155
|
-
location: util_1.default.createLocation(vscode_uri_1.URI.file(file.srcPath).toString(), theEnum.tokens.name.range)
|
|
156
|
-
}] }));
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
this.addMultiScopeDiagnostic(event, Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName(token.text, entityName)), { range: token.range, file: file }));
|
|
160
|
-
}
|
|
161
|
-
//no need to add another diagnostic for future unknown items
|
|
162
|
-
continue outer;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
114
|
+
this.addMultiScopeDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.cannotFindName(part.name.text, entityName)), { range: part.name.range, file: file }));
|
|
166
115
|
}
|
|
116
|
+
//no need to add another diagnostic for future unknown items
|
|
117
|
+
continue outer;
|
|
167
118
|
}
|
|
168
119
|
}
|
|
169
|
-
}
|
|
120
|
+
}
|
|
170
121
|
}
|
|
171
122
|
/**
|
|
172
123
|
* Given a string optionally separated by dots, find an enum related to it.
|
|
@@ -186,10 +137,10 @@ class ScopeValidator {
|
|
|
186
137
|
/**
|
|
187
138
|
* Flag duplicate enums
|
|
188
139
|
*/
|
|
189
|
-
detectDuplicateEnums(
|
|
140
|
+
detectDuplicateEnums() {
|
|
190
141
|
const diagnostics = [];
|
|
191
142
|
const enumLocationsByName = new Cache_1.Cache();
|
|
192
|
-
event.scope.enumerateBrsFiles((file) => {
|
|
143
|
+
this.event.scope.enumerateBrsFiles((file) => {
|
|
193
144
|
for (const enumStatement of file.parser.references.enumStatements) {
|
|
194
145
|
const fullName = enumStatement.fullName;
|
|
195
146
|
const nameLower = fullName === null || fullName === void 0 ? void 0 : fullName.toLowerCase();
|
|
@@ -219,13 +170,13 @@ class ScopeValidator {
|
|
|
219
170
|
const primaryEnum = enumLocations.shift();
|
|
220
171
|
const fullName = primaryEnum.statement.fullName;
|
|
221
172
|
for (const duplicateEnumInfo of enumLocations) {
|
|
222
|
-
diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.duplicateEnumDeclaration(event.scope.name, fullName)), { file: duplicateEnumInfo.file, range: duplicateEnumInfo.statement.tokens.name.range, relatedInformation: [{
|
|
173
|
+
diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.duplicateEnumDeclaration(this.event.scope.name, fullName)), { file: duplicateEnumInfo.file, range: duplicateEnumInfo.statement.tokens.name.range, relatedInformation: [{
|
|
223
174
|
message: 'Enum declared here',
|
|
224
175
|
location: util_1.default.createLocation(vscode_uri_1.URI.file(primaryEnum.file.srcPath).toString(), primaryEnum.statement.tokens.name.range)
|
|
225
176
|
}] }));
|
|
226
177
|
}
|
|
227
178
|
}
|
|
228
|
-
event.scope.addDiagnostics(diagnostics);
|
|
179
|
+
this.event.scope.addDiagnostics(diagnostics);
|
|
229
180
|
}
|
|
230
181
|
/**
|
|
231
182
|
* Validate every function call to `CreateObject`.
|
|
@@ -233,59 +184,93 @@ class ScopeValidator {
|
|
|
233
184
|
* what these calls are supposed to look like, and this is a very common thing for brs devs to do, so just
|
|
234
185
|
* do this manually for now.
|
|
235
186
|
*/
|
|
236
|
-
validateCreateObjectCalls(
|
|
187
|
+
validateCreateObjectCalls(file) {
|
|
188
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
237
189
|
const diagnostics = [];
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
190
|
+
for (const call of file.functionCalls) {
|
|
191
|
+
//skip non CreateObject function calls
|
|
192
|
+
if (((_a = call.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'createobject' || !(0, reflection_1.isLiteralExpression)((_b = call === null || call === void 0 ? void 0 : call.args[0]) === null || _b === void 0 ? void 0 : _b.expression)) {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
const firstParamToken = (_d = (_c = call === null || call === void 0 ? void 0 : call.args[0]) === null || _c === void 0 ? void 0 : _c.expression) === null || _d === void 0 ? void 0 : _d.token;
|
|
196
|
+
const firstParamStringValue = (_e = firstParamToken === null || firstParamToken === void 0 ? void 0 : firstParamToken.text) === null || _e === void 0 ? void 0 : _e.replace(/"/g, '');
|
|
197
|
+
//if this is a `createObject('roSGNode'` call, only support known sg node types
|
|
198
|
+
if ((firstParamStringValue === null || firstParamStringValue === void 0 ? void 0 : firstParamStringValue.toLowerCase()) === 'rosgnode' && (0, reflection_1.isLiteralExpression)((_f = call === null || call === void 0 ? void 0 : call.args[1]) === null || _f === void 0 ? void 0 : _f.expression)) {
|
|
199
|
+
const componentName = (_h = (_g = call === null || call === void 0 ? void 0 : call.args[1]) === null || _g === void 0 ? void 0 : _g.expression) === null || _h === void 0 ? void 0 : _h.token;
|
|
200
|
+
//don't validate any components with a colon in their name (probably component libraries, but regular components can have them too).
|
|
201
|
+
if ((_j = componentName === null || componentName === void 0 ? void 0 : componentName.text) === null || _j === void 0 ? void 0 : _j.includes(':')) {
|
|
243
202
|
continue;
|
|
244
203
|
}
|
|
245
|
-
|
|
246
|
-
const
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
const componentName = (_h = (_g = call === null || call === void 0 ? void 0 : call.args[1]) === null || _g === void 0 ? void 0 : _g.expression) === null || _h === void 0 ? void 0 : _h.token;
|
|
250
|
-
//don't validate any components with a colon in their name (probably component libraries, but regular components can have them too).
|
|
251
|
-
if ((_j = componentName === null || componentName === void 0 ? void 0 : componentName.text) === null || _j === void 0 ? void 0 : _j.includes(':')) {
|
|
252
|
-
continue;
|
|
253
|
-
}
|
|
254
|
-
//add diagnostic for unknown components
|
|
255
|
-
const unquotedComponentName = (_k = componentName === null || componentName === void 0 ? void 0 : componentName.text) === null || _k === void 0 ? void 0 : _k.replace(/"/g, '');
|
|
256
|
-
if (unquotedComponentName && !platformNodeNames.has(unquotedComponentName.toLowerCase()) && !event.program.getComponent(unquotedComponentName)) {
|
|
257
|
-
this.addDiagnosticOnce(event, Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.unknownRoSGNode(unquotedComponentName)), { range: componentName.range }));
|
|
258
|
-
}
|
|
259
|
-
else if ((call === null || call === void 0 ? void 0 : call.args.length) !== 2) {
|
|
260
|
-
// roSgNode should only ever have 2 args in `createObject`
|
|
261
|
-
this.addDiagnosticOnce(event, Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.mismatchCreateObjectArgumentCount(firstParamStringValue, [2], call === null || call === void 0 ? void 0 : call.args.length)), { range: call.range }));
|
|
262
|
-
}
|
|
204
|
+
//add diagnostic for unknown components
|
|
205
|
+
const unquotedComponentName = (_k = componentName === null || componentName === void 0 ? void 0 : componentName.text) === null || _k === void 0 ? void 0 : _k.replace(/"/g, '');
|
|
206
|
+
if (unquotedComponentName && !platformNodeNames.has(unquotedComponentName.toLowerCase()) && !this.event.program.getComponent(unquotedComponentName)) {
|
|
207
|
+
this.addDiagnosticOnce(Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.unknownRoSGNode(unquotedComponentName)), { range: componentName.range }));
|
|
263
208
|
}
|
|
264
|
-
else if (
|
|
265
|
-
|
|
209
|
+
else if ((call === null || call === void 0 ? void 0 : call.args.length) !== 2) {
|
|
210
|
+
// roSgNode should only ever have 2 args in `createObject`
|
|
211
|
+
this.addDiagnosticOnce(Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.mismatchCreateObjectArgumentCount(firstParamStringValue, [2], call === null || call === void 0 ? void 0 : call.args.length)), { range: call.range }));
|
|
266
212
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
213
|
+
}
|
|
214
|
+
else if (!platformComponentNames.has(firstParamStringValue.toLowerCase())) {
|
|
215
|
+
this.addDiagnosticOnce(Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.unknownBrightScriptComponent(firstParamStringValue)), { range: firstParamToken.range }));
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
// This is valid brightscript component
|
|
219
|
+
// Test for invalid arg counts
|
|
220
|
+
const brightScriptComponent = roku_types_1.components[firstParamStringValue.toLowerCase()];
|
|
221
|
+
// Valid arg counts for createObject are 1+ number of args for constructor
|
|
222
|
+
let validArgCounts = brightScriptComponent.constructors.map(cnstr => cnstr.params.length + 1);
|
|
223
|
+
if (validArgCounts.length === 0) {
|
|
224
|
+
// no constructors for this component, so createObject only takes 1 arg
|
|
225
|
+
validArgCounts = [1];
|
|
226
|
+
}
|
|
227
|
+
if (!validArgCounts.includes(call === null || call === void 0 ? void 0 : call.args.length)) {
|
|
228
|
+
// Incorrect number of arguments included in `createObject()`
|
|
229
|
+
this.addDiagnosticOnce(Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.mismatchCreateObjectArgumentCount(firstParamStringValue, validArgCounts, call === null || call === void 0 ? void 0 : call.args.length)), { range: call.range }));
|
|
230
|
+
}
|
|
231
|
+
// Test for deprecation
|
|
232
|
+
if (brightScriptComponent.isDeprecated) {
|
|
233
|
+
this.addDiagnosticOnce(Object.assign(Object.assign({ file: file }, DiagnosticMessages_1.DiagnosticMessages.deprecatedBrightScriptComponent(firstParamStringValue, brightScriptComponent.deprecatedDescription)), { range: call.range }));
|
|
285
234
|
}
|
|
286
235
|
}
|
|
236
|
+
}
|
|
237
|
+
this.event.scope.addDiagnostics(diagnostics);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Adds a diagnostic to the first scope for this key. Prevents duplicate diagnostics
|
|
241
|
+
* for diagnostics where scope isn't important. (i.e. CreateObject validations)
|
|
242
|
+
*/
|
|
243
|
+
addDiagnosticOnce(diagnostic) {
|
|
244
|
+
this.onceCache.getOrAdd(`${diagnostic.code}-${diagnostic.message}-${util_1.default.rangeToString(diagnostic.range)}`, () => {
|
|
245
|
+
this.event.scope.addDiagnostics([diagnostic]);
|
|
246
|
+
return true;
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
addDiagnostic(diagnostic) {
|
|
250
|
+
this.event.scope.addDiagnostics([diagnostic]);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Add a diagnostic (to the first scope) that will have `relatedInformation` for each affected scope
|
|
254
|
+
*/
|
|
255
|
+
addMultiScopeDiagnostic(diagnostic, message = 'Not defined in scope') {
|
|
256
|
+
var _a, _b;
|
|
257
|
+
diagnostic = this.multiScopeCache.getOrAdd(`${(_a = diagnostic.file) === null || _a === void 0 ? void 0 : _a.srcPath}-${diagnostic.code}-${diagnostic.message}-${util_1.default.rangeToString(diagnostic.range)}`, () => {
|
|
258
|
+
if (!diagnostic.relatedInformation) {
|
|
259
|
+
diagnostic.relatedInformation = [];
|
|
260
|
+
}
|
|
261
|
+
this.addDiagnostic(diagnostic);
|
|
262
|
+
return diagnostic;
|
|
287
263
|
});
|
|
288
|
-
|
|
264
|
+
const info = {
|
|
265
|
+
message: `${message} '${this.event.scope.name}'`
|
|
266
|
+
};
|
|
267
|
+
if ((0, reflection_1.isXmlScope)(this.event.scope) && ((_b = this.event.scope.xmlFile) === null || _b === void 0 ? void 0 : _b.srcPath)) {
|
|
268
|
+
info.location = util_1.default.createLocation(vscode_uri_1.URI.file(this.event.scope.xmlFile.srcPath).toString(), util_1.default.createRange(0, 0, 0, 10));
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
info.location = util_1.default.createLocation(vscode_uri_1.URI.file(diagnostic.file.srcPath).toString(), diagnostic.range);
|
|
272
|
+
}
|
|
273
|
+
diagnostic.relatedInformation.push(info);
|
|
289
274
|
}
|
|
290
275
|
}
|
|
291
276
|
exports.ScopeValidator = ScopeValidator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/ScopeValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScopeValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/ScopeValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { XmlFile } from '../../files/XmlFile';
|
|
2
|
+
import type { OnFileValidateEvent } from '../../interfaces';
|
|
3
|
+
export declare class XmlFileValidator {
|
|
4
|
+
event: OnFileValidateEvent<XmlFile>;
|
|
5
|
+
constructor(event: OnFileValidateEvent<XmlFile>);
|
|
6
|
+
process(): void;
|
|
7
|
+
private validateComponent;
|
|
8
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XmlFileValidator = void 0;
|
|
4
|
+
const DiagnosticMessages_1 = require("../../DiagnosticMessages");
|
|
5
|
+
const util_1 = require("../../util");
|
|
6
|
+
class XmlFileValidator {
|
|
7
|
+
constructor(event) {
|
|
8
|
+
this.event = event;
|
|
9
|
+
}
|
|
10
|
+
process() {
|
|
11
|
+
util_1.default.validateTooDeepFile(this.event.file);
|
|
12
|
+
if (this.event.file.parser.ast.root) {
|
|
13
|
+
this.validateComponent(this.event.file.parser.ast);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
//skip empty XML
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
validateComponent(ast) {
|
|
20
|
+
const { root, component } = ast;
|
|
21
|
+
if (!component) {
|
|
22
|
+
//not a SG component
|
|
23
|
+
this.event.file.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingComponentDeclaration()), { range: root.range, file: this.event.file }));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
//component name/extends
|
|
27
|
+
if (!component.name) {
|
|
28
|
+
this.event.file.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingNameAttribute()), { range: component.tag.range, file: this.event.file }));
|
|
29
|
+
}
|
|
30
|
+
if (!component.extends) {
|
|
31
|
+
this.event.file.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()), { range: component.tag.range, file: this.event.file }));
|
|
32
|
+
}
|
|
33
|
+
//catch script imports with same path as the auto-imported codebehind file
|
|
34
|
+
const scriptTagImports = this.event.file.parser.references.scriptTagImports;
|
|
35
|
+
let explicitCodebehindScriptTag = this.event.file.program.options.autoImportComponentScript === true
|
|
36
|
+
? scriptTagImports.find(x => this.event.file.possibleCodebehindPkgPaths.includes(x.pkgPath))
|
|
37
|
+
: undefined;
|
|
38
|
+
if (explicitCodebehindScriptTag) {
|
|
39
|
+
this.event.file.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.unnecessaryCodebehindScriptImport()), { file: this.event.file, range: explicitCodebehindScriptTag.filePathRange }));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.XmlFileValidator = XmlFileValidator;
|
|
44
|
+
//# sourceMappingURL=XmlFileValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XmlFileValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/XmlFileValidator.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAI9D,qCAA8B;AAE9B,MAAa,gBAAgB;IACzB,YACW,KAAmC;QAAnC,UAAK,GAAL,KAAK,CAA8B;IAE9C,CAAC;IAEM,OAAO;QACV,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACtD;aAAM;YACH,gBAAgB;SACnB;IACL,CAAC;IAEO,iBAAiB,CAAC,GAAU;QAChC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE;YACZ,oBAAoB;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACzB,uCAAkB,CAAC,uCAAuC,EAAE,KAC/D,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IACvB,CAAC;YACH,OAAO;SACV;QAED,wBAAwB;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACzB,uCAAkB,CAAC,gCAAgC,EAAE,KACxD,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,EAC1B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IACvB,CAAC;SACN;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACzB,uCAAkB,CAAC,mCAAmC,EAAE,KAC3D,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,EAC1B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IACvB,CAAC;SACN;QAGD,0EAA0E;QAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAC5E,IAAI,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,KAAK,IAAI;YAChG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5F,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,2BAA2B,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACzB,uCAAkB,CAAC,iCAAiC,EAAE,KACzD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,KAAK,EAAE,2BAA2B,CAAC,aAAa,IAClD,CAAC;SACN;IACL,CAAC;CAEJ;AA1DD,4CA0DC"}
|