@typespec/compiler 0.48.0-dev.12 → 0.48.0-dev.14
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/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +73 -22
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/messages.d.ts +20 -2
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +6 -0
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +2 -1
- package/dist/src/core/parser.js.map +1 -1
- package/package.json +1 -1
package/dist/manifest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/checker.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _PendingResolutions_data;
|
|
1
7
|
import { $docFromComment, getIndexer } from "../lib/decorators.js";
|
|
2
8
|
import { createSymbol, createSymbolTable } from "./binder.js";
|
|
3
9
|
import { getDeprecationDetails, markDeprecated } from "./deprecation.js";
|
|
@@ -63,7 +69,7 @@ export function createChecker(program) {
|
|
|
63
69
|
* Set keeping track of node pending type resolution.
|
|
64
70
|
* Key is the SymId of a node. It can be retrieved with getNodeSymId(node)
|
|
65
71
|
*/
|
|
66
|
-
const pendingResolutions = new
|
|
72
|
+
const pendingResolutions = new PendingResolutions();
|
|
67
73
|
for (const file of program.jsSourceFiles.values()) {
|
|
68
74
|
mergeSourceFile(file);
|
|
69
75
|
}
|
|
@@ -1175,14 +1181,14 @@ export function createChecker(program) {
|
|
|
1175
1181
|
// Ensure that we don't end up with a circular reference to the same operation
|
|
1176
1182
|
const opSymId = getNodeSymId(operation);
|
|
1177
1183
|
if (opSymId) {
|
|
1178
|
-
pendingResolutions.
|
|
1184
|
+
pendingResolutions.start(opSymId, ResolutionKind.BaseType);
|
|
1179
1185
|
}
|
|
1180
1186
|
const target = resolveTypeReferenceSym(opReference, mapper);
|
|
1181
1187
|
if (target === undefined) {
|
|
1182
1188
|
return undefined;
|
|
1183
1189
|
}
|
|
1184
1190
|
// Did we encounter a circular operation reference?
|
|
1185
|
-
if (pendingResolutions.has(getNodeSymId(target.declarations[0]))) {
|
|
1191
|
+
if (pendingResolutions.has(getNodeSymId(target.declarations[0]), ResolutionKind.BaseType)) {
|
|
1186
1192
|
if (mapper === undefined) {
|
|
1187
1193
|
reportCheckerDiagnostic(createDiagnostic({
|
|
1188
1194
|
code: "circular-op-signature",
|
|
@@ -1195,7 +1201,7 @@ export function createChecker(program) {
|
|
|
1195
1201
|
// Resolve the base operation type
|
|
1196
1202
|
const baseOperation = checkTypeReferenceSymbol(target, opReference, mapper);
|
|
1197
1203
|
if (opSymId) {
|
|
1198
|
-
pendingResolutions.
|
|
1204
|
+
pendingResolutions.finish(opSymId, ResolutionKind.BaseType);
|
|
1199
1205
|
}
|
|
1200
1206
|
if (isErrorType(baseOperation)) {
|
|
1201
1207
|
return undefined;
|
|
@@ -2153,12 +2159,12 @@ export function createChecker(program) {
|
|
|
2153
2159
|
return undefined;
|
|
2154
2160
|
}
|
|
2155
2161
|
const modelSymId = getNodeSymId(model);
|
|
2156
|
-
pendingResolutions.
|
|
2162
|
+
pendingResolutions.start(modelSymId, ResolutionKind.BaseType);
|
|
2157
2163
|
const target = resolveTypeReferenceSym(heritageRef, mapper);
|
|
2158
2164
|
if (target === undefined) {
|
|
2159
2165
|
return undefined;
|
|
2160
2166
|
}
|
|
2161
|
-
if (pendingResolutions.has(getNodeSymId(target.declarations[0]))) {
|
|
2167
|
+
if (pendingResolutions.has(getNodeSymId(target.declarations[0]), ResolutionKind.BaseType)) {
|
|
2162
2168
|
if (mapper === undefined) {
|
|
2163
2169
|
reportCheckerDiagnostic(createDiagnostic({
|
|
2164
2170
|
code: "circular-base-type",
|
|
@@ -2169,7 +2175,7 @@ export function createChecker(program) {
|
|
|
2169
2175
|
return undefined;
|
|
2170
2176
|
}
|
|
2171
2177
|
const heritageType = checkTypeReferenceSymbol(target, heritageRef, mapper);
|
|
2172
|
-
pendingResolutions.
|
|
2178
|
+
pendingResolutions.finish(modelSymId, ResolutionKind.BaseType);
|
|
2173
2179
|
if (isErrorType(heritageType)) {
|
|
2174
2180
|
compilerAssert(program.hasError(), "Should already have reported an error.", heritageRef);
|
|
2175
2181
|
return undefined;
|
|
@@ -2191,7 +2197,7 @@ export function createChecker(program) {
|
|
|
2191
2197
|
if (!isExpr)
|
|
2192
2198
|
return undefined;
|
|
2193
2199
|
const modelSymId = getNodeSymId(model);
|
|
2194
|
-
pendingResolutions.
|
|
2200
|
+
pendingResolutions.start(modelSymId, ResolutionKind.BaseType);
|
|
2195
2201
|
let isType;
|
|
2196
2202
|
if (isExpr.kind === SyntaxKind.ModelExpression) {
|
|
2197
2203
|
reportCheckerDiagnostic(createDiagnostic({
|
|
@@ -2209,7 +2215,7 @@ export function createChecker(program) {
|
|
|
2209
2215
|
if (target === undefined) {
|
|
2210
2216
|
return undefined;
|
|
2211
2217
|
}
|
|
2212
|
-
if (pendingResolutions.has(getNodeSymId(target.declarations[0]))) {
|
|
2218
|
+
if (pendingResolutions.has(getNodeSymId(target.declarations[0]), ResolutionKind.BaseType)) {
|
|
2213
2219
|
if (mapper === undefined) {
|
|
2214
2220
|
reportCheckerDiagnostic(createDiagnostic({
|
|
2215
2221
|
code: "circular-base-type",
|
|
@@ -2225,7 +2231,7 @@ export function createChecker(program) {
|
|
|
2225
2231
|
reportCheckerDiagnostic(createDiagnostic({ code: "is-model", target: isExpr }));
|
|
2226
2232
|
return undefined;
|
|
2227
2233
|
}
|
|
2228
|
-
pendingResolutions.
|
|
2234
|
+
pendingResolutions.finish(modelSymId, ResolutionKind.BaseType);
|
|
2229
2235
|
if (isType.kind !== "Model") {
|
|
2230
2236
|
reportCheckerDiagnostic(createDiagnostic({ code: "is-model", target: isExpr }));
|
|
2231
2237
|
return;
|
|
@@ -2279,24 +2285,35 @@ export function createChecker(program) {
|
|
|
2279
2285
|
}
|
|
2280
2286
|
function checkModelProperty(prop, mapper) {
|
|
2281
2287
|
var _a, _b, _c;
|
|
2288
|
+
const symId = getSymbolId(getSymbolForMember(prop));
|
|
2282
2289
|
const links = getSymbolLinksForMember(prop);
|
|
2283
2290
|
if (links && links.declaredType && mapper === undefined) {
|
|
2284
2291
|
return links.declaredType;
|
|
2285
2292
|
}
|
|
2286
2293
|
const name = prop.id.sv;
|
|
2287
|
-
const valueType = getTypeForNode(prop.value, mapper);
|
|
2288
|
-
const defaultValue = prop.default && checkDefault(prop.default, valueType);
|
|
2289
2294
|
const type = createType({
|
|
2290
2295
|
kind: "ModelProperty",
|
|
2291
2296
|
name,
|
|
2292
2297
|
node: prop,
|
|
2293
2298
|
optional: prop.optional,
|
|
2294
|
-
type:
|
|
2299
|
+
type: undefined,
|
|
2295
2300
|
decorators: [],
|
|
2296
|
-
default: defaultValue,
|
|
2297
2301
|
});
|
|
2298
|
-
if (
|
|
2299
|
-
|
|
2302
|
+
if (pendingResolutions.has(symId, ResolutionKind.Type) && mapper === undefined) {
|
|
2303
|
+
reportCheckerDiagnostic(createDiagnostic({
|
|
2304
|
+
code: "circular-prop",
|
|
2305
|
+
format: { propName: name },
|
|
2306
|
+
target: prop,
|
|
2307
|
+
}));
|
|
2308
|
+
type.type = errorType;
|
|
2309
|
+
}
|
|
2310
|
+
else {
|
|
2311
|
+
pendingResolutions.start(symId, ResolutionKind.Type);
|
|
2312
|
+
type.type = getTypeForNode(prop.value, mapper);
|
|
2313
|
+
type.default = prop.default && checkDefault(prop.default, type.type);
|
|
2314
|
+
if (links) {
|
|
2315
|
+
linkType(links, type, mapper);
|
|
2316
|
+
}
|
|
2300
2317
|
}
|
|
2301
2318
|
type.decorators = checkDecorators(type, prop, mapper);
|
|
2302
2319
|
const parentTemplate = getParentTemplateNode(prop);
|
|
@@ -2314,6 +2331,7 @@ export function createChecker(program) {
|
|
|
2314
2331
|
}
|
|
2315
2332
|
finishType(type);
|
|
2316
2333
|
}
|
|
2334
|
+
pendingResolutions.finish(symId, ResolutionKind.Type);
|
|
2317
2335
|
return type;
|
|
2318
2336
|
}
|
|
2319
2337
|
function isValueType(type) {
|
|
@@ -2569,12 +2587,12 @@ export function createChecker(program) {
|
|
|
2569
2587
|
}
|
|
2570
2588
|
function checkScalarExtends(scalar, extendsRef, mapper) {
|
|
2571
2589
|
const symId = getNodeSymId(scalar);
|
|
2572
|
-
pendingResolutions.
|
|
2590
|
+
pendingResolutions.start(symId, ResolutionKind.BaseType);
|
|
2573
2591
|
const target = resolveTypeReferenceSym(extendsRef, mapper);
|
|
2574
2592
|
if (target === undefined) {
|
|
2575
2593
|
return undefined;
|
|
2576
2594
|
}
|
|
2577
|
-
if (pendingResolutions.has(getNodeSymId(target.declarations[0]))) {
|
|
2595
|
+
if (pendingResolutions.has(getNodeSymId(target.declarations[0]), ResolutionKind.BaseType)) {
|
|
2578
2596
|
if (mapper === undefined) {
|
|
2579
2597
|
reportCheckerDiagnostic(createDiagnostic({
|
|
2580
2598
|
code: "circular-base-type",
|
|
@@ -2585,7 +2603,7 @@ export function createChecker(program) {
|
|
|
2585
2603
|
return undefined;
|
|
2586
2604
|
}
|
|
2587
2605
|
const extendsType = checkTypeReferenceSymbol(target, extendsRef, mapper);
|
|
2588
|
-
pendingResolutions.
|
|
2606
|
+
pendingResolutions.finish(symId, ResolutionKind.BaseType);
|
|
2589
2607
|
if (isErrorType(extendsType)) {
|
|
2590
2608
|
compilerAssert(program.hasError(), "Should already have reported an error.", extendsRef);
|
|
2591
2609
|
return undefined;
|
|
@@ -2603,7 +2621,7 @@ export function createChecker(program) {
|
|
|
2603
2621
|
}
|
|
2604
2622
|
checkTemplateDeclaration(node, mapper);
|
|
2605
2623
|
const aliasSymId = getNodeSymId(node);
|
|
2606
|
-
if (pendingResolutions.has(aliasSymId)) {
|
|
2624
|
+
if (pendingResolutions.has(aliasSymId, ResolutionKind.Type)) {
|
|
2607
2625
|
if (mapper === undefined) {
|
|
2608
2626
|
reportCheckerDiagnostic(createDiagnostic({
|
|
2609
2627
|
code: "circular-alias-type",
|
|
@@ -2614,10 +2632,10 @@ export function createChecker(program) {
|
|
|
2614
2632
|
links.declaredType = errorType;
|
|
2615
2633
|
return errorType;
|
|
2616
2634
|
}
|
|
2617
|
-
pendingResolutions.
|
|
2635
|
+
pendingResolutions.start(aliasSymId, ResolutionKind.Type);
|
|
2618
2636
|
const type = getTypeForNode(node.value, mapper);
|
|
2619
2637
|
linkType(links, type, mapper);
|
|
2620
|
-
pendingResolutions.
|
|
2638
|
+
pendingResolutions.finish(aliasSymId, ResolutionKind.Type);
|
|
2621
2639
|
return type;
|
|
2622
2640
|
}
|
|
2623
2641
|
function checkEnum(node, mapper) {
|
|
@@ -4536,6 +4554,39 @@ const ReflectionNameToKind = {
|
|
|
4536
4554
|
UnionVariant: "UnionVariant",
|
|
4537
4555
|
};
|
|
4538
4556
|
const _assertReflectionNameToKind = ReflectionNameToKind;
|
|
4557
|
+
var ResolutionKind;
|
|
4558
|
+
(function (ResolutionKind) {
|
|
4559
|
+
ResolutionKind[ResolutionKind["Type"] = 0] = "Type";
|
|
4560
|
+
ResolutionKind[ResolutionKind["BaseType"] = 1] = "BaseType";
|
|
4561
|
+
})(ResolutionKind || (ResolutionKind = {}));
|
|
4562
|
+
class PendingResolutions {
|
|
4563
|
+
constructor() {
|
|
4564
|
+
_PendingResolutions_data.set(this, new Map());
|
|
4565
|
+
}
|
|
4566
|
+
start(symId, kind) {
|
|
4567
|
+
let existing = __classPrivateFieldGet(this, _PendingResolutions_data, "f").get(symId);
|
|
4568
|
+
if (existing === undefined) {
|
|
4569
|
+
existing = new Set();
|
|
4570
|
+
__classPrivateFieldGet(this, _PendingResolutions_data, "f").set(symId, existing);
|
|
4571
|
+
}
|
|
4572
|
+
existing.add(kind);
|
|
4573
|
+
}
|
|
4574
|
+
has(symId, kind) {
|
|
4575
|
+
var _a, _b;
|
|
4576
|
+
return (_b = (_a = __classPrivateFieldGet(this, _PendingResolutions_data, "f").get(symId)) === null || _a === void 0 ? void 0 : _a.has(kind)) !== null && _b !== void 0 ? _b : false;
|
|
4577
|
+
}
|
|
4578
|
+
finish(symId, kind) {
|
|
4579
|
+
const existing = __classPrivateFieldGet(this, _PendingResolutions_data, "f").get(symId);
|
|
4580
|
+
if (existing === undefined) {
|
|
4581
|
+
return;
|
|
4582
|
+
}
|
|
4583
|
+
existing === null || existing === void 0 ? void 0 : existing.delete(kind);
|
|
4584
|
+
if (existing.size === 0) {
|
|
4585
|
+
__classPrivateFieldGet(this, _PendingResolutions_data, "f").delete(symId);
|
|
4586
|
+
}
|
|
4587
|
+
}
|
|
4588
|
+
}
|
|
4589
|
+
_PendingResolutions_data = new WeakMap();
|
|
4539
4590
|
var Related;
|
|
4540
4591
|
(function (Related) {
|
|
4541
4592
|
Related[Related["false"] = 0] = "false";
|