@typespec/compiler 0.56.0 → 0.57.0-dev.4
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/dist/generated-defs/TypeSpec.d.ts +9 -9
- package/dist/generated-defs/TypeSpec.d.ts.map +1 -1
- package/dist/manifest.js +2 -2
- package/dist/src/core/binder.d.ts.map +1 -1
- package/dist/src/core/binder.js +15 -2
- package/dist/src/core/binder.js.map +1 -1
- package/dist/src/core/checker.d.ts +10 -8
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +1576 -241
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.d.ts +6 -0
- package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.d.ts.map +1 -0
- package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.js +15 -0
- package/dist/src/core/compiler-code-fixes/model-to-object-literal.codefix.js.map +1 -0
- package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.d.ts +6 -0
- package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.d.ts.map +1 -0
- package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.js +15 -0
- package/dist/src/core/compiler-code-fixes/tuple-to-array-value.codefix.js.map +1 -0
- package/dist/src/core/diagnostic-creator.d.ts.map +1 -1
- package/dist/src/core/diagnostic-creator.js +1 -2
- package/dist/src/core/diagnostic-creator.js.map +1 -1
- package/dist/src/core/diagnostics.js +2 -2
- package/dist/src/core/diagnostics.js.map +1 -1
- package/dist/src/core/helpers/index.d.ts +1 -1
- package/dist/src/core/helpers/index.d.ts.map +1 -1
- package/dist/src/core/helpers/index.js +3 -1
- package/dist/src/core/helpers/index.js.map +1 -1
- package/dist/src/core/helpers/string-template-utils.d.ts +6 -6
- package/dist/src/core/helpers/string-template-utils.d.ts.map +1 -1
- package/dist/src/core/helpers/string-template-utils.js +20 -33
- package/dist/src/core/helpers/string-template-utils.js.map +1 -1
- package/dist/src/core/helpers/type-name-utils.d.ts +3 -2
- package/dist/src/core/helpers/type-name-utils.d.ts.map +1 -1
- package/dist/src/core/helpers/type-name-utils.js +57 -8
- package/dist/src/core/helpers/type-name-utils.js.map +1 -1
- package/dist/src/core/index.d.ts +3 -1
- package/dist/src/core/index.d.ts.map +1 -1
- package/dist/src/core/index.js +3 -1
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/core/intrinsic-type-state.d.ts +57 -0
- package/dist/src/core/intrinsic-type-state.d.ts.map +1 -0
- package/dist/src/core/intrinsic-type-state.js +150 -0
- package/dist/src/core/intrinsic-type-state.js.map +1 -0
- package/dist/src/core/js-marshaller.d.ts +13 -0
- package/dist/src/core/js-marshaller.d.ts.map +1 -0
- package/dist/src/core/js-marshaller.js +79 -0
- package/dist/src/core/js-marshaller.js.map +1 -0
- package/dist/src/core/library.d.ts +2 -1
- package/dist/src/core/library.d.ts.map +1 -1
- package/dist/src/core/library.js +3 -0
- package/dist/src/core/library.js.map +1 -1
- package/dist/src/core/messages.d.ts +235 -2
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +74 -1
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/numeric-ranges.d.ts +51 -0
- package/dist/src/core/numeric-ranges.d.ts.map +1 -0
- package/dist/src/core/numeric-ranges.js +30 -0
- package/dist/src/core/numeric-ranges.js.map +1 -0
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +232 -5
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/program.d.ts.map +1 -1
- package/dist/src/core/program.js +2 -2
- package/dist/src/core/program.js.map +1 -1
- package/dist/src/core/projector.d.ts.map +1 -1
- package/dist/src/core/projector.js +10 -2
- package/dist/src/core/projector.js.map +1 -1
- package/dist/src/core/scanner.d.ts +42 -37
- package/dist/src/core/scanner.d.ts.map +1 -1
- package/dist/src/core/scanner.js +67 -46
- package/dist/src/core/scanner.js.map +1 -1
- package/dist/src/core/semantic-walker.d.ts.map +1 -1
- package/dist/src/core/semantic-walker.js +12 -0
- package/dist/src/core/semantic-walker.js.map +1 -1
- package/dist/src/core/type-utils.d.ts +18 -7
- package/dist/src/core/type-utils.d.ts.map +1 -1
- package/dist/src/core/type-utils.js +24 -5
- package/dist/src/core/type-utils.js.map +1 -1
- package/dist/src/core/types.d.ts +224 -45
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js +8 -0
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/emitter-framework/type-emitter.d.ts.map +1 -1
- package/dist/src/emitter-framework/type-emitter.js +6 -0
- package/dist/src/emitter-framework/type-emitter.js.map +1 -1
- package/dist/src/formatter/print/comment-handler.d.ts.map +1 -1
- package/dist/src/formatter/print/comment-handler.js +22 -0
- package/dist/src/formatter/print/comment-handler.js.map +1 -1
- package/dist/src/formatter/print/printer.d.ts +11 -5
- package/dist/src/formatter/print/printer.d.ts.map +1 -1
- package/dist/src/formatter/print/printer.js +95 -4
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/lib/decorators.d.ts +3 -46
- package/dist/src/lib/decorators.d.ts.map +1 -1
- package/dist/src/lib/decorators.js +28 -104
- package/dist/src/lib/decorators.js.map +1 -1
- package/dist/src/lib/intrinsic-decorators.d.ts +2 -2
- package/dist/src/lib/intrinsic-decorators.d.ts.map +1 -1
- package/dist/src/lib/intrinsic-decorators.js +7 -0
- package/dist/src/lib/intrinsic-decorators.js.map +1 -1
- package/dist/src/server/classify.d.ts.map +1 -1
- package/dist/src/server/classify.js +10 -0
- package/dist/src/server/classify.js.map +1 -1
- package/dist/src/server/completion.d.ts.map +1 -1
- package/dist/src/server/completion.js +6 -0
- package/dist/src/server/completion.js.map +1 -1
- package/dist/src/server/serverlib.js +2 -2
- package/dist/src/server/serverlib.js.map +1 -1
- package/dist/src/server/tmlanguage.d.ts +1 -1
- package/dist/src/server/tmlanguage.d.ts.map +1 -1
- package/dist/src/server/tmlanguage.js +147 -20
- package/dist/src/server/tmlanguage.js.map +1 -1
- package/dist/src/server/type-details.js +1 -2
- package/dist/src/server/type-details.js.map +1 -1
- package/dist/src/server/type-signature.js +15 -6
- package/dist/src/server/type-signature.js.map +1 -1
- package/dist/typespec.tmLanguage +408 -17
- package/lib/intrinsics.tsp +55 -5
- package/package.json +5 -4
package/dist/src/core/parser.js
CHANGED
|
@@ -27,6 +27,10 @@ var ListKind;
|
|
|
27
27
|
...ListKind.OperationParameters,
|
|
28
28
|
invalidAnnotationTarget: "expression",
|
|
29
29
|
};
|
|
30
|
+
ListKind.FunctionArguments = {
|
|
31
|
+
...ListKind.OperationParameters,
|
|
32
|
+
invalidAnnotationTarget: "expression",
|
|
33
|
+
};
|
|
30
34
|
ListKind.ModelProperties = {
|
|
31
35
|
...PropertiesBase,
|
|
32
36
|
open: Token.OpenBrace,
|
|
@@ -34,6 +38,13 @@ var ListKind;
|
|
|
34
38
|
delimiter: Token.Semicolon,
|
|
35
39
|
toleratedDelimiter: Token.Comma,
|
|
36
40
|
};
|
|
41
|
+
ListKind.ObjectLiteralProperties = {
|
|
42
|
+
...PropertiesBase,
|
|
43
|
+
open: Token.HashBrace,
|
|
44
|
+
close: Token.CloseBrace,
|
|
45
|
+
delimiter: Token.Comma,
|
|
46
|
+
toleratedDelimiter: Token.Comma,
|
|
47
|
+
};
|
|
37
48
|
ListKind.InterfaceMembers = {
|
|
38
49
|
...PropertiesBase,
|
|
39
50
|
open: Token.OpenBrace,
|
|
@@ -43,6 +54,15 @@ var ListKind;
|
|
|
43
54
|
toleratedDelimiterIsValid: false,
|
|
44
55
|
allowedStatementKeyword: Token.OpKeyword,
|
|
45
56
|
};
|
|
57
|
+
ListKind.ScalarMembers = {
|
|
58
|
+
...PropertiesBase,
|
|
59
|
+
open: Token.OpenBrace,
|
|
60
|
+
close: Token.CloseBrace,
|
|
61
|
+
delimiter: Token.Semicolon,
|
|
62
|
+
toleratedDelimiter: Token.Comma,
|
|
63
|
+
toleratedDelimiterIsValid: false,
|
|
64
|
+
allowedStatementKeyword: Token.InitKeyword,
|
|
65
|
+
};
|
|
46
66
|
ListKind.UnionVariants = {
|
|
47
67
|
...PropertiesBase,
|
|
48
68
|
open: Token.OpenBrace,
|
|
@@ -91,6 +111,12 @@ var ListKind;
|
|
|
91
111
|
open: Token.OpenBracket,
|
|
92
112
|
close: Token.CloseBracket,
|
|
93
113
|
};
|
|
114
|
+
ListKind.ArrayLiteral = {
|
|
115
|
+
...ExpresionsBase,
|
|
116
|
+
allowEmpty: true,
|
|
117
|
+
open: Token.HashBracket,
|
|
118
|
+
close: Token.CloseBracket,
|
|
119
|
+
};
|
|
94
120
|
ListKind.FunctionParameters = {
|
|
95
121
|
...ExpresionsBase,
|
|
96
122
|
allowEmpty: true,
|
|
@@ -234,6 +260,10 @@ function createParser(code, options = {}) {
|
|
|
234
260
|
reportInvalidDecorators(decorators, "alias statement");
|
|
235
261
|
item = parseAliasStatement(pos);
|
|
236
262
|
break;
|
|
263
|
+
case Token.ConstKeyword:
|
|
264
|
+
reportInvalidDecorators(decorators, "const statement");
|
|
265
|
+
item = parseConstStatement(pos);
|
|
266
|
+
break;
|
|
237
267
|
case Token.UsingKeyword:
|
|
238
268
|
reportInvalidDecorators(decorators, "using statement");
|
|
239
269
|
item = parseUsingStatement(pos);
|
|
@@ -329,6 +359,10 @@ function createParser(code, options = {}) {
|
|
|
329
359
|
reportInvalidDecorators(decorators, "alias statement");
|
|
330
360
|
item = parseAliasStatement(pos);
|
|
331
361
|
break;
|
|
362
|
+
case Token.ConstKeyword:
|
|
363
|
+
reportInvalidDecorators(decorators, "const statement");
|
|
364
|
+
item = parseConstStatement(pos);
|
|
365
|
+
break;
|
|
332
366
|
case Token.UsingKeyword:
|
|
333
367
|
reportInvalidDecorators(decorators, "using statement");
|
|
334
368
|
item = parseUsingStatement(pos);
|
|
@@ -622,7 +656,7 @@ function createParser(code, options = {}) {
|
|
|
622
656
|
const id = parseIdentifier();
|
|
623
657
|
let constraint;
|
|
624
658
|
if (parseOptional(Token.ExtendsKeyword)) {
|
|
625
|
-
constraint =
|
|
659
|
+
constraint = parseMixedParameterConstraint();
|
|
626
660
|
}
|
|
627
661
|
let def;
|
|
628
662
|
if (parseOptional(Token.Equals)) {
|
|
@@ -636,6 +670,35 @@ function createParser(code, options = {}) {
|
|
|
636
670
|
...finishNode(pos),
|
|
637
671
|
};
|
|
638
672
|
}
|
|
673
|
+
function parseValueOfExpressionOrIntersectionOrHigher() {
|
|
674
|
+
if (token() === Token.ValueOfKeyword) {
|
|
675
|
+
return parseValueOfExpression();
|
|
676
|
+
}
|
|
677
|
+
else if (parseOptional(Token.OpenParen)) {
|
|
678
|
+
const expr = parseMixedParameterConstraint();
|
|
679
|
+
parseExpected(Token.CloseParen);
|
|
680
|
+
return expr;
|
|
681
|
+
}
|
|
682
|
+
return parseIntersectionExpressionOrHigher();
|
|
683
|
+
}
|
|
684
|
+
function parseMixedParameterConstraint() {
|
|
685
|
+
const pos = tokenPos();
|
|
686
|
+
parseOptional(Token.Bar);
|
|
687
|
+
const node = parseValueOfExpressionOrIntersectionOrHigher();
|
|
688
|
+
if (token() !== Token.Bar) {
|
|
689
|
+
return node;
|
|
690
|
+
}
|
|
691
|
+
const options = [node];
|
|
692
|
+
while (parseOptional(Token.Bar)) {
|
|
693
|
+
const expr = parseValueOfExpressionOrIntersectionOrHigher();
|
|
694
|
+
options.push(expr);
|
|
695
|
+
}
|
|
696
|
+
return {
|
|
697
|
+
kind: SyntaxKind.UnionExpression,
|
|
698
|
+
options,
|
|
699
|
+
...finishNode(pos),
|
|
700
|
+
};
|
|
701
|
+
}
|
|
639
702
|
function parseModelPropertyOrSpread(pos, decorators) {
|
|
640
703
|
return token() === Token.Ellipsis
|
|
641
704
|
? parseModelSpreadProperty(pos, decorators)
|
|
@@ -672,16 +735,47 @@ function createParser(code, options = {}) {
|
|
|
672
735
|
...finishNode(pos),
|
|
673
736
|
};
|
|
674
737
|
}
|
|
738
|
+
function parseObjectLiteralPropertyOrSpread(pos, decorators) {
|
|
739
|
+
reportInvalidDecorators(decorators, "object literal property");
|
|
740
|
+
return token() === Token.Ellipsis
|
|
741
|
+
? parseObjectLiteralSpreadProperty(pos)
|
|
742
|
+
: parseObjectLiteralProperty(pos);
|
|
743
|
+
}
|
|
744
|
+
function parseObjectLiteralSpreadProperty(pos) {
|
|
745
|
+
parseExpected(Token.Ellipsis);
|
|
746
|
+
// This could be broadened to allow any type expression
|
|
747
|
+
const target = parseReferenceExpression();
|
|
748
|
+
return {
|
|
749
|
+
kind: SyntaxKind.ObjectLiteralSpreadProperty,
|
|
750
|
+
target,
|
|
751
|
+
...finishNode(pos),
|
|
752
|
+
};
|
|
753
|
+
}
|
|
754
|
+
function parseObjectLiteralProperty(pos) {
|
|
755
|
+
const id = parseIdentifier({
|
|
756
|
+
message: "property",
|
|
757
|
+
});
|
|
758
|
+
parseExpected(Token.Colon);
|
|
759
|
+
const value = parseExpression();
|
|
760
|
+
return {
|
|
761
|
+
kind: SyntaxKind.ObjectLiteralProperty,
|
|
762
|
+
id,
|
|
763
|
+
value,
|
|
764
|
+
...finishNode(pos),
|
|
765
|
+
};
|
|
766
|
+
}
|
|
675
767
|
function parseScalarStatement(pos, decorators) {
|
|
676
768
|
parseExpected(Token.ScalarKeyword);
|
|
677
769
|
const id = parseIdentifier();
|
|
678
770
|
const templateParameters = parseTemplateParameterList();
|
|
679
771
|
const optionalExtends = parseOptionalScalarExtends();
|
|
772
|
+
const members = parseScalarMembers();
|
|
680
773
|
return {
|
|
681
774
|
kind: SyntaxKind.ScalarStatement,
|
|
682
775
|
id,
|
|
683
776
|
templateParameters,
|
|
684
777
|
extends: optionalExtends,
|
|
778
|
+
members,
|
|
685
779
|
decorators,
|
|
686
780
|
...finishNode(pos),
|
|
687
781
|
};
|
|
@@ -692,6 +786,27 @@ function createParser(code, options = {}) {
|
|
|
692
786
|
}
|
|
693
787
|
return undefined;
|
|
694
788
|
}
|
|
789
|
+
function parseScalarMembers() {
|
|
790
|
+
if (token() === Token.Semicolon) {
|
|
791
|
+
nextToken();
|
|
792
|
+
return [];
|
|
793
|
+
}
|
|
794
|
+
else {
|
|
795
|
+
return parseList(ListKind.ScalarMembers, parseScalarMember);
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
function parseScalarMember(pos, decorators) {
|
|
799
|
+
reportInvalidDecorators(decorators, "scalar member");
|
|
800
|
+
parseExpected(Token.InitKeyword);
|
|
801
|
+
const id = parseIdentifier();
|
|
802
|
+
const parameters = parseFunctionParameters();
|
|
803
|
+
return {
|
|
804
|
+
kind: SyntaxKind.ScalarConstructor,
|
|
805
|
+
id,
|
|
806
|
+
parameters,
|
|
807
|
+
...finishNode(pos),
|
|
808
|
+
};
|
|
809
|
+
}
|
|
695
810
|
function parseEnumStatement(pos, decorators) {
|
|
696
811
|
parseExpected(Token.EnumKeyword);
|
|
697
812
|
const id = parseIdentifier();
|
|
@@ -761,6 +876,27 @@ function createParser(code, options = {}) {
|
|
|
761
876
|
...finishNode(pos),
|
|
762
877
|
};
|
|
763
878
|
}
|
|
879
|
+
function parseConstStatement(pos) {
|
|
880
|
+
parseExpected(Token.ConstKeyword);
|
|
881
|
+
const id = parseIdentifier();
|
|
882
|
+
const type = parseOptionalTypeAnnotation();
|
|
883
|
+
parseExpected(Token.Equals);
|
|
884
|
+
const value = parseExpression();
|
|
885
|
+
parseExpected(Token.Semicolon);
|
|
886
|
+
return {
|
|
887
|
+
kind: SyntaxKind.ConstStatement,
|
|
888
|
+
id,
|
|
889
|
+
value,
|
|
890
|
+
type,
|
|
891
|
+
...finishNode(pos),
|
|
892
|
+
};
|
|
893
|
+
}
|
|
894
|
+
function parseOptionalTypeAnnotation() {
|
|
895
|
+
if (parseOptional(Token.Colon)) {
|
|
896
|
+
return parseExpression();
|
|
897
|
+
}
|
|
898
|
+
return undefined;
|
|
899
|
+
}
|
|
764
900
|
function parseExpression() {
|
|
765
901
|
return parseUnionExpressionOrHigher();
|
|
766
902
|
}
|
|
@@ -830,9 +966,61 @@ function createParser(code, options = {}) {
|
|
|
830
966
|
...finishNode(pos),
|
|
831
967
|
};
|
|
832
968
|
}
|
|
969
|
+
function parseTypeOfExpression() {
|
|
970
|
+
const pos = tokenPos();
|
|
971
|
+
parseExpected(Token.TypeOfKeyword);
|
|
972
|
+
const target = parseTypeOfTarget();
|
|
973
|
+
return {
|
|
974
|
+
kind: SyntaxKind.TypeOfExpression,
|
|
975
|
+
target,
|
|
976
|
+
...finishNode(pos),
|
|
977
|
+
};
|
|
978
|
+
}
|
|
979
|
+
function parseTypeOfTarget() {
|
|
980
|
+
while (true) {
|
|
981
|
+
switch (token()) {
|
|
982
|
+
case Token.TypeOfKeyword:
|
|
983
|
+
return parseTypeOfExpression();
|
|
984
|
+
case Token.Identifier:
|
|
985
|
+
return parseCallOrReferenceExpression();
|
|
986
|
+
case Token.StringLiteral:
|
|
987
|
+
return parseStringLiteral();
|
|
988
|
+
case Token.StringTemplateHead:
|
|
989
|
+
return parseStringTemplateExpression();
|
|
990
|
+
case Token.TrueKeyword:
|
|
991
|
+
case Token.FalseKeyword:
|
|
992
|
+
return parseBooleanLiteral();
|
|
993
|
+
case Token.NumericLiteral:
|
|
994
|
+
return parseNumericLiteral();
|
|
995
|
+
case Token.OpenParen:
|
|
996
|
+
parseExpected(Token.OpenParen);
|
|
997
|
+
const target = parseTypeOfTarget();
|
|
998
|
+
parseExpected(Token.CloseParen);
|
|
999
|
+
return target;
|
|
1000
|
+
default:
|
|
1001
|
+
return parseReferenceExpression("typeofTarget");
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
833
1005
|
function parseReferenceExpression(message) {
|
|
834
1006
|
const pos = tokenPos();
|
|
835
1007
|
const target = parseIdentifierOrMemberExpression(message);
|
|
1008
|
+
return parseReferenceExpressionInternal(target, pos);
|
|
1009
|
+
}
|
|
1010
|
+
function parseCallOrReferenceExpression(message) {
|
|
1011
|
+
const pos = tokenPos();
|
|
1012
|
+
const target = parseIdentifierOrMemberExpression(message);
|
|
1013
|
+
if (token() === Token.OpenParen) {
|
|
1014
|
+
return {
|
|
1015
|
+
kind: SyntaxKind.CallExpression,
|
|
1016
|
+
target,
|
|
1017
|
+
arguments: parseList(ListKind.FunctionArguments, parseExpression),
|
|
1018
|
+
...finishNode(pos),
|
|
1019
|
+
};
|
|
1020
|
+
}
|
|
1021
|
+
return parseReferenceExpressionInternal(target, pos);
|
|
1022
|
+
}
|
|
1023
|
+
function parseReferenceExpressionInternal(target, pos) {
|
|
836
1024
|
const args = parseOptionalList(ListKind.TemplateArguments, parseTemplateArgument);
|
|
837
1025
|
return {
|
|
838
1026
|
kind: SyntaxKind.TypeReference,
|
|
@@ -1039,10 +1227,10 @@ function createParser(code, options = {}) {
|
|
|
1039
1227
|
function parsePrimaryExpression() {
|
|
1040
1228
|
while (true) {
|
|
1041
1229
|
switch (token()) {
|
|
1042
|
-
case Token.
|
|
1043
|
-
return
|
|
1230
|
+
case Token.TypeOfKeyword:
|
|
1231
|
+
return parseTypeOfExpression();
|
|
1044
1232
|
case Token.Identifier:
|
|
1045
|
-
return
|
|
1233
|
+
return parseCallOrReferenceExpression();
|
|
1046
1234
|
case Token.StringLiteral:
|
|
1047
1235
|
return parseStringLiteral();
|
|
1048
1236
|
case Token.StringTemplateHead:
|
|
@@ -1066,6 +1254,10 @@ function createParser(code, options = {}) {
|
|
|
1066
1254
|
const directives = parseDirectiveList();
|
|
1067
1255
|
reportInvalidDirective(directives, "expression");
|
|
1068
1256
|
continue;
|
|
1257
|
+
case Token.HashBrace:
|
|
1258
|
+
return parseObjectLiteral();
|
|
1259
|
+
case Token.HashBracket:
|
|
1260
|
+
return parseArrayLiteral();
|
|
1069
1261
|
case Token.VoidKeyword:
|
|
1070
1262
|
return parseVoidKeyword();
|
|
1071
1263
|
case Token.NeverKeyword:
|
|
@@ -1134,6 +1326,24 @@ function createParser(code, options = {}) {
|
|
|
1134
1326
|
...finishNode(pos),
|
|
1135
1327
|
};
|
|
1136
1328
|
}
|
|
1329
|
+
function parseObjectLiteral() {
|
|
1330
|
+
const pos = tokenPos();
|
|
1331
|
+
const properties = parseList(ListKind.ObjectLiteralProperties, parseObjectLiteralPropertyOrSpread);
|
|
1332
|
+
return {
|
|
1333
|
+
kind: SyntaxKind.ObjectLiteral,
|
|
1334
|
+
properties,
|
|
1335
|
+
...finishNode(pos),
|
|
1336
|
+
};
|
|
1337
|
+
}
|
|
1338
|
+
function parseArrayLiteral() {
|
|
1339
|
+
const pos = tokenPos();
|
|
1340
|
+
const values = parseList(ListKind.ArrayLiteral, parseExpression);
|
|
1341
|
+
return {
|
|
1342
|
+
kind: SyntaxKind.ArrayLiteral,
|
|
1343
|
+
values,
|
|
1344
|
+
...finishNode(pos),
|
|
1345
|
+
};
|
|
1346
|
+
}
|
|
1137
1347
|
function parseStringLiteral() {
|
|
1138
1348
|
const pos = tokenPos();
|
|
1139
1349
|
const value = tokenValue();
|
|
@@ -1373,7 +1583,7 @@ function createParser(code, options = {}) {
|
|
|
1373
1583
|
const optional = parseOptional(Token.Question);
|
|
1374
1584
|
let type;
|
|
1375
1585
|
if (parseOptional(Token.Colon)) {
|
|
1376
|
-
type =
|
|
1586
|
+
type = parseMixedParameterConstraint();
|
|
1377
1587
|
}
|
|
1378
1588
|
return {
|
|
1379
1589
|
kind: SyntaxKind.FunctionParameter,
|
|
@@ -2555,6 +2765,8 @@ export function visitChildren(node, cb) {
|
|
|
2555
2765
|
visitEach(cb, node.arguments));
|
|
2556
2766
|
case SyntaxKind.DecoratorExpression:
|
|
2557
2767
|
return visitNode(cb, node.target) || visitEach(cb, node.arguments);
|
|
2768
|
+
case SyntaxKind.CallExpression:
|
|
2769
|
+
return visitNode(cb, node.target) || visitEach(cb, node.arguments);
|
|
2558
2770
|
case SyntaxKind.DirectiveExpression:
|
|
2559
2771
|
return visitNode(cb, node.target) || visitEach(cb, node.arguments);
|
|
2560
2772
|
case SyntaxKind.ImportStatement:
|
|
@@ -2604,7 +2816,10 @@ export function visitChildren(node, cb) {
|
|
|
2604
2816
|
return (visitEach(cb, node.decorators) ||
|
|
2605
2817
|
visitNode(cb, node.id) ||
|
|
2606
2818
|
visitEach(cb, node.templateParameters) ||
|
|
2819
|
+
visitEach(cb, node.members) ||
|
|
2607
2820
|
visitNode(cb, node.extends));
|
|
2821
|
+
case SyntaxKind.ScalarConstructor:
|
|
2822
|
+
return visitNode(cb, node.id) || visitEach(cb, node.parameters);
|
|
2608
2823
|
case SyntaxKind.UnionStatement:
|
|
2609
2824
|
return (visitEach(cb, node.decorators) ||
|
|
2610
2825
|
visitNode(cb, node.id) ||
|
|
@@ -2622,6 +2837,8 @@ export function visitChildren(node, cb) {
|
|
|
2622
2837
|
return (visitNode(cb, node.id) ||
|
|
2623
2838
|
visitEach(cb, node.templateParameters) ||
|
|
2624
2839
|
visitNode(cb, node.value));
|
|
2840
|
+
case SyntaxKind.ConstStatement:
|
|
2841
|
+
return visitNode(cb, node.id) || visitNode(cb, node.value) || visitNode(cb, node.type);
|
|
2625
2842
|
case SyntaxKind.DecoratorDeclarationStatement:
|
|
2626
2843
|
return (visitEach(cb, node.modifiers) ||
|
|
2627
2844
|
visitNode(cb, node.id) ||
|
|
@@ -2638,6 +2855,8 @@ export function visitChildren(node, cb) {
|
|
|
2638
2855
|
return visitNode(cb, node.target) || visitEach(cb, node.arguments);
|
|
2639
2856
|
case SyntaxKind.ValueOfExpression:
|
|
2640
2857
|
return visitNode(cb, node.target);
|
|
2858
|
+
case SyntaxKind.TypeOfExpression:
|
|
2859
|
+
return visitNode(cb, node.target);
|
|
2641
2860
|
case SyntaxKind.TupleExpression:
|
|
2642
2861
|
return visitEach(cb, node.values);
|
|
2643
2862
|
case SyntaxKind.UnionExpression:
|
|
@@ -2707,6 +2926,14 @@ export function visitChildren(node, cb) {
|
|
|
2707
2926
|
return visitNode(cb, node.head) || visitEach(cb, node.spans);
|
|
2708
2927
|
case SyntaxKind.StringTemplateSpan:
|
|
2709
2928
|
return visitNode(cb, node.expression) || visitNode(cb, node.literal);
|
|
2929
|
+
case SyntaxKind.ObjectLiteral:
|
|
2930
|
+
return visitEach(cb, node.properties);
|
|
2931
|
+
case SyntaxKind.ObjectLiteralProperty:
|
|
2932
|
+
return visitNode(cb, node.id) || visitNode(cb, node.value);
|
|
2933
|
+
case SyntaxKind.ObjectLiteralSpreadProperty:
|
|
2934
|
+
return visitNode(cb, node.target);
|
|
2935
|
+
case SyntaxKind.ArrayLiteral:
|
|
2936
|
+
return visitEach(cb, node.values);
|
|
2710
2937
|
// no children for the rest of these.
|
|
2711
2938
|
case SyntaxKind.StringTemplateHead:
|
|
2712
2939
|
case SyntaxKind.StringTemplateMiddle:
|