@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.
Files changed (176) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/config/config-interpolation.js +4 -7
  3. package/dist/src/config/config-interpolation.js.map +1 -1
  4. package/dist/src/config/config-loader.js +5 -7
  5. package/dist/src/config/config-loader.js.map +1 -1
  6. package/dist/src/config/config-to-options.js +8 -10
  7. package/dist/src/config/config-to-options.js.map +1 -1
  8. package/dist/src/core/binder.js +8 -8
  9. package/dist/src/core/binder.js.map +1 -1
  10. package/dist/src/core/checker.d.ts.map +1 -1
  11. package/dist/src/core/checker.js +192 -214
  12. package/dist/src/core/checker.js.map +1 -1
  13. package/dist/src/core/cli/actions/compile/args.js +3 -6
  14. package/dist/src/core/cli/actions/compile/args.js.map +1 -1
  15. package/dist/src/core/cli/actions/compile/compile.js +2 -2
  16. package/dist/src/core/cli/actions/compile/compile.js.map +1 -1
  17. package/dist/src/core/cli/actions/compile/watch.js +1 -2
  18. package/dist/src/core/cli/actions/compile/watch.js.map +1 -1
  19. package/dist/src/core/cli/actions/info.js +1 -2
  20. package/dist/src/core/cli/actions/info.js.map +1 -1
  21. package/dist/src/core/cli/actions/vs.js +1 -2
  22. package/dist/src/core/cli/actions/vs.js.map +1 -1
  23. package/dist/src/core/cli/install-vsix.js +1 -2
  24. package/dist/src/core/cli/install-vsix.js.map +1 -1
  25. package/dist/src/core/cli/utils.js +7 -9
  26. package/dist/src/core/cli/utils.js.map +1 -1
  27. package/dist/src/core/decorator-utils.js +6 -12
  28. package/dist/src/core/decorator-utils.js.map +1 -1
  29. package/dist/src/core/deprecation.js +2 -3
  30. package/dist/src/core/deprecation.js.map +1 -1
  31. package/dist/src/core/diagnostic-creator.js +1 -2
  32. package/dist/src/core/diagnostic-creator.js.map +1 -1
  33. package/dist/src/core/entrypoint-resolution.js +1 -1
  34. package/dist/src/core/entrypoint-resolution.js.map +1 -1
  35. package/dist/src/core/external-error.js +4 -5
  36. package/dist/src/core/external-error.js.map +1 -1
  37. package/dist/src/core/fetch.d.ts.map +1 -1
  38. package/dist/src/core/fetch.js +6 -6
  39. package/dist/src/core/fetch.js.map +1 -1
  40. package/dist/src/core/formatter-fs.js +2 -2
  41. package/dist/src/core/formatter-fs.js.map +1 -1
  42. package/dist/src/core/helpers/discriminator-utils.js +2 -4
  43. package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
  44. package/dist/src/core/helpers/operation-utils.js +1 -2
  45. package/dist/src/core/helpers/operation-utils.js.map +1 -1
  46. package/dist/src/core/helpers/type-name-utils.js +18 -12
  47. package/dist/src/core/helpers/type-name-utils.js.map +1 -1
  48. package/dist/src/core/helpers/usage-resolver.js +2 -4
  49. package/dist/src/core/helpers/usage-resolver.js.map +1 -1
  50. package/dist/src/core/install.js +3 -3
  51. package/dist/src/core/install.js.map +1 -1
  52. package/dist/src/core/library.js +2 -3
  53. package/dist/src/core/library.js.map +1 -1
  54. package/dist/src/core/linter.js +4 -7
  55. package/dist/src/core/linter.js.map +1 -1
  56. package/dist/src/core/logger/console-sink.js +2 -3
  57. package/dist/src/core/logger/console-sink.js.map +1 -1
  58. package/dist/src/core/logger/tracer.js +1 -1
  59. package/dist/src/core/logger/tracer.js.map +1 -1
  60. package/dist/src/core/module-resolver.js +3 -4
  61. package/dist/src/core/module-resolver.js.map +1 -1
  62. package/dist/src/core/node-host.js +1 -1
  63. package/dist/src/core/node-host.js.map +1 -1
  64. package/dist/src/core/numeric.d.ts +26 -0
  65. package/dist/src/core/numeric.d.ts.map +1 -0
  66. package/dist/src/core/numeric.js +171 -0
  67. package/dist/src/core/numeric.js.map +1 -0
  68. package/dist/src/core/parser.d.ts.map +1 -1
  69. package/dist/src/core/parser.js +14 -15
  70. package/dist/src/core/parser.js.map +1 -1
  71. package/dist/src/core/program.d.ts.map +1 -1
  72. package/dist/src/core/program.js +36 -40
  73. package/dist/src/core/program.js.map +1 -1
  74. package/dist/src/core/projection-members.js +2 -2
  75. package/dist/src/core/projection-members.js.map +1 -1
  76. package/dist/src/core/projector.js +3 -8
  77. package/dist/src/core/projector.js.map +1 -1
  78. package/dist/src/core/scanner.js +1 -1
  79. package/dist/src/core/scanner.js.map +1 -1
  80. package/dist/src/core/schema-validator.js +1 -2
  81. package/dist/src/core/schema-validator.js.map +1 -1
  82. package/dist/src/core/semantic-walker.js +2 -4
  83. package/dist/src/core/semantic-walker.js.map +1 -1
  84. package/dist/src/core/source-file.js +1 -1
  85. package/dist/src/core/source-file.js.map +1 -1
  86. package/dist/src/core/type-utils.js +2 -2
  87. package/dist/src/core/type-utils.js.map +1 -1
  88. package/dist/src/core/types.d.ts +15 -0
  89. package/dist/src/core/types.d.ts.map +1 -1
  90. package/dist/src/core/types.js.map +1 -1
  91. package/dist/src/emitter-framework/asset-emitter.js +10 -14
  92. package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
  93. package/dist/src/emitter-framework/builders/array-builder.js +7 -17
  94. package/dist/src/emitter-framework/builders/array-builder.js.map +1 -1
  95. package/dist/src/emitter-framework/builders/object-builder.js +1 -0
  96. package/dist/src/emitter-framework/builders/object-builder.js.map +1 -1
  97. package/dist/src/emitter-framework/builders/string-builder.js +23 -31
  98. package/dist/src/emitter-framework/builders/string-builder.js.map +1 -1
  99. package/dist/src/emitter-framework/custom-key-map.js +6 -19
  100. package/dist/src/emitter-framework/custom-key-map.js.map +1 -1
  101. package/dist/src/emitter-framework/placeholder.js +3 -12
  102. package/dist/src/emitter-framework/placeholder.js.map +1 -1
  103. package/dist/src/emitter-framework/ref-scope.js +1 -2
  104. package/dist/src/emitter-framework/ref-scope.js.map +1 -1
  105. package/dist/src/emitter-framework/reference-cycle.js +11 -19
  106. package/dist/src/emitter-framework/reference-cycle.js.map +1 -1
  107. package/dist/src/emitter-framework/type-emitter.js +1 -0
  108. package/dist/src/emitter-framework/type-emitter.js.map +1 -1
  109. package/dist/src/emitter-framework/types.js +10 -8
  110. package/dist/src/emitter-framework/types.js.map +1 -1
  111. package/dist/src/formatter/parser.js +4 -3
  112. package/dist/src/formatter/parser.js.map +1 -1
  113. package/dist/src/formatter/print/comment-handler.js +3 -4
  114. package/dist/src/formatter/print/comment-handler.js.map +1 -1
  115. package/dist/src/formatter/print/printer.js +5 -8
  116. package/dist/src/formatter/print/printer.js.map +1 -1
  117. package/dist/src/init/init.js +2 -2
  118. package/dist/src/init/init.js.map +1 -1
  119. package/dist/src/init/scaffold.js +11 -17
  120. package/dist/src/init/scaffold.js.map +1 -1
  121. package/dist/src/lib/decorators.d.ts +1 -3
  122. package/dist/src/lib/decorators.d.ts.map +1 -1
  123. package/dist/src/lib/decorators.js +41 -45
  124. package/dist/src/lib/decorators.js.map +1 -1
  125. package/dist/src/lib/encoded-names.js +3 -5
  126. package/dist/src/lib/encoded-names.js.map +1 -1
  127. package/dist/src/lib/intrinsic-decorators.d.ts +6 -0
  128. package/dist/src/lib/intrinsic-decorators.d.ts.map +1 -0
  129. package/dist/src/lib/intrinsic-decorators.js +10 -0
  130. package/dist/src/lib/intrinsic-decorators.js.map +1 -0
  131. package/dist/src/lib/service.js +3 -5
  132. package/dist/src/lib/service.js.map +1 -1
  133. package/dist/src/server/compile-service.js +6 -7
  134. package/dist/src/server/compile-service.js.map +1 -1
  135. package/dist/src/server/completion.d.ts.map +1 -1
  136. package/dist/src/server/completion.js +15 -18
  137. package/dist/src/server/completion.js.map +1 -1
  138. package/dist/src/server/file-service.js +2 -4
  139. package/dist/src/server/file-service.js.map +1 -1
  140. package/dist/src/server/server.js +2 -4
  141. package/dist/src/server/server.js.map +1 -1
  142. package/dist/src/server/serverlib.d.ts.map +1 -1
  143. package/dist/src/server/serverlib.js +25 -34
  144. package/dist/src/server/serverlib.js.map +1 -1
  145. package/dist/src/server/symbol-structure.js +2 -4
  146. package/dist/src/server/symbol-structure.js.map +1 -1
  147. package/dist/src/server/type-details.js +5 -9
  148. package/dist/src/server/type-details.js.map +1 -1
  149. package/dist/src/server/type-signature.js +4 -6
  150. package/dist/src/server/type-signature.js.map +1 -1
  151. package/dist/src/server/update-manager.js +15 -28
  152. package/dist/src/server/update-manager.js.map +1 -1
  153. package/dist/src/testing/rule-tester.js +2 -3
  154. package/dist/src/testing/rule-tester.js.map +1 -1
  155. package/dist/src/testing/test-host.js +8 -8
  156. package/dist/src/testing/test-host.js.map +1 -1
  157. package/dist/src/testing/test-server-host.js +7 -11
  158. package/dist/src/testing/test-server-host.js.map +1 -1
  159. package/dist/src/testing/test-utils.js +6 -6
  160. package/dist/src/testing/test-utils.js.map +1 -1
  161. package/dist/src/testing/types.js +1 -0
  162. package/dist/src/testing/types.js.map +1 -1
  163. package/dist/src/utils/duplicate-tracker.js +4 -13
  164. package/dist/src/utils/duplicate-tracker.js.map +1 -1
  165. package/dist/src/utils/misc.js +53 -75
  166. package/dist/src/utils/misc.js.map +1 -1
  167. package/dist/src/yaml/diagnostics.js +4 -5
  168. package/dist/src/yaml/diagnostics.js.map +1 -1
  169. package/lib/{lib.tsp → intrinsics.tsp} +3 -75
  170. package/lib/{decorators.tsp → std/decorators.tsp} +1 -1
  171. package/lib/std/main.tsp +5 -0
  172. package/lib/std/types.tsp +76 -0
  173. package/package.json +10 -10
  174. package/lib/main.tsp +0 -4
  175. /package/lib/{projected-names.tsp → std/projected-names.tsp} +0 -0
  176. /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;AAwyFD,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"}
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"}
@@ -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
- var _a;
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
- (!(options === null || options === void 0 ? void 0 : options.allowStringLiteral) || token() !== Token.StringLiteral)) {
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: (_a = options === null || options === void 0 ? void 0 : options.message) !== null && _a !== void 0 ? _a : "identifier" });
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: (_b = (_a = report.target) === null || _a === void 0 ? void 0 : _a.pos) !== null && _b !== void 0 ? _b : tokenPos(),
2411
- end: (_d = (_c = report.target) === null || _c === void 0 ? void 0 : _c.end) !== null && _d !== void 0 ? _d : tokenEnd(),
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 = (_f = (_e = report.target) === null || _e === void 0 ? void 0 : _e.realPos) !== null && _f !== void 0 ? _f : location.pos;
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: (_b = (_a = report.target) === null || _a === void 0 ? void 0 : _a.pos) !== null && _b !== void 0 ? _b : tokenPos(),
2437
- end: (_d = (_c = report.target) === null || _c === void 0 ? void 0 : _c.end) !== null && _d !== void 0 ? _d : tokenEnd(),
2435
+ pos: report.target?.pos ?? tokenPos(),
2436
+ end: report.target?.end ?? tokenEnd(),
2438
2437
  };
2439
2438
  const diagnostic = createDiagnostic({
2440
2439
  ...report,