@typespec/compiler 1.13.0-dev.1 → 1.13.0-dev.11
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-loader.d.ts.map +1 -1
- package/dist/src/config/config-loader.js +39 -1
- package/dist/src/config/config-loader.js.map +1 -1
- package/dist/src/config/config-schema.d.ts.map +1 -1
- package/dist/src/config/config-schema.js +14 -0
- package/dist/src/config/config-schema.js.map +1 -1
- package/dist/src/config/config-to-options.d.ts.map +1 -1
- package/dist/src/config/config-to-options.js +36 -0
- package/dist/src/config/config-to-options.js.map +1 -1
- package/dist/src/config/types.d.ts +28 -0
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +161 -23
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/cli/actions/info.d.ts +2 -0
- package/dist/src/core/cli/actions/info.d.ts.map +1 -1
- package/dist/src/core/cli/actions/info.js +25 -0
- package/dist/src/core/cli/actions/info.js.map +1 -1
- package/dist/src/core/cli/cli.js +2 -2
- package/dist/src/core/cli/cli.js.map +1 -1
- package/dist/src/core/entrypoint-resolution.d.ts.map +1 -1
- package/dist/src/core/entrypoint-resolution.js +7 -0
- package/dist/src/core/entrypoint-resolution.js.map +1 -1
- package/dist/src/core/features.d.ts +15 -0
- package/dist/src/core/features.d.ts.map +1 -0
- package/dist/src/core/features.js +21 -0
- package/dist/src/core/features.js.map +1 -0
- package/dist/src/core/messages.d.ts +94 -7
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +32 -1
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/modifiers.d.ts.map +1 -1
- package/dist/src/core/modifiers.js +0 -11
- package/dist/src/core/modifiers.js.map +1 -1
- package/dist/src/init/scaffold.js +16 -11
- package/dist/src/init/scaffold.js.map +1 -1
- package/dist/src/server/completion.js +14 -7
- package/dist/src/server/completion.js.map +1 -1
- package/dist/src/server/entrypoint-resolver.d.ts.map +1 -1
- package/dist/src/server/entrypoint-resolver.js +13 -0
- package/dist/src/server/entrypoint-resolver.js.map +1 -1
- package/dist/src/server/fatal-error.d.ts +5 -0
- package/dist/src/server/fatal-error.d.ts.map +1 -0
- package/dist/src/server/fatal-error.js +24 -0
- package/dist/src/server/fatal-error.js.map +1 -0
- package/dist/src/server/server.js +4 -6
- package/dist/src/server/server.js.map +1 -1
- package/dist/src/server/tspconfig/completion.d.ts.map +1 -1
- package/dist/src/server/tspconfig/completion.js +9 -0
- package/dist/src/server/tspconfig/completion.js.map +1 -1
- package/lib/prototypes.tsp +0 -1
- package/package.json +2 -2
- package/templates/__snapshots__/rest/tspconfig.yaml +10 -8
- package/templates/scaffolding.json +3 -0
package/dist/manifest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/config/config-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/config/config-loader.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAwB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAOhF,OAAO,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AAEvD,eAAO,MAAM,aAAa;;iBAEL,UAAU,EAAE;CAC/B,CAAC;AAEH;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,OAAc,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4C7B;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,eAAe,GAAE,OAAe,EAChC,MAAM,GAAE,OAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CAqBzB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAuBzB;AAkHD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,CAqBzF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { isCompilerFeatureName } from "../core/features.js";
|
|
1
2
|
import { createDiagnostic } from "../core/messages.js";
|
|
2
|
-
import { getDirectoryPath, isPathAbsolute, joinPaths, resolvePath } from "../core/path-utils.js";
|
|
3
|
+
import { getBaseFileName, getDirectoryPath, isPathAbsolute, joinPaths, resolvePath, } from "../core/path-utils.js";
|
|
3
4
|
import { createJSONSchemaValidator } from "../core/schema-validator.js";
|
|
4
5
|
import { createSourceFile } from "../core/source-file.js";
|
|
5
6
|
import { NoTarget } from "../core/types.js";
|
|
@@ -122,6 +123,40 @@ async function loadConfigFile(host, filename, loadData) {
|
|
|
122
123
|
// TypeSpecConfig's typing.
|
|
123
124
|
data = deepClone(defaultConfig);
|
|
124
125
|
}
|
|
126
|
+
// Validate project-specific constraints
|
|
127
|
+
if (data.kind === "project" && getBaseFileName(filename) !== TypeSpecConfigFilename) {
|
|
128
|
+
diagnostics.push(createDiagnostic({
|
|
129
|
+
code: "config-project-kind-filename",
|
|
130
|
+
format: { filename: getBaseFileName(filename) },
|
|
131
|
+
target: NoTarget,
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
if (data.entrypoint !== undefined && data.kind !== "project") {
|
|
135
|
+
diagnostics.push(createDiagnostic({
|
|
136
|
+
code: "config-project-only-option",
|
|
137
|
+
format: { option: "entrypoint" },
|
|
138
|
+
target: NoTarget,
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
if (data.features !== undefined && data.kind !== "project") {
|
|
142
|
+
diagnostics.push(createDiagnostic({
|
|
143
|
+
code: "config-project-only-option",
|
|
144
|
+
format: { option: "features" },
|
|
145
|
+
target: NoTarget,
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
const features = Array.isArray(data.features) ? data.features : undefined;
|
|
149
|
+
if (data.kind === "project" && features !== undefined) {
|
|
150
|
+
for (const feature of features) {
|
|
151
|
+
if (!isCompilerFeatureName(feature)) {
|
|
152
|
+
diagnostics.push(createDiagnostic({
|
|
153
|
+
code: "config-unknown-feature",
|
|
154
|
+
format: { feature },
|
|
155
|
+
target: getLocationInYamlScript(yamlScript, ["features", feature]),
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
125
160
|
const emit = data.emit;
|
|
126
161
|
const options = data.options;
|
|
127
162
|
return omitUndefined({
|
|
@@ -130,6 +165,9 @@ async function loadConfigFile(host, filename, loadData) {
|
|
|
130
165
|
filename,
|
|
131
166
|
diagnostics,
|
|
132
167
|
extends: data.extends,
|
|
168
|
+
kind: data.kind,
|
|
169
|
+
entrypoint: data.entrypoint,
|
|
170
|
+
features,
|
|
133
171
|
environmentVariables: data["environment-variables"],
|
|
134
172
|
parameters: data.parameters,
|
|
135
173
|
outputDir: data["output-dir"] ?? "{cwd}/tsp-output",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/config/config-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/config/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,cAAc,CAO/D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,cAAc,CAO/D,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,iBAAiB,CA8GtE,CAAC"}
|
|
@@ -14,6 +14,20 @@ export const TypeSpecConfigJsonSchema = {
|
|
|
14
14
|
type: "string",
|
|
15
15
|
nullable: true,
|
|
16
16
|
},
|
|
17
|
+
kind: {
|
|
18
|
+
type: "string",
|
|
19
|
+
enum: ["project"],
|
|
20
|
+
nullable: true,
|
|
21
|
+
},
|
|
22
|
+
entrypoint: {
|
|
23
|
+
type: "string",
|
|
24
|
+
nullable: true,
|
|
25
|
+
},
|
|
26
|
+
features: {
|
|
27
|
+
type: "array",
|
|
28
|
+
nullable: true,
|
|
29
|
+
items: { type: "string" },
|
|
30
|
+
},
|
|
17
31
|
"environment-variables": {
|
|
18
32
|
type: "object",
|
|
19
33
|
nullable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAmC;IAClE,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAI;IAC1B,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACV,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAS;KAChE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAsC;IACzE,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,uBAAuB,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE;gBACpB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5B;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE;gBACpB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5B;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,oBAAoB,EAAE,KAAK;aAC5B;SACF;QAED,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,eAAe,EAAE;YACf,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,IAAI;SACf;QACD,KAAK,EAAE;YACL,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClB;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;aACF;SACK,EAAE,2FAA2F;QACrG,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,oBAAoB;SAC3C;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,IAAI;oBACd,oBAAoB,EAAE;wBACpB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBACjD;iBACF;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,IAAI;oBACd,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzC;aACF;SACK,EAAE,oDAAoD;KAC/D;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-to-options.d.ts","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKpE,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC3E,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAEzC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,CAAC,eAAe,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"config-to-options.d.ts","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAY,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKpE,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC3E,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAEzC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,CAAC,eAAe,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CA6CnD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,gEAgC/F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,CA0BjF"}
|
|
@@ -18,6 +18,25 @@ export async function resolveCompilerOptions(host, options) {
|
|
|
18
18
|
(entrypointStat?.isDirectory() ? options.entrypoint : getDirectoryPath(options.entrypoint));
|
|
19
19
|
const config = await loadTypeSpecConfigForPath(host, configPath, options.configPath !== undefined, options.configPath === undefined);
|
|
20
20
|
config.diagnostics.forEach((x) => diagnostics.add(x));
|
|
21
|
+
// Validate that --config does not point to a project config
|
|
22
|
+
if (options.configPath !== undefined && config.kind === "project") {
|
|
23
|
+
diagnostics.add(createDiagnostic({
|
|
24
|
+
code: "config-project-not-as-cli-config",
|
|
25
|
+
target: NoTarget,
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
// When using --config with a non-project config, auto-inherit project settings
|
|
29
|
+
// from the project tspconfig.yaml of the entrypoint (not the config file location)
|
|
30
|
+
if (options.configPath !== undefined && config.kind !== "project") {
|
|
31
|
+
const entrypointDir = entrypointStat?.isDirectory()
|
|
32
|
+
? options.entrypoint
|
|
33
|
+
: getDirectoryPath(options.entrypoint);
|
|
34
|
+
const projectConfig = await findProjectConfig(host, entrypointDir);
|
|
35
|
+
if (projectConfig?.kind === "project") {
|
|
36
|
+
config.entrypoint ??= projectConfig.entrypoint;
|
|
37
|
+
config.features ??= projectConfig.features;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
21
40
|
const compilerOptions = diagnostics.pipe(resolveOptionsFromConfig(config, options));
|
|
22
41
|
return diagnostics.wrap(compilerOptions);
|
|
23
42
|
}
|
|
@@ -107,4 +126,21 @@ function mergeOptions(base, overrides) {
|
|
|
107
126
|
function hasNestedObjects(value) {
|
|
108
127
|
return value && typeof value === "object" && !Array.isArray(value);
|
|
109
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Walk up directories from `startDir` to find the nearest project tspconfig.yaml (one with `kind: "project"`).
|
|
131
|
+
*/
|
|
132
|
+
async function findProjectConfig(host, startDir) {
|
|
133
|
+
let dir = startDir;
|
|
134
|
+
while (true) {
|
|
135
|
+
const config = await loadTypeSpecConfigForPath(host, dir, false, false);
|
|
136
|
+
if (config.kind === "project" && config.diagnostics.length === 0) {
|
|
137
|
+
return config;
|
|
138
|
+
}
|
|
139
|
+
const parentDir = getDirectoryPath(dir);
|
|
140
|
+
if (parentDir === dir) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
dir = parentDir;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
110
146
|
//# sourceMappingURL=config-to-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-to-options.js","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-to-options.js","sourceRoot":"","sources":["../../../src/config/config-to-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,20 @@ export interface TypeSpecConfig {
|
|
|
8
8
|
* Project root.
|
|
9
9
|
*/
|
|
10
10
|
projectRoot: string;
|
|
11
|
+
/**
|
|
12
|
+
* Kind of the config. When set to "project", this config marks a project boundary.
|
|
13
|
+
*/
|
|
14
|
+
kind?: "project";
|
|
15
|
+
/**
|
|
16
|
+
* Main TypeSpec file for this project, relative to the config directory.
|
|
17
|
+
* Only meaningful when `kind` is `"project"`. Defaults to `"main.tsp"`.
|
|
18
|
+
*/
|
|
19
|
+
entrypoint?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Compiler features enabled for this project.
|
|
22
|
+
* Only meaningful when `kind` is `"project"`.
|
|
23
|
+
*/
|
|
24
|
+
features?: string[];
|
|
11
25
|
/** Yaml file used in this configuration. */
|
|
12
26
|
file?: YamlScript;
|
|
13
27
|
/**
|
|
@@ -61,6 +75,20 @@ export interface TypeSpecConfig {
|
|
|
61
75
|
*/
|
|
62
76
|
export interface TypeSpecRawConfig {
|
|
63
77
|
extends?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Kind of the config. When set to "project", this config marks a project boundary.
|
|
80
|
+
*/
|
|
81
|
+
kind?: "project";
|
|
82
|
+
/**
|
|
83
|
+
* Main TypeSpec file for this project, relative to the config directory.
|
|
84
|
+
* Only meaningful when `kind` is `"project"`. Defaults to `"main.tsp"`.
|
|
85
|
+
*/
|
|
86
|
+
entrypoint?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Compiler features enabled for this project.
|
|
89
|
+
* Only meaningful when `kind` is `"project"`.
|
|
90
|
+
*/
|
|
91
|
+
features?: string[];
|
|
64
92
|
"environment-variables"?: Record<string, ConfigEnvironmentVariable>;
|
|
65
93
|
parameters?: Record<string, ConfigParameter>;
|
|
66
94
|
"warn-as-error"?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAEjE;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEzC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAEjE;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEzC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEzC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;CACnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"
|
|
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
|
@@ -8,6 +8,7 @@ import { createChangeIdentifierCodeFix } from "./compiler-code-fixes/change-iden
|
|
|
8
8
|
import { createModelToObjectValueCodeFix, createTupleToArrayValueCodeFix, } from "./compiler-code-fixes/convert-to-value.codefix.js";
|
|
9
9
|
import { getDeprecationDetails, markDeprecated } from "./deprecation.js";
|
|
10
10
|
import { compilerAssert, createDiagnosticCollector, ignoreDiagnostics, reportDeprecated, } from "./diagnostics.js";
|
|
11
|
+
import { isCompilerFeatureEnabled } from "./features.js";
|
|
11
12
|
import { validateInheritanceDiscriminatedUnions } from "./helpers/discriminator-utils.js";
|
|
12
13
|
import { getLocationContext } from "./helpers/location-context.js";
|
|
13
14
|
import { explainStringTemplateNotSerializable } from "./helpers/string-template-utils.js";
|
|
@@ -154,6 +155,7 @@ export function createChecker(program, resolver) {
|
|
|
154
155
|
* Key is the SymId of a node. It can be retrieved with getNodeSymId(node)
|
|
155
156
|
*/
|
|
156
157
|
const pendingResolutions = new PendingResolutions();
|
|
158
|
+
const spreadResolutionAncestors = new Map();
|
|
157
159
|
const postCheckValidators = [];
|
|
158
160
|
const typespecNamespaceBinding = resolver.symbols.global.exports.get("TypeSpec");
|
|
159
161
|
if (typespecNamespaceBinding) {
|
|
@@ -1393,11 +1395,13 @@ export function createChecker(program, resolver) {
|
|
|
1393
1395
|
return links.value;
|
|
1394
1396
|
}
|
|
1395
1397
|
checkModifiers(program, node);
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1398
|
+
if (!isCompilerFeatureEnabled(program, "function-declarations", node)) {
|
|
1399
|
+
reportCheckerDiagnostic(createDiagnostic({
|
|
1400
|
+
code: "experimental-feature",
|
|
1401
|
+
messageId: "functionDeclarations",
|
|
1402
|
+
target: node,
|
|
1403
|
+
}));
|
|
1404
|
+
}
|
|
1401
1405
|
const namespace = getParentNamespaceType(node);
|
|
1402
1406
|
compilerAssert(namespace, `Function ${node.id.sv} should have resolved a declared namespace or the global namespace.`);
|
|
1403
1407
|
const name = node.id.sv;
|
|
@@ -3096,6 +3100,15 @@ export function createChecker(program, resolver) {
|
|
|
3096
3100
|
if (symbol) {
|
|
3097
3101
|
return symbol;
|
|
3098
3102
|
}
|
|
3103
|
+
// When the member wasn't found but the container has unknown members (e.g. from
|
|
3104
|
+
// template spreads or `is`), force-check the container type so that late-bound
|
|
3105
|
+
// members become available, then retry the lookup.
|
|
3106
|
+
if (node.selector === "." && base.flags & 118 /* SymbolFlags.MemberContainer */) {
|
|
3107
|
+
const resolvedMember = tryForceResolveLateBoundMember(ctx, base, node);
|
|
3108
|
+
if (resolvedMember) {
|
|
3109
|
+
return resolvedMember;
|
|
3110
|
+
}
|
|
3111
|
+
}
|
|
3099
3112
|
if (base.flags & 256 /* SymbolFlags.Namespace */) {
|
|
3100
3113
|
reportCheckerDiagnostic(createDiagnostic({
|
|
3101
3114
|
code: "invalid-ref",
|
|
@@ -3145,6 +3158,42 @@ export function createChecker(program, resolver) {
|
|
|
3145
3158
|
}
|
|
3146
3159
|
return undefined;
|
|
3147
3160
|
}
|
|
3161
|
+
/**
|
|
3162
|
+
* Attempt to resolve a late-bound member by force-checking the container type.
|
|
3163
|
+
* This handles the case where a model has `hasUnknownMembers` (e.g. from template
|
|
3164
|
+
* spreads or `is`) and the member only becomes known after the type is fully checked.
|
|
3165
|
+
*/
|
|
3166
|
+
function tryForceResolveLateBoundMember(ctx, base, node) {
|
|
3167
|
+
const links = getSymbolLinks(base);
|
|
3168
|
+
if (!links.hasUnknownMembers) {
|
|
3169
|
+
return undefined;
|
|
3170
|
+
}
|
|
3171
|
+
// Don't force-check if the container is currently being resolved (cycle).
|
|
3172
|
+
if (pendingResolutions.has(base, ResolutionKind.Type)) {
|
|
3173
|
+
return undefined;
|
|
3174
|
+
}
|
|
3175
|
+
// Force-check the container type to populate its members.
|
|
3176
|
+
pendingResolutions.start(base, ResolutionKind.Type);
|
|
3177
|
+
const type = checkTypeReferenceSymbol(ctx, base, node.base);
|
|
3178
|
+
pendingResolutions.finish(base, ResolutionKind.Type);
|
|
3179
|
+
if (isErrorType(type)) {
|
|
3180
|
+
return undefined;
|
|
3181
|
+
}
|
|
3182
|
+
// Late-bind the container and its members.
|
|
3183
|
+
switch (type.kind) {
|
|
3184
|
+
case "Model":
|
|
3185
|
+
case "Interface":
|
|
3186
|
+
case "Union":
|
|
3187
|
+
case "Enum":
|
|
3188
|
+
case "Scalar":
|
|
3189
|
+
lateBindMemberContainer(type);
|
|
3190
|
+
lateBindMembers(type);
|
|
3191
|
+
break;
|
|
3192
|
+
default:
|
|
3193
|
+
return undefined;
|
|
3194
|
+
}
|
|
3195
|
+
return getCanonicalResolvedMemberSymbol(type, node.id.sv);
|
|
3196
|
+
}
|
|
3148
3197
|
function getMemberKindName(node) {
|
|
3149
3198
|
switch (node.kind) {
|
|
3150
3199
|
case SyntaxKind.ModelStatement:
|
|
@@ -3473,6 +3522,7 @@ export function createChecker(program, resolver) {
|
|
|
3473
3522
|
for (const file of program.sourceFiles.values()) {
|
|
3474
3523
|
checkSourceFile(file);
|
|
3475
3524
|
}
|
|
3525
|
+
checkOrphanedFunctionImplementations();
|
|
3476
3526
|
internalDecoratorValidation();
|
|
3477
3527
|
assertNoPendingResolutions();
|
|
3478
3528
|
runPostValidators(postCheckValidators);
|
|
@@ -3499,6 +3549,36 @@ export function createChecker(program, resolver) {
|
|
|
3499
3549
|
}
|
|
3500
3550
|
}
|
|
3501
3551
|
}
|
|
3552
|
+
/**
|
|
3553
|
+
* Check that all function implementations exported via $functions have a corresponding
|
|
3554
|
+
* `extern fn` declaration in TypeSpec. Reports an error for each orphaned implementation.
|
|
3555
|
+
*/
|
|
3556
|
+
function checkOrphanedFunctionImplementations() {
|
|
3557
|
+
for (const file of program.jsSourceFiles.values()) {
|
|
3558
|
+
checkSymbolTableForOrphanedFunctions(file.symbol.exports, file);
|
|
3559
|
+
}
|
|
3560
|
+
}
|
|
3561
|
+
function checkSymbolTableForOrphanedFunctions(exports, sourceFile) {
|
|
3562
|
+
if (!exports)
|
|
3563
|
+
return;
|
|
3564
|
+
for (const sym of exports.values()) {
|
|
3565
|
+
if (sym.flags & 2048 /* SymbolFlags.Function */ && sym.flags & 2097152 /* SymbolFlags.Implementation */) {
|
|
3566
|
+
const merged = getMergedSymbol(sym);
|
|
3567
|
+
const hasFunctionDeclaration = merged.declarations.some((d) => d.kind === SyntaxKind.FunctionDeclarationStatement);
|
|
3568
|
+
if (!hasFunctionDeclaration) {
|
|
3569
|
+
reportCheckerDiagnostic(createDiagnostic({
|
|
3570
|
+
code: "missing-extern-declaration",
|
|
3571
|
+
format: { name: sym.name },
|
|
3572
|
+
target: sourceFile,
|
|
3573
|
+
}));
|
|
3574
|
+
}
|
|
3575
|
+
}
|
|
3576
|
+
// Recurse into namespace symbols
|
|
3577
|
+
if (sym.flags & 256 /* SymbolFlags.Namespace */ && sym.exports) {
|
|
3578
|
+
checkSymbolTableForOrphanedFunctions(sym.exports, sourceFile);
|
|
3579
|
+
}
|
|
3580
|
+
}
|
|
3581
|
+
}
|
|
3502
3582
|
/** Report error with duplicate using in the same scope. */
|
|
3503
3583
|
function checkDuplicateUsings(file) {
|
|
3504
3584
|
const duplicateTrackers = new Map();
|
|
@@ -4703,6 +4783,7 @@ export function createChecker(program, resolver) {
|
|
|
4703
4783
|
messageId: "modelExpression",
|
|
4704
4784
|
target: isExpr,
|
|
4705
4785
|
}));
|
|
4786
|
+
pendingResolutions.finish(modelSymId, ResolutionKind.BaseType);
|
|
4706
4787
|
return undefined;
|
|
4707
4788
|
}
|
|
4708
4789
|
else if (isExpr.kind === SyntaxKind.ArrayExpression) {
|
|
@@ -4718,12 +4799,14 @@ export function createChecker(program, resolver) {
|
|
|
4718
4799
|
target: target,
|
|
4719
4800
|
}));
|
|
4720
4801
|
}
|
|
4802
|
+
pendingResolutions.finish(modelSymId, ResolutionKind.BaseType);
|
|
4721
4803
|
return undefined;
|
|
4722
4804
|
}
|
|
4723
4805
|
isType = getTypeForNode(isExpr, ctx);
|
|
4724
4806
|
}
|
|
4725
4807
|
else {
|
|
4726
4808
|
reportCheckerDiagnostic(createDiagnostic({ code: "is-model", target: isExpr }));
|
|
4809
|
+
pendingResolutions.finish(modelSymId, ResolutionKind.BaseType);
|
|
4727
4810
|
return undefined;
|
|
4728
4811
|
}
|
|
4729
4812
|
pendingResolutions.finish(modelSymId, ResolutionKind.BaseType);
|
|
@@ -4751,6 +4834,29 @@ export function createChecker(program, resolver) {
|
|
|
4751
4834
|
}
|
|
4752
4835
|
return undefined;
|
|
4753
4836
|
}
|
|
4837
|
+
// Ancestors are models that already depend on this model via spread.
|
|
4838
|
+
const modelAncestors = spreadResolutionAncestors.get(modelSymId);
|
|
4839
|
+
if (targetSym && modelAncestors?.has(targetSym)) {
|
|
4840
|
+
if (ctx.mapper === undefined) {
|
|
4841
|
+
reportCheckerDiagnostic(createDiagnostic({
|
|
4842
|
+
code: "spread-model",
|
|
4843
|
+
messageId: "selfSpread",
|
|
4844
|
+
target: target,
|
|
4845
|
+
}));
|
|
4846
|
+
}
|
|
4847
|
+
return undefined;
|
|
4848
|
+
}
|
|
4849
|
+
if (targetSym) {
|
|
4850
|
+
let targetAncestors = spreadResolutionAncestors.get(targetSym);
|
|
4851
|
+
if (!targetAncestors) {
|
|
4852
|
+
targetAncestors = new Set();
|
|
4853
|
+
spreadResolutionAncestors.set(targetSym, targetAncestors);
|
|
4854
|
+
}
|
|
4855
|
+
targetAncestors.add(modelSymId);
|
|
4856
|
+
for (const ancestor of modelAncestors ?? []) {
|
|
4857
|
+
targetAncestors.add(ancestor);
|
|
4858
|
+
}
|
|
4859
|
+
}
|
|
4754
4860
|
const type = getTypeForNode(target, ctx);
|
|
4755
4861
|
return type;
|
|
4756
4862
|
}
|
|
@@ -4816,25 +4922,27 @@ export function createChecker(program, resolver) {
|
|
|
4816
4922
|
type: undefined,
|
|
4817
4923
|
decorators: [],
|
|
4818
4924
|
});
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
target: prop,
|
|
4824
|
-
}));
|
|
4825
|
-
type.type = errorType;
|
|
4925
|
+
// Link the property early so that re-entrant access (e.g., A.a from another model)
|
|
4926
|
+
// finds this property via checkMemberSym without re-entering checkModelProperty.
|
|
4927
|
+
if (links) {
|
|
4928
|
+
linkType(ctx, links, type);
|
|
4826
4929
|
}
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
if (
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4930
|
+
type.type = getTypeForNode(prop.value, ctx);
|
|
4931
|
+
// Detect property-to-property cycles (e.g., A.a -> B.a -> A.a)
|
|
4932
|
+
if (hasPropertyTypeCycle(type)) {
|
|
4933
|
+
if (ctx.mapper === undefined) {
|
|
4934
|
+
reportCheckerDiagnostic(createDiagnostic({
|
|
4935
|
+
code: "circular-prop",
|
|
4936
|
+
format: { propName: name },
|
|
4937
|
+
target: prop,
|
|
4938
|
+
}));
|
|
4835
4939
|
}
|
|
4836
|
-
|
|
4837
|
-
|
|
4940
|
+
type.type = errorType;
|
|
4941
|
+
}
|
|
4942
|
+
if (prop.default) {
|
|
4943
|
+
const defaultValue = checkDefaultValue(ctx, prop.default, type.type);
|
|
4944
|
+
if (defaultValue !== null) {
|
|
4945
|
+
type.defaultValue = defaultValue;
|
|
4838
4946
|
}
|
|
4839
4947
|
}
|
|
4840
4948
|
type.decorators = checkDecorators(ctx, type, prop);
|
|
@@ -4847,9 +4955,22 @@ export function createChecker(program, resolver) {
|
|
|
4847
4955
|
type.decorators.unshift(createDocFromCommentDecorator("self", docComment));
|
|
4848
4956
|
}
|
|
4849
4957
|
}
|
|
4850
|
-
pendingResolutions.finish(sym, ResolutionKind.Type);
|
|
4851
4958
|
return finishType(type, { skipDecorators: !shouldRunDecorators });
|
|
4852
4959
|
}
|
|
4960
|
+
/**
|
|
4961
|
+
* Detect cycles in the property type chain. Follows `.type` links as long as
|
|
4962
|
+
* they point to other ModelProperty types and checks whether we loop back to
|
|
4963
|
+
* the starting property.
|
|
4964
|
+
*/
|
|
4965
|
+
function hasPropertyTypeCycle(prop) {
|
|
4966
|
+
let current = prop.type;
|
|
4967
|
+
while (current !== undefined && current.kind === "ModelProperty") {
|
|
4968
|
+
if (current === prop)
|
|
4969
|
+
return true;
|
|
4970
|
+
current = current.type;
|
|
4971
|
+
}
|
|
4972
|
+
return false;
|
|
4973
|
+
}
|
|
4853
4974
|
function getOperationParameterDocComment(prop) {
|
|
4854
4975
|
if (prop.parent?.kind !== SyntaxKind.ModelExpression) {
|
|
4855
4976
|
return undefined;
|
|
@@ -5368,6 +5489,23 @@ export function createChecker(program, resolver) {
|
|
|
5368
5489
|
checkTemplateDeclaration(ctx, node);
|
|
5369
5490
|
const aliasSymId = getNodeSym(node);
|
|
5370
5491
|
if (pendingResolutions.has(aliasSymId, ResolutionKind.Type)) {
|
|
5492
|
+
// Re-entrant resolution detected. Check if the alias value node has already produced
|
|
5493
|
+
// a type (e.g., a model expression that creates and links its type before resolving
|
|
5494
|
+
// properties). In that case, the circular reference is safe.
|
|
5495
|
+
const valueSym = node.value.symbol;
|
|
5496
|
+
if (valueSym) {
|
|
5497
|
+
const valueLinks = getSymbolLinks(valueSym);
|
|
5498
|
+
const inProgressType = ctx.mapper === undefined
|
|
5499
|
+
? valueLinks.declaredType
|
|
5500
|
+
: valueLinks.instantiations?.get(ctx.mapper.args);
|
|
5501
|
+
if (inProgressType) {
|
|
5502
|
+
linkType(ctx, links, inProgressType);
|
|
5503
|
+
return inProgressType;
|
|
5504
|
+
}
|
|
5505
|
+
}
|
|
5506
|
+
if (node.value.kind === SyntaxKind.ModelExpression) {
|
|
5507
|
+
return getTypeForNode(node.value, ctx);
|
|
5508
|
+
}
|
|
5371
5509
|
if (ctx.mapper === undefined) {
|
|
5372
5510
|
reportCheckerDiagnostic(createDiagnostic({
|
|
5373
5511
|
code: "circular-alias-type",
|