@typespec/compiler 0.56.0-dev.2 → 0.56.0-dev.20
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/manifest.js +2 -2
- package/dist/src/config/config-interpolation.js +4 -7
- package/dist/src/config/config-interpolation.js.map +1 -1
- package/dist/src/config/config-loader.js +5 -7
- package/dist/src/config/config-loader.js.map +1 -1
- package/dist/src/config/config-to-options.js +8 -10
- package/dist/src/config/config-to-options.js.map +1 -1
- package/dist/src/core/binder.js +8 -8
- package/dist/src/core/binder.js.map +1 -1
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +192 -214
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/cli/actions/compile/args.js +3 -6
- package/dist/src/core/cli/actions/compile/args.js.map +1 -1
- package/dist/src/core/cli/actions/compile/compile.js +2 -2
- package/dist/src/core/cli/actions/compile/compile.js.map +1 -1
- package/dist/src/core/cli/actions/compile/watch.js +1 -2
- package/dist/src/core/cli/actions/compile/watch.js.map +1 -1
- package/dist/src/core/cli/actions/info.js +1 -2
- package/dist/src/core/cli/actions/info.js.map +1 -1
- package/dist/src/core/cli/actions/vs.js +1 -2
- package/dist/src/core/cli/actions/vs.js.map +1 -1
- package/dist/src/core/cli/install-vsix.js +1 -2
- package/dist/src/core/cli/install-vsix.js.map +1 -1
- package/dist/src/core/cli/utils.js +7 -9
- package/dist/src/core/cli/utils.js.map +1 -1
- package/dist/src/core/decorator-utils.js +6 -12
- package/dist/src/core/decorator-utils.js.map +1 -1
- package/dist/src/core/deprecation.js +2 -3
- package/dist/src/core/deprecation.js.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/entrypoint-resolution.js +1 -1
- package/dist/src/core/entrypoint-resolution.js.map +1 -1
- package/dist/src/core/external-error.js +4 -5
- package/dist/src/core/external-error.js.map +1 -1
- package/dist/src/core/fetch.d.ts.map +1 -1
- package/dist/src/core/fetch.js +6 -6
- package/dist/src/core/fetch.js.map +1 -1
- package/dist/src/core/formatter-fs.js +2 -2
- package/dist/src/core/formatter-fs.js.map +1 -1
- package/dist/src/core/helpers/discriminator-utils.js +2 -4
- package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
- package/dist/src/core/helpers/operation-utils.js +1 -2
- package/dist/src/core/helpers/operation-utils.js.map +1 -1
- package/dist/src/core/helpers/type-name-utils.js +18 -12
- package/dist/src/core/helpers/type-name-utils.js.map +1 -1
- package/dist/src/core/helpers/usage-resolver.js +2 -4
- package/dist/src/core/helpers/usage-resolver.js.map +1 -1
- package/dist/src/core/install.js +3 -3
- package/dist/src/core/install.js.map +1 -1
- package/dist/src/core/library.js +2 -3
- package/dist/src/core/library.js.map +1 -1
- package/dist/src/core/linter.js +4 -7
- package/dist/src/core/linter.js.map +1 -1
- package/dist/src/core/logger/console-sink.js +2 -3
- package/dist/src/core/logger/console-sink.js.map +1 -1
- package/dist/src/core/logger/tracer.js +1 -1
- package/dist/src/core/logger/tracer.js.map +1 -1
- package/dist/src/core/module-resolver.js +3 -4
- package/dist/src/core/module-resolver.js.map +1 -1
- package/dist/src/core/node-host.js +1 -1
- package/dist/src/core/node-host.js.map +1 -1
- package/dist/src/core/numeric.d.ts +26 -0
- package/dist/src/core/numeric.d.ts.map +1 -0
- package/dist/src/core/numeric.js +171 -0
- package/dist/src/core/numeric.js.map +1 -0
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +14 -15
- 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 +36 -40
- package/dist/src/core/program.js.map +1 -1
- package/dist/src/core/projection-members.js +2 -2
- package/dist/src/core/projection-members.js.map +1 -1
- package/dist/src/core/projector.js +3 -8
- package/dist/src/core/projector.js.map +1 -1
- package/dist/src/core/scanner.js +1 -1
- package/dist/src/core/scanner.js.map +1 -1
- package/dist/src/core/schema-validator.js +1 -2
- package/dist/src/core/schema-validator.js.map +1 -1
- package/dist/src/core/semantic-walker.js +2 -4
- package/dist/src/core/semantic-walker.js.map +1 -1
- package/dist/src/core/source-file.js +1 -1
- package/dist/src/core/source-file.js.map +1 -1
- package/dist/src/core/type-utils.js +2 -2
- package/dist/src/core/type-utils.js.map +1 -1
- package/dist/src/core/types.d.ts +15 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/emitter-framework/asset-emitter.js +10 -14
- package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
- package/dist/src/emitter-framework/builders/array-builder.js +7 -17
- package/dist/src/emitter-framework/builders/array-builder.js.map +1 -1
- package/dist/src/emitter-framework/builders/object-builder.js +1 -0
- package/dist/src/emitter-framework/builders/object-builder.js.map +1 -1
- package/dist/src/emitter-framework/builders/string-builder.js +23 -31
- package/dist/src/emitter-framework/builders/string-builder.js.map +1 -1
- package/dist/src/emitter-framework/custom-key-map.js +6 -19
- package/dist/src/emitter-framework/custom-key-map.js.map +1 -1
- package/dist/src/emitter-framework/placeholder.js +3 -12
- package/dist/src/emitter-framework/placeholder.js.map +1 -1
- package/dist/src/emitter-framework/ref-scope.js +1 -2
- package/dist/src/emitter-framework/ref-scope.js.map +1 -1
- package/dist/src/emitter-framework/reference-cycle.js +11 -19
- package/dist/src/emitter-framework/reference-cycle.js.map +1 -1
- package/dist/src/emitter-framework/type-emitter.js +1 -0
- package/dist/src/emitter-framework/type-emitter.js.map +1 -1
- package/dist/src/emitter-framework/types.js +10 -8
- package/dist/src/emitter-framework/types.js.map +1 -1
- package/dist/src/formatter/parser.js +4 -3
- package/dist/src/formatter/parser.js.map +1 -1
- package/dist/src/formatter/print/comment-handler.js +3 -4
- package/dist/src/formatter/print/comment-handler.js.map +1 -1
- package/dist/src/formatter/print/printer.js +5 -8
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/init/init.js +2 -2
- package/dist/src/init/init.js.map +1 -1
- package/dist/src/init/scaffold.js +11 -17
- package/dist/src/init/scaffold.js.map +1 -1
- package/dist/src/lib/decorators.d.ts +1 -3
- package/dist/src/lib/decorators.d.ts.map +1 -1
- package/dist/src/lib/decorators.js +41 -45
- package/dist/src/lib/decorators.js.map +1 -1
- package/dist/src/lib/encoded-names.js +3 -5
- package/dist/src/lib/encoded-names.js.map +1 -1
- package/dist/src/lib/intrinsic-decorators.d.ts +6 -0
- package/dist/src/lib/intrinsic-decorators.d.ts.map +1 -0
- package/dist/src/lib/intrinsic-decorators.js +10 -0
- package/dist/src/lib/intrinsic-decorators.js.map +1 -0
- package/dist/src/lib/service.js +3 -5
- package/dist/src/lib/service.js.map +1 -1
- package/dist/src/server/compile-service.js +6 -7
- package/dist/src/server/compile-service.js.map +1 -1
- package/dist/src/server/completion.d.ts.map +1 -1
- package/dist/src/server/completion.js +15 -18
- package/dist/src/server/completion.js.map +1 -1
- package/dist/src/server/file-service.js +2 -4
- package/dist/src/server/file-service.js.map +1 -1
- package/dist/src/server/server.js +2 -4
- package/dist/src/server/server.js.map +1 -1
- package/dist/src/server/serverlib.d.ts.map +1 -1
- package/dist/src/server/serverlib.js +25 -34
- package/dist/src/server/serverlib.js.map +1 -1
- package/dist/src/server/symbol-structure.js +2 -4
- package/dist/src/server/symbol-structure.js.map +1 -1
- package/dist/src/server/type-details.js +5 -9
- package/dist/src/server/type-details.js.map +1 -1
- package/dist/src/server/type-signature.js +4 -6
- package/dist/src/server/type-signature.js.map +1 -1
- package/dist/src/server/update-manager.js +15 -28
- package/dist/src/server/update-manager.js.map +1 -1
- package/dist/src/testing/rule-tester.js +2 -3
- package/dist/src/testing/rule-tester.js.map +1 -1
- package/dist/src/testing/test-host.js +8 -8
- package/dist/src/testing/test-host.js.map +1 -1
- package/dist/src/testing/test-server-host.js +7 -11
- package/dist/src/testing/test-server-host.js.map +1 -1
- package/dist/src/testing/test-utils.js +6 -6
- package/dist/src/testing/test-utils.js.map +1 -1
- package/dist/src/testing/types.js +1 -0
- package/dist/src/testing/types.js.map +1 -1
- package/dist/src/utils/duplicate-tracker.js +4 -13
- package/dist/src/utils/duplicate-tracker.js.map +1 -1
- package/dist/src/utils/misc.js +53 -75
- package/dist/src/utils/misc.js.map +1 -1
- package/dist/src/yaml/diagnostics.js +4 -5
- package/dist/src/yaml/diagnostics.js.map +1 -1
- package/lib/{lib.tsp → intrinsics.tsp} +3 -75
- package/lib/{decorators.tsp → std/decorators.tsp} +1 -1
- package/lib/std/main.tsp +5 -0
- package/lib/std/types.tsp +76 -0
- package/package.json +10 -10
- package/lib/main.tsp +0 -4
- /package/lib/{projected-names.tsp → std/projected-names.tsp} +0 -0
- /package/lib/{reflection.tsp → std/reflection.tsp} +0 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
export class InvalidNumericError extends Error {
|
|
2
|
+
code = "InvalidNumeric";
|
|
3
|
+
}
|
|
4
|
+
/** @internal */
|
|
5
|
+
export const InternalDataSym = Symbol.for("NumericInternalData");
|
|
6
|
+
/**
|
|
7
|
+
* Check if the given arg is a Numeric
|
|
8
|
+
*/
|
|
9
|
+
export function isNumeric(arg) {
|
|
10
|
+
return typeof arg === "object" && arg !== null && InternalDataSym in arg;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Represent any possible numeric value
|
|
14
|
+
*/
|
|
15
|
+
export function Numeric(stringValue) {
|
|
16
|
+
if (new.target) {
|
|
17
|
+
throw new Error("Numeric is not a constructor");
|
|
18
|
+
}
|
|
19
|
+
const data = parse(stringValue);
|
|
20
|
+
const isInteger = data.d === 0;
|
|
21
|
+
const obj = {
|
|
22
|
+
[InternalDataSym]: data,
|
|
23
|
+
isInteger,
|
|
24
|
+
};
|
|
25
|
+
// We are explicitly not using a class here due to version mismatch between the compiler and the runtime that could happen and break instanceof checks.
|
|
26
|
+
const numeric = setTypedProptotype(obj, NumericPrototype);
|
|
27
|
+
return Object.freeze(numeric);
|
|
28
|
+
}
|
|
29
|
+
function setTypedProptotype(obj, prototype) {
|
|
30
|
+
Object.setPrototypeOf(obj, prototype);
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
33
|
+
function parse(original) {
|
|
34
|
+
let stringValue = original;
|
|
35
|
+
let start = 0;
|
|
36
|
+
let sign = 1;
|
|
37
|
+
let n;
|
|
38
|
+
let exp;
|
|
39
|
+
let decimal;
|
|
40
|
+
if (stringValue[0] === "-") {
|
|
41
|
+
start = 1;
|
|
42
|
+
sign = -1;
|
|
43
|
+
}
|
|
44
|
+
const second = stringValue[start + 1]?.toLowerCase();
|
|
45
|
+
if (stringValue[start] === "0" && (second === "b" || second === "x" || second === "o")) {
|
|
46
|
+
try {
|
|
47
|
+
n = BigInt(stringValue.slice(start));
|
|
48
|
+
exp = n.toString().length;
|
|
49
|
+
decimal = 0;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
throw new InvalidNumericError(`Invalid numeric value: ${original}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Skip leading 0.
|
|
57
|
+
while (stringValue[start] === "0") {
|
|
58
|
+
start++;
|
|
59
|
+
}
|
|
60
|
+
const decimalPointIndex = stringValue.indexOf(".");
|
|
61
|
+
const adjustedPointIndex = decimalPointIndex - start;
|
|
62
|
+
// Decimal point?
|
|
63
|
+
if (decimalPointIndex !== -1) {
|
|
64
|
+
exp = adjustedPointIndex;
|
|
65
|
+
stringValue = stringValue.replace(".", "");
|
|
66
|
+
}
|
|
67
|
+
let i;
|
|
68
|
+
if ((i = stringValue.search(/e/i)) > 0) {
|
|
69
|
+
// Determine exponent.
|
|
70
|
+
if (exp === undefined) {
|
|
71
|
+
exp = i - start;
|
|
72
|
+
}
|
|
73
|
+
exp += Number(stringValue.slice(i + 1));
|
|
74
|
+
stringValue = stringValue.slice(start, i);
|
|
75
|
+
}
|
|
76
|
+
else if (exp === undefined) {
|
|
77
|
+
// Integer.
|
|
78
|
+
exp = stringValue.length - start;
|
|
79
|
+
stringValue = stringValue.slice(start);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
stringValue = stringValue.slice(start);
|
|
83
|
+
}
|
|
84
|
+
let end = stringValue.length;
|
|
85
|
+
while (stringValue[end - 1] === "0") {
|
|
86
|
+
if (end < adjustedPointIndex) {
|
|
87
|
+
// if we are looking at a zero before the decimal point, we need to decrease the exponent
|
|
88
|
+
exp++;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
end--;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
stringValue = stringValue.slice(0, end);
|
|
96
|
+
stringValue = stringValue + "0".repeat(Math.max(exp - stringValue.length, 0)); // add remaining zeros for cases like 3e30
|
|
97
|
+
n = BigInt(stringValue);
|
|
98
|
+
decimal = n === 0n ? 0 : Math.max(stringValue.length - exp, 0);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
throw new InvalidNumericError(`Invalid numeric value: ${original}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return { n, e: exp, s: sign, d: decimal };
|
|
105
|
+
}
|
|
106
|
+
function stringify(value) {
|
|
107
|
+
const n = value.n.toString();
|
|
108
|
+
const sign = value.s === -1 ? "-" : "";
|
|
109
|
+
const decimal = value.e < n.length ? "." + n.slice(value.e) : "";
|
|
110
|
+
return sign + n.slice(0, value.e) + decimal;
|
|
111
|
+
}
|
|
112
|
+
const equals = (a, b) => a.n === b.n && a.e === b.e;
|
|
113
|
+
const compare = (a, b) => {
|
|
114
|
+
if (a.s < b.s) {
|
|
115
|
+
return -1;
|
|
116
|
+
}
|
|
117
|
+
else if (a.s > b.s) {
|
|
118
|
+
return 1;
|
|
119
|
+
}
|
|
120
|
+
const neg = a.s;
|
|
121
|
+
if (a.e < b.e) {
|
|
122
|
+
return (-1 * neg);
|
|
123
|
+
}
|
|
124
|
+
else if (a.e > b.e) {
|
|
125
|
+
return (1 * neg);
|
|
126
|
+
}
|
|
127
|
+
let aN = a.n;
|
|
128
|
+
let bN = b.n;
|
|
129
|
+
if (a.d < b.d) {
|
|
130
|
+
aN *= 10n ** BigInt(b.d - a.d);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
bN *= 10n ** BigInt(a.d - b.d);
|
|
134
|
+
}
|
|
135
|
+
if (aN < bN)
|
|
136
|
+
return (-1 * neg);
|
|
137
|
+
if (aN > bN)
|
|
138
|
+
return (1 * neg);
|
|
139
|
+
return 0;
|
|
140
|
+
};
|
|
141
|
+
const NumericPrototype = {
|
|
142
|
+
toString: function () {
|
|
143
|
+
return stringify(this[InternalDataSym]);
|
|
144
|
+
},
|
|
145
|
+
asNumber: function () {
|
|
146
|
+
const num = Number(stringify(this[InternalDataSym]));
|
|
147
|
+
return equals(this[InternalDataSym], Numeric(num.toString())[InternalDataSym]) ? num : null;
|
|
148
|
+
},
|
|
149
|
+
asBigInt: function () {
|
|
150
|
+
return this.isInteger ? this[InternalDataSym].n : null;
|
|
151
|
+
},
|
|
152
|
+
equals: function (other) {
|
|
153
|
+
return equals(this[InternalDataSym], other[InternalDataSym]);
|
|
154
|
+
},
|
|
155
|
+
lt: function (other) {
|
|
156
|
+
return compare(this[InternalDataSym], other[InternalDataSym]) === -1;
|
|
157
|
+
},
|
|
158
|
+
lte: function (other) {
|
|
159
|
+
return compare(this[InternalDataSym], other[InternalDataSym]) <= 0;
|
|
160
|
+
},
|
|
161
|
+
gt: function (other) {
|
|
162
|
+
return compare(this[InternalDataSym], other[InternalDataSym]) === 1;
|
|
163
|
+
},
|
|
164
|
+
gte: function (other) {
|
|
165
|
+
return compare(this[InternalDataSym], other[InternalDataSym]) >= 0;
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
NumericPrototype.toString = function () {
|
|
169
|
+
return stringify(this[InternalDataSym]);
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=numeric.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../../src/core/numeric.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/core/parser.ts"],"names":[],"mappings":"AAeA,OAAO,EAUL,UAAU,EAgBV,UAAU,EAIV,iBAAiB,EAEjB,cAAc,EACd,mBAAmB,EAanB,IAAI,EAKJ,YAAY,EAyBZ,UAAU,EAcV,iBAAiB,EACjB,kBAAkB,EAMnB,MAAM,YAAY,CAAC;AA2KpB,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,kBAAkB,CAG/F;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,CAAC,iBAAiB,EAAE,SAAS,UAAU,EAAE,CAAC,CAI5C;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/core/parser.ts"],"names":[],"mappings":"AAeA,OAAO,EAUL,UAAU,EAgBV,UAAU,EAIV,iBAAiB,EAEjB,cAAc,EACd,mBAAmB,EAanB,IAAI,EAKJ,YAAY,EAyBZ,UAAU,EAcV,iBAAiB,EACjB,kBAAkB,EAMnB,MAAM,YAAY,CAAC;AA2KpB,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,kBAAkB,CAG/F;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,CAAC,iBAAiB,EAAE,SAAS,UAAU,EAAE,CAAC,CAI5C;AA0yFD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC;AAE7C,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,GACf,IAAI,IAAI,iBAAiB,GAAG;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,EAAE,CAAA;CAAE,CAMvE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAsP/E;AAoBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,GAC/B,IAAI,GAAG,SAAS,CAAC;AACpB,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,IAAI,EAC9C,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,GAChC,CAAC,GAAG,SAAS,CAAC;AAuCjB,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,iBAOvC;AAyBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,mBAAmB,CAEzE;AAaD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAO1F;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,iBAAiB,CA+B1E"}
|
package/dist/src/core/parser.js
CHANGED
|
@@ -216,7 +216,7 @@ function createParser(code, options = {}) {
|
|
|
216
216
|
item = parseScalarStatement(pos, decorators);
|
|
217
217
|
break;
|
|
218
218
|
case Token.NamespaceKeyword:
|
|
219
|
-
item = parseNamespaceStatement(pos, decorators, docs);
|
|
219
|
+
item = parseNamespaceStatement(pos, decorators, docs, directives);
|
|
220
220
|
break;
|
|
221
221
|
case Token.InterfaceKeyword:
|
|
222
222
|
item = parseInterfaceStatement(pos, decorators);
|
|
@@ -256,8 +256,8 @@ function createParser(code, options = {}) {
|
|
|
256
256
|
item = parseInvalidStatement(pos, decorators);
|
|
257
257
|
break;
|
|
258
258
|
}
|
|
259
|
-
mutate(item).directives = directives;
|
|
260
259
|
if (tok !== Token.NamespaceKeyword) {
|
|
260
|
+
mutate(item).directives = directives;
|
|
261
261
|
mutate(item).docs = docs;
|
|
262
262
|
}
|
|
263
263
|
if (isBlocklessNamespace(item)) {
|
|
@@ -307,7 +307,7 @@ function createParser(code, options = {}) {
|
|
|
307
307
|
item = parseScalarStatement(pos, decorators);
|
|
308
308
|
break;
|
|
309
309
|
case Token.NamespaceKeyword:
|
|
310
|
-
const ns = parseNamespaceStatement(pos, decorators, docs);
|
|
310
|
+
const ns = parseNamespaceStatement(pos, decorators, docs, directives);
|
|
311
311
|
if (!Array.isArray(ns.statements)) {
|
|
312
312
|
error({ code: "blockless-namespace-first", messageId: "topLevel", target: ns });
|
|
313
313
|
}
|
|
@@ -375,7 +375,7 @@ function createParser(code, options = {}) {
|
|
|
375
375
|
}
|
|
376
376
|
return directives;
|
|
377
377
|
}
|
|
378
|
-
function parseNamespaceStatement(pos, decorators, docs) {
|
|
378
|
+
function parseNamespaceStatement(pos, decorators, docs, directives) {
|
|
379
379
|
parseExpected(Token.NamespaceKeyword);
|
|
380
380
|
let currentName = parseIdentifierOrMemberExpression();
|
|
381
381
|
const nsSegments = [];
|
|
@@ -397,12 +397,14 @@ function createParser(code, options = {}) {
|
|
|
397
397
|
id: nsSegments[0],
|
|
398
398
|
locals: undefined,
|
|
399
399
|
statements,
|
|
400
|
+
directives: directives,
|
|
400
401
|
...finishNode(pos),
|
|
401
402
|
};
|
|
402
403
|
for (let i = 1; i < nsSegments.length; i++) {
|
|
403
404
|
outerNs = {
|
|
404
405
|
kind: SyntaxKind.NamespaceStatement,
|
|
405
406
|
decorators: [],
|
|
407
|
+
directives: [],
|
|
406
408
|
id: nsSegments[i],
|
|
407
409
|
statements: outerNs,
|
|
408
410
|
locals: undefined,
|
|
@@ -1249,15 +1251,14 @@ function createParser(code, options = {}) {
|
|
|
1249
1251
|
};
|
|
1250
1252
|
}
|
|
1251
1253
|
function parseIdentifier(options) {
|
|
1252
|
-
|
|
1253
|
-
if ((options === null || options === void 0 ? void 0 : options.recoverFromKeyword) !== false && isKeyword(token())) {
|
|
1254
|
+
if (options?.recoverFromKeyword !== false && isKeyword(token())) {
|
|
1254
1255
|
error({ code: "reserved-identifier" });
|
|
1255
1256
|
}
|
|
1256
1257
|
else if (token() !== Token.Identifier &&
|
|
1257
|
-
(!
|
|
1258
|
+
(!options?.allowStringLiteral || token() !== Token.StringLiteral)) {
|
|
1258
1259
|
// Error recovery: when we fail to parse an identifier or expression,
|
|
1259
1260
|
// we insert a synthesized identifier with a unique name.
|
|
1260
|
-
error({ code: "token-expected", messageId:
|
|
1261
|
+
error({ code: "token-expected", messageId: options?.message ?? "identifier" });
|
|
1261
1262
|
return createMissingIdentifier();
|
|
1262
1263
|
}
|
|
1263
1264
|
const pos = tokenPos();
|
|
@@ -2403,12 +2404,11 @@ function createParser(code, options = {}) {
|
|
|
2403
2404
|
return { kind: SyntaxKind.InvalidStatement, decorators, ...finishNode(pos) };
|
|
2404
2405
|
}
|
|
2405
2406
|
function error(report) {
|
|
2406
|
-
var _a, _b, _c, _d, _e, _f;
|
|
2407
2407
|
parseErrorInNextFinishedNode = true;
|
|
2408
2408
|
const location = {
|
|
2409
2409
|
file: scanner.file,
|
|
2410
|
-
pos:
|
|
2411
|
-
end:
|
|
2410
|
+
pos: report.target?.pos ?? tokenPos(),
|
|
2411
|
+
end: report.target?.end ?? tokenEnd(),
|
|
2412
2412
|
};
|
|
2413
2413
|
if (!report.printable) {
|
|
2414
2414
|
treePrintable = false;
|
|
@@ -2417,7 +2417,7 @@ function createParser(code, options = {}) {
|
|
|
2417
2417
|
// position. The code path taken by error recovery after logging an error
|
|
2418
2418
|
// can otherwise produce redundant and less decipherable errors, which this
|
|
2419
2419
|
// suppresses.
|
|
2420
|
-
const realPos =
|
|
2420
|
+
const realPos = report.target?.realPos ?? location.pos;
|
|
2421
2421
|
if (realPositionOfLastError === realPos) {
|
|
2422
2422
|
return;
|
|
2423
2423
|
}
|
|
@@ -2430,11 +2430,10 @@ function createParser(code, options = {}) {
|
|
|
2430
2430
|
parseDiagnostics.push(diagnostic);
|
|
2431
2431
|
}
|
|
2432
2432
|
function warning(report) {
|
|
2433
|
-
var _a, _b, _c, _d;
|
|
2434
2433
|
const location = {
|
|
2435
2434
|
file: scanner.file,
|
|
2436
|
-
pos:
|
|
2437
|
-
end:
|
|
2435
|
+
pos: report.target?.pos ?? tokenPos(),
|
|
2436
|
+
end: report.target?.end ?? tokenEnd(),
|
|
2438
2437
|
};
|
|
2439
2438
|
const diagnostic = createDiagnostic({
|
|
2440
2439
|
...report,
|