brighterscript 1.0.0-alpha.1 → 1.0.0-alpha.13
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 +362 -248
- package/README.md +2 -2
- package/bsconfig.schema.json +1 -1
- package/dist/CodeActionUtil.d.ts +11 -2
- package/dist/CodeActionUtil.js +17 -3
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +4 -4
- package/dist/CommentFlagProcessor.js +5 -3
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticCollection.js +2 -2
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticFilterer.js +3 -3
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +15 -5
- package/dist/DiagnosticMessages.js +19 -9
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +11 -10
- package/dist/LanguageServer.js +87 -58
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +2 -0
- package/dist/Logger.js +5 -3
- package/dist/Logger.js.map +1 -1
- package/dist/Program.d.ts +76 -46
- package/dist/Program.js +254 -180
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +7 -7
- package/dist/ProgramBuilder.js +37 -43
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +33 -23
- package/dist/Scope.js +222 -147
- package/dist/Scope.js.map +1 -1
- package/dist/SemanticTokenUtils.d.ts +14 -0
- package/dist/SemanticTokenUtils.js +81 -0
- package/dist/SemanticTokenUtils.js.map +1 -0
- package/dist/SymbolTable.d.ts +9 -3
- package/dist/SymbolTable.js +40 -13
- package/dist/SymbolTable.js.map +1 -1
- package/dist/XmlScope.d.ts +7 -2
- package/dist/XmlScope.js +67 -29
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/AstEditor.d.ts +27 -0
- package/dist/astUtils/AstEditor.js +97 -0
- package/dist/astUtils/AstEditor.js.map +1 -0
- package/dist/astUtils/AstEditor.spec.d.ts +1 -0
- package/dist/astUtils/AstEditor.spec.js +133 -0
- package/dist/astUtils/AstEditor.spec.js.map +1 -0
- package/dist/astUtils/creators.d.ts +15 -1
- package/dist/astUtils/creators.js +39 -9
- 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/index.js +1 -1
- package/dist/astUtils/reflection.d.ts +20 -8
- package/dist/astUtils/reflection.js +42 -1
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +115 -115
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/stackedVisitor.js.map +1 -1
- package/dist/astUtils/stackedVisitor.spec.js +13 -13
- package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
- package/dist/astUtils/visitors.js +1 -1
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +28 -28
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/astUtils/xml.d.ts +4 -3
- package/dist/astUtils/xml.js +8 -3
- package/dist/astUtils/xml.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +2 -1
- package/dist/bscPlugin/BscPlugin.js +4 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +5 -6
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +30 -30
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +7 -0
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js +63 -0
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +1 -0
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js +45 -0
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +1 -0
- package/dist/diagnosticUtils.d.ts +1 -0
- package/dist/diagnosticUtils.js +14 -7
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/examples/plugins/removePrint.js +2 -2
- package/dist/examples/plugins/removePrint.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +486 -71
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +48 -23
- package/dist/files/BrsFile.js +403 -233
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +367 -316
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +13 -6
- package/dist/files/XmlFile.js +27 -21
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +274 -228
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +49 -49
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/globalCallables.d.ts +3 -1
- package/dist/globalCallables.js +359 -87
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +51 -14
- package/dist/lexer/Lexer.d.ts +14 -1
- package/dist/lexer/Lexer.js +91 -21
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +187 -132
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +2 -2
- package/dist/lexer/TokenKind.d.ts +7 -1
- package/dist/lexer/TokenKind.js +51 -3
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/lexer/index.js +2 -1
- package/dist/lexer/index.js.map +1 -1
- package/dist/parser/BrsTranspileState.d.ts +7 -0
- package/dist/parser/BrsTranspileState.js +10 -1
- package/dist/parser/BrsTranspileState.js.map +1 -1
- package/dist/parser/Expression.d.ts +23 -5
- package/dist/parser/Expression.js +124 -75
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +159 -60
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +114 -26
- package/dist/parser/Parser.js +471 -126
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +396 -235
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.d.ts +41 -4
- package/dist/parser/SGParser.js +186 -175
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGParser.spec.js +35 -22
- package/dist/parser/SGParser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +206 -38
- package/dist/parser/SGTypes.js +470 -161
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/SGTypes.spec.d.ts +1 -0
- package/dist/parser/SGTypes.spec.js +351 -0
- package/dist/parser/SGTypes.spec.js.map +1 -0
- package/dist/parser/Statement.d.ts +92 -18
- package/dist/parser/Statement.js +287 -58
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +11 -11
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +1 -1
- package/dist/parser/TranspileState.js +15 -7
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/index.js +1 -1
- package/dist/parser/tests/Parser.spec.d.ts +8 -7
- package/dist/parser/tests/Parser.spec.js +12 -8
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +50 -50
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +31 -31
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js +174 -156
- package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +32 -32
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Additive.spec.js +21 -21
- package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +105 -105
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +148 -124
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Boolean.spec.js +17 -17
- package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +30 -30
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Exponential.spec.js +16 -16
- package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
- package/dist/parser/tests/expression/Function.spec.js +247 -247
- package/dist/parser/tests/expression/Function.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +73 -73
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/expression/Multiplicative.spec.js +36 -36
- package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +59 -47
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.js +35 -35
- package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
- package/dist/parser/tests/expression/Primary.spec.js +26 -26
- package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +1 -0
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +170 -0
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -0
- package/dist/parser/tests/expression/Relational.spec.js +42 -42
- package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +8 -8
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +12 -12
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +100 -100
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.js +35 -35
- package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
- package/dist/parser/tests/statement/Declaration.spec.js +39 -39
- package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
- package/dist/parser/tests/statement/Dim.spec.js +21 -21
- package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
- package/dist/parser/tests/statement/Function.spec.js +192 -192
- package/dist/parser/tests/statement/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/Goto.spec.js +11 -11
- package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
- package/dist/parser/tests/statement/Increment.spec.js +46 -46
- package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +1 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +61 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -0
- package/dist/parser/tests/statement/LibraryStatement.spec.js +10 -10
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +37 -36
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +30 -30
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +43 -43
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +69 -69
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/parser/tests/statement/Stop.spec.js +9 -9
- package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
- package/dist/parser/tests/statement/Throw.spec.js +5 -5
- package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +13 -13
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/preprocessor/Chunk.js.map +1 -1
- package/dist/preprocessor/Manifest.d.ts +1 -1
- package/dist/preprocessor/Preprocessor.js +1 -1
- package/dist/preprocessor/Preprocessor.js.map +1 -1
- package/dist/preprocessor/Preprocessor.spec.js +49 -49
- package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
- package/dist/preprocessor/PreprocessorParser.spec.js +72 -72
- package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
- package/dist/preprocessor/index.js +1 -1
- package/dist/types/ArrayType.js +5 -4
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +8 -8
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.js +3 -3
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BooleanType.spec.js +2 -2
- package/dist/types/BooleanType.spec.js.map +1 -1
- package/dist/types/BscType.d.ts +19 -5
- package/dist/types/BscType.js +9 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/CustomType.d.ts +8 -5
- package/dist/types/CustomType.js +17 -6
- package/dist/types/CustomType.js.map +1 -1
- package/dist/types/DoubleType.js +8 -8
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DoubleType.spec.js +2 -2
- package/dist/types/DoubleType.spec.js.map +1 -1
- package/dist/types/DynamicType.js +1 -1
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/DynamicType.spec.js +2 -2
- package/dist/types/DynamicType.spec.js.map +1 -1
- package/dist/types/FloatType.d.ts +1 -1
- package/dist/types/FloatType.js +8 -8
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FloatType.spec.js +2 -2
- package/dist/types/FloatType.spec.js.map +1 -1
- package/dist/types/FunctionType.d.ts +5 -11
- package/dist/types/FunctionType.js +24 -13
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/FunctionType.spec.js +11 -5
- package/dist/types/FunctionType.spec.js.map +1 -1
- package/dist/types/IntegerType.d.ts +1 -1
- package/dist/types/IntegerType.js +8 -8
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/IntegerType.spec.js +2 -2
- package/dist/types/IntegerType.spec.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +8 -2
- package/dist/types/InterfaceType.js +42 -6
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.d.ts +1 -0
- package/dist/types/InterfaceType.spec.js +174 -0
- package/dist/types/InterfaceType.spec.js.map +1 -0
- package/dist/types/InvalidType.js +4 -4
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/InvalidType.spec.js +2 -2
- package/dist/types/InvalidType.spec.js.map +1 -1
- package/dist/types/LazyType.d.ts +9 -7
- package/dist/types/LazyType.js +22 -10
- package/dist/types/LazyType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +1 -1
- package/dist/types/LongIntegerType.js +8 -8
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.spec.js +2 -2
- package/dist/types/LongIntegerType.spec.js.map +1 -1
- package/dist/types/ObjectType.d.ts +7 -4
- package/dist/types/ObjectType.js +6 -3
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ObjectType.spec.js +2 -2
- package/dist/types/ObjectType.spec.js.map +1 -1
- package/dist/types/StringType.js +3 -3
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/StringType.spec.js +2 -2
- package/dist/types/StringType.spec.js.map +1 -1
- package/dist/types/UninitializedType.js +3 -3
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/VoidType.js +3 -3
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/VoidType.spec.js +2 -2
- package/dist/types/VoidType.spec.js.map +1 -1
- package/dist/types/helpers.d.ts +42 -0
- package/dist/types/helpers.js +113 -0
- package/dist/types/helpers.js.map +1 -0
- package/dist/util.d.ts +77 -17
- package/dist/util.js +247 -59
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +5 -1
- package/dist/validators/ClassValidator.js +59 -24
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +13 -13
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AstEditor = void 0;
|
|
4
|
+
class AstEditor {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.changes = [];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Indicates whether the editor have changes that were applied
|
|
10
|
+
*/
|
|
11
|
+
get hasChanges() {
|
|
12
|
+
return this.changes.length > 0;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Change the value of an object's property
|
|
16
|
+
*/
|
|
17
|
+
setProperty(obj, key, newValue) {
|
|
18
|
+
const change = new EditPropertyChange(obj, key, newValue);
|
|
19
|
+
this.changes.push(change);
|
|
20
|
+
change.apply();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Insert an element into an array at the specified index
|
|
24
|
+
*/
|
|
25
|
+
addToArray(array, index, newValue) {
|
|
26
|
+
const change = new AddToArrayChange(array, index, newValue);
|
|
27
|
+
this.changes.push(change);
|
|
28
|
+
change.apply();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Change the value of an item in an array at the specified index
|
|
32
|
+
*/
|
|
33
|
+
setArrayValue(array, index, newValue) {
|
|
34
|
+
this.setProperty(array, index, newValue);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Remove an element from an array at the specified index
|
|
38
|
+
*/
|
|
39
|
+
removeFromArray(array, index) {
|
|
40
|
+
const change = new RemoveFromArrayChange(array, index);
|
|
41
|
+
this.changes.push(change);
|
|
42
|
+
change.apply();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Unto all changes.
|
|
46
|
+
*/
|
|
47
|
+
undoAll() {
|
|
48
|
+
for (let i = this.changes.length - 1; i >= 0; i--) {
|
|
49
|
+
this.changes[i].undo();
|
|
50
|
+
}
|
|
51
|
+
this.changes = [];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.AstEditor = AstEditor;
|
|
55
|
+
class EditPropertyChange {
|
|
56
|
+
constructor(obj, propertyName, newValue) {
|
|
57
|
+
this.obj = obj;
|
|
58
|
+
this.propertyName = propertyName;
|
|
59
|
+
this.newValue = newValue;
|
|
60
|
+
}
|
|
61
|
+
apply() {
|
|
62
|
+
this.originalValue = this.obj[this.propertyName];
|
|
63
|
+
this.obj[this.propertyName] = this.newValue;
|
|
64
|
+
}
|
|
65
|
+
undo() {
|
|
66
|
+
this.obj[this.propertyName] = this.originalValue;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
class AddToArrayChange {
|
|
70
|
+
constructor(array, index, newValue) {
|
|
71
|
+
this.array = array;
|
|
72
|
+
this.index = index;
|
|
73
|
+
this.newValue = newValue;
|
|
74
|
+
}
|
|
75
|
+
apply() {
|
|
76
|
+
this.array.splice(this.index, 0, this.newValue);
|
|
77
|
+
}
|
|
78
|
+
undo() {
|
|
79
|
+
this.array.splice(this.index, 1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Remove an item from an array
|
|
84
|
+
*/
|
|
85
|
+
class RemoveFromArrayChange {
|
|
86
|
+
constructor(array, index) {
|
|
87
|
+
this.array = array;
|
|
88
|
+
this.index = index;
|
|
89
|
+
}
|
|
90
|
+
apply() {
|
|
91
|
+
[this.originalValue] = this.array.splice(this.index, 1);
|
|
92
|
+
}
|
|
93
|
+
undo() {
|
|
94
|
+
this.array.splice(this.index, 0, this.originalValue);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=AstEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AstEditor.js","sourceRoot":"","sources":["../../src/astUtils/AstEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const AstEditor_1 = require("./AstEditor");
|
|
5
|
+
describe('AstEditor', () => {
|
|
6
|
+
let changer;
|
|
7
|
+
let obj;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
changer = new AstEditor_1.AstEditor();
|
|
10
|
+
obj = getTestObject();
|
|
11
|
+
});
|
|
12
|
+
function getTestObject() {
|
|
13
|
+
return {
|
|
14
|
+
name: 'parent',
|
|
15
|
+
hobbies: ['gaming', 'reading', 'cycling'],
|
|
16
|
+
children: [{
|
|
17
|
+
name: 'oldest',
|
|
18
|
+
age: 15
|
|
19
|
+
}, {
|
|
20
|
+
name: 'middle',
|
|
21
|
+
age: 10
|
|
22
|
+
}, {
|
|
23
|
+
name: 'youngest',
|
|
24
|
+
age: 5
|
|
25
|
+
}],
|
|
26
|
+
jobs: [{
|
|
27
|
+
title: 'plumber',
|
|
28
|
+
annualSalary: 50000
|
|
29
|
+
}, {
|
|
30
|
+
title: 'carpenter',
|
|
31
|
+
annualSalary: 75000
|
|
32
|
+
}]
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
it('applies single property change', () => {
|
|
36
|
+
(0, chai_1.expect)(obj.name).to.eql('parent');
|
|
37
|
+
changer.setProperty(obj, 'name', 'jack');
|
|
38
|
+
(0, chai_1.expect)(obj.name).to.eql('jack');
|
|
39
|
+
changer.undoAll();
|
|
40
|
+
(0, chai_1.expect)(obj.name).to.eql('parent');
|
|
41
|
+
});
|
|
42
|
+
it('inserts at beginning of array', () => {
|
|
43
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
44
|
+
changer.addToArray(obj.hobbies, 0, 'climbing');
|
|
45
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['climbing', 'gaming', 'reading', 'cycling']);
|
|
46
|
+
changer.undoAll();
|
|
47
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
48
|
+
});
|
|
49
|
+
it('inserts at middle of array', () => {
|
|
50
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
51
|
+
changer.addToArray(obj.hobbies, 1, 'climbing');
|
|
52
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'climbing', 'reading', 'cycling']);
|
|
53
|
+
changer.undoAll();
|
|
54
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
55
|
+
});
|
|
56
|
+
it('changes the value at an array index', () => {
|
|
57
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
58
|
+
changer.setArrayValue(obj.hobbies, 1, 'sleeping');
|
|
59
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'sleeping', 'cycling']);
|
|
60
|
+
changer.undoAll();
|
|
61
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
62
|
+
});
|
|
63
|
+
it('inserts at end of array', () => {
|
|
64
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
65
|
+
changer.addToArray(obj.hobbies, 3, 'climbing');
|
|
66
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling', 'climbing']);
|
|
67
|
+
changer.undoAll();
|
|
68
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
69
|
+
});
|
|
70
|
+
it('removes at beginning of array', () => {
|
|
71
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
72
|
+
changer.removeFromArray(obj.hobbies, 0);
|
|
73
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['reading', 'cycling']);
|
|
74
|
+
changer.undoAll();
|
|
75
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
76
|
+
});
|
|
77
|
+
it('removes at middle of array', () => {
|
|
78
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
79
|
+
changer.removeFromArray(obj.hobbies, 1);
|
|
80
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'cycling']);
|
|
81
|
+
changer.undoAll();
|
|
82
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
83
|
+
});
|
|
84
|
+
it('removes at middle of array', () => {
|
|
85
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
86
|
+
changer.removeFromArray(obj.hobbies, 2);
|
|
87
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading']);
|
|
88
|
+
changer.undoAll();
|
|
89
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
90
|
+
});
|
|
91
|
+
it('restores array after being removed', () => {
|
|
92
|
+
changer.removeFromArray(obj.hobbies, 0);
|
|
93
|
+
changer.setProperty(obj, 'hobbies', undefined);
|
|
94
|
+
(0, chai_1.expect)(obj.hobbies).to.be.undefined;
|
|
95
|
+
changer.undoAll();
|
|
96
|
+
(0, chai_1.expect)(obj.hobbies).to.eql(['gaming', 'reading', 'cycling']);
|
|
97
|
+
});
|
|
98
|
+
it('works for many changes', () => {
|
|
99
|
+
(0, chai_1.expect)(obj).to.eql(getTestObject());
|
|
100
|
+
changer.setProperty(obj, 'name', 'bob');
|
|
101
|
+
changer.setProperty(obj.children[0], 'name', 'jimmy');
|
|
102
|
+
changer.addToArray(obj.children, obj.children.length, { name: 'sally', age: 1 });
|
|
103
|
+
changer.removeFromArray(obj.jobs, 1);
|
|
104
|
+
changer.removeFromArray(obj.hobbies, 0);
|
|
105
|
+
changer.removeFromArray(obj.hobbies, 0);
|
|
106
|
+
changer.removeFromArray(obj.hobbies, 0);
|
|
107
|
+
changer.setProperty(obj, 'hobbies', undefined);
|
|
108
|
+
(0, chai_1.expect)(obj).to.eql({
|
|
109
|
+
name: 'bob',
|
|
110
|
+
hobbies: undefined,
|
|
111
|
+
children: [{
|
|
112
|
+
name: 'jimmy',
|
|
113
|
+
age: 15
|
|
114
|
+
}, {
|
|
115
|
+
name: 'middle',
|
|
116
|
+
age: 10
|
|
117
|
+
}, {
|
|
118
|
+
name: 'youngest',
|
|
119
|
+
age: 5
|
|
120
|
+
}, {
|
|
121
|
+
name: 'sally',
|
|
122
|
+
age: 1
|
|
123
|
+
}],
|
|
124
|
+
jobs: [{
|
|
125
|
+
title: 'plumber',
|
|
126
|
+
annualSalary: 50000
|
|
127
|
+
}]
|
|
128
|
+
});
|
|
129
|
+
changer.undoAll();
|
|
130
|
+
(0, chai_1.expect)(obj).to.eql(getTestObject());
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
//# sourceMappingURL=AstEditor.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AstEditor.spec.js","sourceRoot":"","sources":["../../src/astUtils/AstEditor.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,IAAI,OAAkB,CAAC;IACvB,IAAI,GAAqC,CAAC;IAE1C,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,IAAI,qBAAS,EAAE,CAAC;QAC1B,GAAG,GAAG,aAAa,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,SAAS,aAAa;QAClB,OAAO;YACH,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;YACzC,QAAQ,EAAE,CAAC;oBACP,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,EAAE;iBACV,EAAE;oBACC,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,EAAE;iBACV,EAAE;oBACC,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,CAAC;iBACT,CAAC;YACF,IAAI,EAAE,CAAC;oBACH,KAAK,EAAE,SAAS;oBAChB,YAAY,EAAE,KAAK;iBACtB,EAAE;oBACC,KAAK,EAAE,WAAW;oBAClB,YAAY,EAAE,KAAK;iBACtB,CAAC;SACL,CAAC;IACN,CAAC;IAED,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEhC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAEzE,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAEzE,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAClD,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QAE9D,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAC/B,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QAEzE,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAEnD,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QAElD,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QAElD,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACpC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAE/C,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;YACf,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,CAAC;oBACP,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,EAAE;iBACV,EAAE;oBACC,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,EAAE;iBACV,EAAE;oBACC,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,CAAC;iBACT,EAAE;oBACC,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,CAAC;iBACT,CAAC;YACF,IAAI,EAAE,CAAC;oBACH,KAAK,EAAE,SAAS;oBAChB,YAAY,EAAE,KAAK;iBACtB,CAAC;SACL,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import type { Token } from '../lexer/Token';
|
|
|
3
3
|
import { TokenKind } from '../lexer/TokenKind';
|
|
4
4
|
import type { Expression, NamespacedVariableNameExpression } from '../parser/Expression';
|
|
5
5
|
import { LiteralExpression, CallExpression, DottedGetExpression, VariableExpression } from '../parser/Expression';
|
|
6
|
-
import
|
|
6
|
+
import { SGAttribute, SGComponent, SGInterface, SGInterfaceField, SGInterfaceFunction, SGScript } from '../parser/SGTypes';
|
|
7
7
|
/**
|
|
8
8
|
* A range that points to nowhere. Used to give non-null ranges to programmatically-added source code.
|
|
9
9
|
* (Hardcoded range to prevent circular dependency issue in `../util.ts`
|
|
@@ -29,3 +29,17 @@ export declare function createCall(callee: Expression, args?: Expression[], name
|
|
|
29
29
|
* Create an SGAttribute without any ranges
|
|
30
30
|
*/
|
|
31
31
|
export declare function createSGAttribute(keyName: string, value: string): SGAttribute;
|
|
32
|
+
export declare function createSGInterfaceField(id: string, attributes?: {
|
|
33
|
+
type?: string;
|
|
34
|
+
alias?: string;
|
|
35
|
+
value?: string;
|
|
36
|
+
onChange?: string;
|
|
37
|
+
alwaysNotify?: string;
|
|
38
|
+
}): SGInterfaceField;
|
|
39
|
+
export declare function createSGComponent(name: string, parentName?: string): SGComponent;
|
|
40
|
+
export declare function createSGInterfaceFunction(functionName: string): SGInterfaceFunction;
|
|
41
|
+
export declare function createSGInterface(): SGInterface;
|
|
42
|
+
export declare function createSGScript(attributes: {
|
|
43
|
+
type?: string;
|
|
44
|
+
uri?: string;
|
|
45
|
+
}): SGScript;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSGAttribute = exports.createCall = exports.createBooleanLiteral = exports.createInvalidLiteral = exports.createFloatLiteral = exports.createIntegerLiteral = exports.createStringLiteral = exports.createDottedIdentifier = exports.createIdentifier = exports.createToken = exports.interpolatedRange = void 0;
|
|
3
|
+
exports.createSGScript = exports.createSGInterface = exports.createSGInterfaceFunction = exports.createSGComponent = exports.createSGInterfaceField = exports.createSGAttribute = exports.createCall = exports.createBooleanLiteral = exports.createInvalidLiteral = exports.createFloatLiteral = exports.createIntegerLiteral = exports.createStringLiteral = exports.createDottedIdentifier = exports.createIdentifier = exports.createToken = exports.interpolatedRange = void 0;
|
|
4
4
|
const TokenKind_1 = require("../lexer/TokenKind");
|
|
5
5
|
const Expression_1 = require("../parser/Expression");
|
|
6
|
+
const SGTypes_1 = require("../parser/SGTypes");
|
|
6
7
|
/**
|
|
7
8
|
* A range that points to nowhere. Used to give non-null ranges to programmatically-added source code.
|
|
8
9
|
* (Hardcoded range to prevent circular dependency issue in `../util.ts`
|
|
@@ -74,14 +75,43 @@ exports.createCall = createCall;
|
|
|
74
75
|
* Create an SGAttribute without any ranges
|
|
75
76
|
*/
|
|
76
77
|
function createSGAttribute(keyName, value) {
|
|
77
|
-
return {
|
|
78
|
-
key: {
|
|
79
|
-
text: keyName
|
|
80
|
-
},
|
|
81
|
-
value: {
|
|
82
|
-
text: value
|
|
83
|
-
}
|
|
84
|
-
};
|
|
78
|
+
return new SGTypes_1.SGAttribute({ text: keyName }, { text: '=' }, { text: '"' }, { text: value }, { text: '"' });
|
|
85
79
|
}
|
|
86
80
|
exports.createSGAttribute = createSGAttribute;
|
|
81
|
+
function createSGInterfaceField(id, attributes = {}) {
|
|
82
|
+
const attrs = [
|
|
83
|
+
createSGAttribute('id', id)
|
|
84
|
+
];
|
|
85
|
+
for (let key in attributes) {
|
|
86
|
+
attrs.push(createSGAttribute(key, attributes[key]));
|
|
87
|
+
}
|
|
88
|
+
return new SGTypes_1.SGInterfaceField({ text: '<' }, { text: 'field' }, attrs, { text: '/>' });
|
|
89
|
+
}
|
|
90
|
+
exports.createSGInterfaceField = createSGInterfaceField;
|
|
91
|
+
function createSGComponent(name, parentName) {
|
|
92
|
+
const attributes = [
|
|
93
|
+
createSGAttribute('name', name)
|
|
94
|
+
];
|
|
95
|
+
if (parentName) {
|
|
96
|
+
attributes.push(createSGAttribute('extends', parentName));
|
|
97
|
+
}
|
|
98
|
+
return new SGTypes_1.SGComponent({ text: '<' }, { text: 'component' }, attributes, { text: '>' }, [], { text: '</' }, { text: 'component' }, { text: '>' });
|
|
99
|
+
}
|
|
100
|
+
exports.createSGComponent = createSGComponent;
|
|
101
|
+
function createSGInterfaceFunction(functionName) {
|
|
102
|
+
return new SGTypes_1.SGInterfaceFunction({ text: '<' }, { text: 'function' }, [createSGAttribute('name', functionName)], { text: '/>' });
|
|
103
|
+
}
|
|
104
|
+
exports.createSGInterfaceFunction = createSGInterfaceFunction;
|
|
105
|
+
function createSGInterface() {
|
|
106
|
+
return new SGTypes_1.SGInterface({ text: '<' }, { text: 'interface' }, [], { text: '>' }, [], { text: '</' }, { text: 'interface' }, { text: '>' });
|
|
107
|
+
}
|
|
108
|
+
exports.createSGInterface = createSGInterface;
|
|
109
|
+
function createSGScript(attributes) {
|
|
110
|
+
const attrs = [];
|
|
111
|
+
for (let key in attributes) {
|
|
112
|
+
attrs.push(createSGAttribute(key, attributes[key]));
|
|
113
|
+
}
|
|
114
|
+
return new SGTypes_1.SGScript({ text: '<' }, { text: 'script' }, attrs, { text: '/>' });
|
|
115
|
+
}
|
|
116
|
+
exports.createSGScript = createSGScript;
|
|
87
117
|
//# sourceMappingURL=creators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creators.js","sourceRoot":"","sources":["../../src/astUtils/creators.ts"],"names":[],"mappings":";;;AAEA,kDAA+C;AAE/C,qDAAkH;
|
|
1
|
+
{"version":3,"file":"creators.js","sourceRoot":"","sources":["../../src/astUtils/creators.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,16 +5,16 @@ const creators_1 = require("./creators");
|
|
|
5
5
|
describe('creators', () => {
|
|
6
6
|
describe('createStringLiteral', () => {
|
|
7
7
|
it('wraps the value in quotes', () => {
|
|
8
|
-
chai_1.expect(creators_1.createStringLiteral('hello world').token.text).to.equal('"hello world"');
|
|
8
|
+
(0, chai_1.expect)((0, creators_1.createStringLiteral)('hello world').token.text).to.equal('"hello world"');
|
|
9
9
|
});
|
|
10
10
|
it('does not wrap already-quoted value in extra quotes', () => {
|
|
11
|
-
chai_1.expect(creators_1.createStringLiteral('"hello world"').token.text).to.equal('"hello world"');
|
|
11
|
+
(0, chai_1.expect)((0, creators_1.createStringLiteral)('"hello world"').token.text).to.equal('"hello world"');
|
|
12
12
|
});
|
|
13
13
|
it('does not wrap badly quoted value in additional quotes', () => {
|
|
14
14
|
//leading
|
|
15
|
-
chai_1.expect(creators_1.createStringLiteral('"hello world').token.text).to.equal('"hello world');
|
|
15
|
+
(0, chai_1.expect)((0, creators_1.createStringLiteral)('"hello world').token.text).to.equal('"hello world');
|
|
16
16
|
//trailing
|
|
17
|
-
chai_1.expect(creators_1.createStringLiteral('hello world"').token.text).to.equal('hello world"');
|
|
17
|
+
(0, chai_1.expect)((0, creators_1.createStringLiteral)('hello world"').token.text).to.equal('hello world"');
|
|
18
18
|
});
|
|
19
19
|
});
|
|
20
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creators.spec.js","sourceRoot":"","sources":["../../src/astUtils/creators.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,yCAAiD;AAEjD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IAEtB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACjC,aAAM,
|
|
1
|
+
{"version":3,"file":"creators.spec.js","sourceRoot":"","sources":["../../src/astUtils/creators.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,yCAAiD;AAEjD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IAEtB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACjC,IAAA,aAAM,EAAC,IAAA,8BAAmB,EAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC1D,IAAA,aAAM,EAAC,IAAA,8BAAmB,EAAC,eAAe,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,SAAS;YACT,IAAA,aAAM,EAAC,IAAA,8BAAmB,EAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAChF,UAAU;YACV,IAAA,aAAM,EAAC,IAAA,8BAAmB,EAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/astUtils/index.js
CHANGED
|
@@ -7,7 +7,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
7
7
|
o[k2] = m[k];
|
|
8
8
|
}));
|
|
9
9
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.DiagnosticTag = exports.DiagnosticSeverity = exports.CancellationTokenSource = exports.CancellationToken = exports.Position = exports.Range = void 0;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { Body, AssignmentStatement, Block, ExpressionStatement, CommentStatement, ExitForStatement, ExitWhileStatement, FunctionStatement, IfStatement, IncrementStatement, PrintStatement, GotoStatement, LabelStatement, ReturnStatement, EndStatement, StopStatement, ForStatement, ForEachStatement, WhileStatement, DottedSetStatement, IndexedSetStatement, LibraryStatement, NamespaceStatement, ImportStatement, ClassFieldStatement, ClassMethodStatement, ClassStatement, Statement } from '../parser/Statement';
|
|
2
|
-
import type { LiteralExpression, Expression, BinaryExpression, CallExpression, FunctionExpression, NamespacedVariableNameExpression, DottedGetExpression, XmlAttributeGetExpression, IndexedGetExpression, GroupingExpression, EscapedCharCodeLiteralExpression, ArrayLiteralExpression, AALiteralExpression, UnaryExpression, VariableExpression, SourceLiteralExpression, NewExpression, CallfuncExpression, TemplateStringQuasiExpression, TemplateStringExpression, TaggedTemplateStringExpression, AnnotationExpression, FunctionParameterExpression } from '../parser/Expression';
|
|
1
|
+
import type { Body, AssignmentStatement, Block, ExpressionStatement, CommentStatement, ExitForStatement, ExitWhileStatement, FunctionStatement, IfStatement, IncrementStatement, PrintStatement, GotoStatement, LabelStatement, ReturnStatement, EndStatement, StopStatement, ForStatement, ForEachStatement, WhileStatement, DottedSetStatement, IndexedSetStatement, LibraryStatement, NamespaceStatement, ImportStatement, ClassFieldStatement, ClassMethodStatement, ClassStatement, Statement, InterfaceFieldStatement, InterfaceMethodStatement, InterfaceStatement } from '../parser/Statement';
|
|
2
|
+
import type { LiteralExpression, Expression, BinaryExpression, CallExpression, FunctionExpression, NamespacedVariableNameExpression, DottedGetExpression, XmlAttributeGetExpression, IndexedGetExpression, GroupingExpression, EscapedCharCodeLiteralExpression, ArrayLiteralExpression, AALiteralExpression, UnaryExpression, VariableExpression, SourceLiteralExpression, NewExpression, CallfuncExpression, TemplateStringQuasiExpression, TemplateStringExpression, TaggedTemplateStringExpression, AnnotationExpression, FunctionParameterExpression, AAMemberExpression, RegexLiteralExpression } from '../parser/Expression';
|
|
3
3
|
import type { BrsFile } from '../files/BrsFile';
|
|
4
4
|
import type { XmlFile } from '../files/XmlFile';
|
|
5
|
-
import type { BscFile,
|
|
5
|
+
import type { BscFile, TypedefProvider } from '../interfaces';
|
|
6
6
|
import type { InvalidType } from '../types/InvalidType';
|
|
7
7
|
import type { VoidType } from '../types/VoidType';
|
|
8
8
|
import type { FunctionType } from '../types/FunctionType';
|
|
@@ -15,14 +15,16 @@ import type { DoubleType } from '../types/DoubleType';
|
|
|
15
15
|
import type { CustomType } from '../types/CustomType';
|
|
16
16
|
import type { Scope } from '../Scope';
|
|
17
17
|
import type { XmlScope } from '../XmlScope';
|
|
18
|
-
import type {
|
|
18
|
+
import type { DynamicType } from '../types/DynamicType';
|
|
19
19
|
import type { InterfaceType } from '../types/InterfaceType';
|
|
20
|
-
import type { ArrayType } from '../types/ArrayType';
|
|
21
20
|
import type { ObjectType } from '../types/ObjectType';
|
|
22
|
-
import type {
|
|
23
|
-
|
|
21
|
+
import type { UninitializedType } from '../types/UninitializedType';
|
|
22
|
+
import type { ArrayType } from '../types/ArrayType';
|
|
23
|
+
import type { LazyType } from '../types/LazyType';
|
|
24
|
+
import type { SGInterfaceField, SGInterfaceFunction, SGNode } from '../parser/SGTypes';
|
|
25
|
+
export declare function isBrsFile(file: BscFile): file is BrsFile;
|
|
24
26
|
export declare function isXmlFile(file: (BscFile)): file is XmlFile;
|
|
25
|
-
export declare function isXmlScope(scope: (Scope)): scope is XmlScope;
|
|
27
|
+
export declare function isXmlScope(scope: (Scope | XmlScope)): scope is XmlScope;
|
|
26
28
|
/**
|
|
27
29
|
* Determine if the variable is a descendent of the Statement base class.
|
|
28
30
|
* Due to performance restrictions, this expects all statements to
|
|
@@ -57,6 +59,9 @@ export declare function isClassStatement(element: Statement | Expression | undef
|
|
|
57
59
|
export declare function isImportStatement(element: Statement | Expression | undefined): element is ImportStatement;
|
|
58
60
|
export declare function isClassMethodStatement(element: Statement | Expression | undefined): element is ClassMethodStatement;
|
|
59
61
|
export declare function isClassFieldStatement(element: Statement | Expression | undefined): element is ClassFieldStatement;
|
|
62
|
+
export declare function isInterfaceStatement(element: Statement | Expression | undefined): element is InterfaceStatement;
|
|
63
|
+
export declare function isInterfaceMethodStatement(element: Statement | Expression | undefined): element is InterfaceMethodStatement;
|
|
64
|
+
export declare function isInterfaceFieldStatement(element: Statement | Expression | undefined): element is InterfaceFieldStatement;
|
|
60
65
|
/**
|
|
61
66
|
* Determine if the variable is a descendent of the Expression base class.
|
|
62
67
|
* Due to performance restrictions, this expects all statements to directly extend Expression,
|
|
@@ -77,6 +82,7 @@ export declare function isLiteralExpression(element: Statement | Expression | un
|
|
|
77
82
|
export declare function isEscapedCharCodeLiteralExpression(element: Statement | Expression | undefined): element is EscapedCharCodeLiteralExpression;
|
|
78
83
|
export declare function isArrayLiteralExpression(element: Statement | Expression | undefined): element is ArrayLiteralExpression;
|
|
79
84
|
export declare function isAALiteralExpression(element: Statement | Expression | undefined): element is AALiteralExpression;
|
|
85
|
+
export declare function isAAMemberExpression(element: Statement | Expression | undefined): element is AAMemberExpression;
|
|
80
86
|
export declare function isUnaryExpression(element: Statement | Expression | undefined): element is UnaryExpression;
|
|
81
87
|
export declare function isVariableExpression(element: Statement | Expression | undefined): element is VariableExpression;
|
|
82
88
|
export declare function isSourceLiteralExpression(element: Statement | Expression | undefined): element is SourceLiteralExpression;
|
|
@@ -87,6 +93,8 @@ export declare function isTemplateStringExpression(element: Statement | Expressi
|
|
|
87
93
|
export declare function isTaggedTemplateStringExpression(element: Statement | Expression | undefined): element is TaggedTemplateStringExpression;
|
|
88
94
|
export declare function isFunctionParameterExpression(element: Statement | Expression | undefined): element is FunctionParameterExpression;
|
|
89
95
|
export declare function isAnnotationExpression(element: Statement | Expression | undefined): element is AnnotationExpression;
|
|
96
|
+
export declare function isRegexLiteralExpression(element: Statement | Expression | undefined): element is RegexLiteralExpression;
|
|
97
|
+
export declare function isTypedefProvider(element: any): element is TypedefProvider;
|
|
90
98
|
export declare function isStringType(value: any): value is StringType;
|
|
91
99
|
export declare function isFunctionType(e: any): e is FunctionType;
|
|
92
100
|
export declare function isBooleanType(e: any): e is BooleanType;
|
|
@@ -94,6 +102,7 @@ export declare function isIntegerType(e: any): e is IntegerType;
|
|
|
94
102
|
export declare function isLongIntegerType(e: any): e is LongIntegerType;
|
|
95
103
|
export declare function isFloatType(e: any): e is FloatType;
|
|
96
104
|
export declare function isDoubleType(e: any): e is DoubleType;
|
|
105
|
+
export declare function isPrimitiveType(e: any): boolean;
|
|
97
106
|
export declare function isInvalidType(e: any): e is InvalidType;
|
|
98
107
|
export declare function isVoidType(e: any): e is VoidType;
|
|
99
108
|
export declare function isCustomType(e: any): e is CustomType;
|
|
@@ -102,6 +111,7 @@ export declare function isInterfaceType(e: any): e is InterfaceType;
|
|
|
102
111
|
export declare function isArrayType(e: any): e is ArrayType;
|
|
103
112
|
export declare function isObjectType(e: any): e is ObjectType;
|
|
104
113
|
export declare function isDynamicType(e: any): e is DynamicType;
|
|
114
|
+
export declare function isLazyType(e: any): e is LazyType;
|
|
105
115
|
export declare function isNumberType(e: any): e is IntegerType | LongIntegerType | FloatType | DoubleType;
|
|
106
116
|
export declare function isLiteralInvalid(e: any): e is LiteralExpression & {
|
|
107
117
|
type: InvalidType;
|
|
@@ -115,3 +125,5 @@ export declare function isLiteralString(e: any): e is LiteralExpression & {
|
|
|
115
125
|
export declare function isLiteralNumber(e: any): e is LiteralExpression & {
|
|
116
126
|
type: IntegerType | LongIntegerType | FloatType | DoubleType;
|
|
117
127
|
};
|
|
128
|
+
export declare function isSGInterfaceField(e: SGNode): e is SGInterfaceField;
|
|
129
|
+
export declare function isSGInterfaceFunction(e: SGNode): e is SGInterfaceFunction;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isVariableExpression = exports.isUnaryExpression = exports.isAAMemberExpression = exports.isAALiteralExpression = exports.isArrayLiteralExpression = exports.isEscapedCharCodeLiteralExpression = exports.isLiteralExpression = exports.isGroupingExpression = exports.isIndexedGetExpression = exports.isXmlAttributeGetExpression = exports.isDottedGetExpression = exports.isNamespacedVariableNameExpression = exports.isFunctionExpression = exports.isCallExpression = exports.isBinaryExpression = exports.isExpression = exports.isInterfaceFieldStatement = exports.isInterfaceMethodStatement = exports.isInterfaceStatement = exports.isClassFieldStatement = exports.isClassMethodStatement = exports.isImportStatement = exports.isClassStatement = exports.isNamespaceStatement = exports.isLibraryStatement = exports.isIndexedSetStatement = exports.isDottedSetStatement = exports.isWhileStatement = exports.isForEachStatement = exports.isForStatement = exports.isStopStatement = exports.isEndStatement = exports.isReturnStatement = exports.isLabelStatement = exports.isGotoStatement = exports.isPrintStatement = exports.isIncrementStatement = exports.isIfStatement = exports.isFunctionStatement = exports.isExitWhileStatement = exports.isExitForStatement = exports.isCommentStatement = exports.isExpressionStatement = exports.isBlock = exports.isAssignmentStatement = exports.isBody = exports.isStatement = exports.isXmlScope = exports.isXmlFile = exports.isBrsFile = void 0;
|
|
4
|
+
exports.isSGInterfaceFunction = exports.isSGInterfaceField = exports.isLiteralNumber = exports.isLiteralString = exports.isLiteralBoolean = exports.isLiteralInvalid = exports.isNumberType = exports.isLazyType = exports.isDynamicType = exports.isObjectType = exports.isArrayType = exports.isInterfaceType = exports.isUninitializedType = exports.isCustomType = exports.isVoidType = exports.isInvalidType = exports.isPrimitiveType = exports.isDoubleType = exports.isFloatType = exports.isLongIntegerType = exports.isIntegerType = exports.isBooleanType = exports.isFunctionType = exports.isStringType = exports.isTypedefProvider = exports.isRegexLiteralExpression = exports.isAnnotationExpression = exports.isFunctionParameterExpression = exports.isTaggedTemplateStringExpression = exports.isTemplateStringExpression = exports.isTemplateStringQuasiExpression = exports.isCallfuncExpression = exports.isNewExpression = exports.isSourceLiteralExpression = void 0;
|
|
4
5
|
const visitors_1 = require("./visitors");
|
|
5
6
|
// File reflection
|
|
6
7
|
function isBrsFile(file) {
|
|
@@ -160,6 +161,18 @@ function isClassFieldStatement(element) {
|
|
|
160
161
|
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'ClassFieldStatement';
|
|
161
162
|
}
|
|
162
163
|
exports.isClassFieldStatement = isClassFieldStatement;
|
|
164
|
+
function isInterfaceStatement(element) {
|
|
165
|
+
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'InterfaceStatement';
|
|
166
|
+
}
|
|
167
|
+
exports.isInterfaceStatement = isInterfaceStatement;
|
|
168
|
+
function isInterfaceMethodStatement(element) {
|
|
169
|
+
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'InterfaceMethodStatement';
|
|
170
|
+
}
|
|
171
|
+
exports.isInterfaceMethodStatement = isInterfaceMethodStatement;
|
|
172
|
+
function isInterfaceFieldStatement(element) {
|
|
173
|
+
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'InterfaceFieldStatement';
|
|
174
|
+
}
|
|
175
|
+
exports.isInterfaceFieldStatement = isInterfaceFieldStatement;
|
|
163
176
|
// Expressions reflection
|
|
164
177
|
/**
|
|
165
178
|
* Determine if the variable is a descendent of the Expression base class.
|
|
@@ -221,6 +234,10 @@ function isAALiteralExpression(element) {
|
|
|
221
234
|
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'AALiteralExpression';
|
|
222
235
|
}
|
|
223
236
|
exports.isAALiteralExpression = isAALiteralExpression;
|
|
237
|
+
function isAAMemberExpression(element) {
|
|
238
|
+
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'AAMemberExpression';
|
|
239
|
+
}
|
|
240
|
+
exports.isAAMemberExpression = isAAMemberExpression;
|
|
224
241
|
function isUnaryExpression(element) {
|
|
225
242
|
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'UnaryExpression';
|
|
226
243
|
}
|
|
@@ -261,6 +278,14 @@ function isAnnotationExpression(element) {
|
|
|
261
278
|
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'AnnotationExpression';
|
|
262
279
|
}
|
|
263
280
|
exports.isAnnotationExpression = isAnnotationExpression;
|
|
281
|
+
function isRegexLiteralExpression(element) {
|
|
282
|
+
return (element === null || element === void 0 ? void 0 : element.constructor.name) === 'RegexLiteralExpression';
|
|
283
|
+
}
|
|
284
|
+
exports.isRegexLiteralExpression = isRegexLiteralExpression;
|
|
285
|
+
function isTypedefProvider(element) {
|
|
286
|
+
return 'getTypedef' in element;
|
|
287
|
+
}
|
|
288
|
+
exports.isTypedefProvider = isTypedefProvider;
|
|
264
289
|
// BscType reflection
|
|
265
290
|
// Note: these are Hardcoded to avoid circular dependencies
|
|
266
291
|
function isStringType(value) {
|
|
@@ -291,6 +316,10 @@ function isDoubleType(e) {
|
|
|
291
316
|
return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'DoubleType';
|
|
292
317
|
}
|
|
293
318
|
exports.isDoubleType = isDoubleType;
|
|
319
|
+
function isPrimitiveType(e) {
|
|
320
|
+
return isBooleanType(e) || isIntegerType(e) || isFloatType(e) || isDoubleType(e) || isStringType(e) || isLongIntegerType(e);
|
|
321
|
+
}
|
|
322
|
+
exports.isPrimitiveType = isPrimitiveType;
|
|
294
323
|
function isInvalidType(e) {
|
|
295
324
|
return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'InvalidType';
|
|
296
325
|
}
|
|
@@ -323,6 +352,10 @@ function isDynamicType(e) {
|
|
|
323
352
|
return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'DynamicType';
|
|
324
353
|
}
|
|
325
354
|
exports.isDynamicType = isDynamicType;
|
|
355
|
+
function isLazyType(e) {
|
|
356
|
+
return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'LazyType';
|
|
357
|
+
}
|
|
358
|
+
exports.isLazyType = isLazyType;
|
|
326
359
|
const numberConstructorNames = [
|
|
327
360
|
'IntegerType',
|
|
328
361
|
'LongIntegerType',
|
|
@@ -350,4 +383,12 @@ function isLiteralNumber(e) {
|
|
|
350
383
|
return isLiteralExpression(e) && isNumberType(e.type);
|
|
351
384
|
}
|
|
352
385
|
exports.isLiteralNumber = isLiteralNumber;
|
|
386
|
+
function isSGInterfaceField(e) {
|
|
387
|
+
return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'SGInterfaceField';
|
|
388
|
+
}
|
|
389
|
+
exports.isSGInterfaceField = isSGInterfaceField;
|
|
390
|
+
function isSGInterfaceFunction(e) {
|
|
391
|
+
return (e === null || e === void 0 ? void 0 : e.constructor.name) === 'SGInterfaceFunction';
|
|
392
|
+
}
|
|
393
|
+
exports.isSGInterfaceFunction = isSGInterfaceFunction;
|
|
353
394
|
//# sourceMappingURL=reflection.js.map
|