@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.
Files changed (55) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/config/config-loader.d.ts.map +1 -1
  3. package/dist/src/config/config-loader.js +39 -1
  4. package/dist/src/config/config-loader.js.map +1 -1
  5. package/dist/src/config/config-schema.d.ts.map +1 -1
  6. package/dist/src/config/config-schema.js +14 -0
  7. package/dist/src/config/config-schema.js.map +1 -1
  8. package/dist/src/config/config-to-options.d.ts.map +1 -1
  9. package/dist/src/config/config-to-options.js +36 -0
  10. package/dist/src/config/config-to-options.js.map +1 -1
  11. package/dist/src/config/types.d.ts +28 -0
  12. package/dist/src/config/types.d.ts.map +1 -1
  13. package/dist/src/core/checker.d.ts.map +1 -1
  14. package/dist/src/core/checker.js +161 -23
  15. package/dist/src/core/checker.js.map +1 -1
  16. package/dist/src/core/cli/actions/info.d.ts +2 -0
  17. package/dist/src/core/cli/actions/info.d.ts.map +1 -1
  18. package/dist/src/core/cli/actions/info.js +25 -0
  19. package/dist/src/core/cli/actions/info.js.map +1 -1
  20. package/dist/src/core/cli/cli.js +2 -2
  21. package/dist/src/core/cli/cli.js.map +1 -1
  22. package/dist/src/core/entrypoint-resolution.d.ts.map +1 -1
  23. package/dist/src/core/entrypoint-resolution.js +7 -0
  24. package/dist/src/core/entrypoint-resolution.js.map +1 -1
  25. package/dist/src/core/features.d.ts +15 -0
  26. package/dist/src/core/features.d.ts.map +1 -0
  27. package/dist/src/core/features.js +21 -0
  28. package/dist/src/core/features.js.map +1 -0
  29. package/dist/src/core/messages.d.ts +94 -7
  30. package/dist/src/core/messages.d.ts.map +1 -1
  31. package/dist/src/core/messages.js +32 -1
  32. package/dist/src/core/messages.js.map +1 -1
  33. package/dist/src/core/modifiers.d.ts.map +1 -1
  34. package/dist/src/core/modifiers.js +0 -11
  35. package/dist/src/core/modifiers.js.map +1 -1
  36. package/dist/src/init/scaffold.js +16 -11
  37. package/dist/src/init/scaffold.js.map +1 -1
  38. package/dist/src/server/completion.js +14 -7
  39. package/dist/src/server/completion.js.map +1 -1
  40. package/dist/src/server/entrypoint-resolver.d.ts.map +1 -1
  41. package/dist/src/server/entrypoint-resolver.js +13 -0
  42. package/dist/src/server/entrypoint-resolver.js.map +1 -1
  43. package/dist/src/server/fatal-error.d.ts +5 -0
  44. package/dist/src/server/fatal-error.d.ts.map +1 -0
  45. package/dist/src/server/fatal-error.js +24 -0
  46. package/dist/src/server/fatal-error.js.map +1 -0
  47. package/dist/src/server/server.js +4 -6
  48. package/dist/src/server/server.js.map +1 -1
  49. package/dist/src/server/tspconfig/completion.d.ts.map +1 -1
  50. package/dist/src/server/tspconfig/completion.js +9 -0
  51. package/dist/src/server/tspconfig/completion.js.map +1 -1
  52. package/lib/prototypes.tsp +0 -1
  53. package/package.json +2 -2
  54. package/templates/__snapshots__/rest/tspconfig.yaml +10 -8
  55. package/templates/scaffolding.json +3 -0
package/dist/manifest.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export default {
2
- "version": "1.13.0-dev.1",
3
- "commit": "d16ac80bed03f3b133b88e656929e8ec0ff48384"
2
+ "version": "1.13.0-dev.11",
3
+ "commit": "cafe85a33bdb4058322ad86fa4e5a83230f9a70e"
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/config/config-loader.ts"],"names":[],"mappings":"AAIA,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;AAiED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,UAAU,EAAE,CAqBzF"}
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":"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"}
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,CAgGtE,CAAC"}
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,CAsBnD;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"}
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":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAc,QAAQ,EAAc,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AA+B5F;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAgB,EAChB,OAAsC;IAEtC,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAEhD,MAAM,cAAc,GAAG,MAAM,IAAI,CAC/B,IAAI,CAAC,IAAI,EACT,OAAO,CAAC,UAAU,EAClB,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAC/B,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B,CAAC;IACF,MAAM,UAAU,GACd,OAAO,CAAC,UAAU;QAClB,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,IAAI,EACJ,UAAU,EACV,OAAO,CAAC,UAAU,KAAK,SAAS,EAChC,OAAO,CAAC,UAAU,KAAK,SAAS,CACjC,CAAC;IACF,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,4DAA4D;IAC5D,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,WAAW,CAAC,GAAG,CACb,gBAAgB,CAAC;YACf,IAAI,EAAE,kCAAkC;YACxC,MAAM,EAAE,QAAQ;SACjB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,mFAAmF;IACnF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,MAAM,aAAa,GAAG,cAAc,EAAE,WAAW,EAAE;YACjD,CAAC,CAAC,OAAO,CAAC,UAAU;YACpB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,UAAU,KAAK,aAAa,CAAC,UAAU,CAAC;YAC/C,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpF,OAAO,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAsB,EAAE,OAA+B;IAC9F,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,yBAAyB,EAAE,CAAC;IAEhD,mBAAmB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,mBAAmB,GAAmB;QAC1C,GAAG,MAAM;QACT,GAAG,OAAO,CAAC,SAAS;QACpB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;KAClE,CAAC;IACF,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CACrC,qBAAqB,CAAC,mBAAmB,EAAE;QACzC,GAAG;QACH,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS;QACvC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CACH,CAAC;IACF,2BAA2B,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E,MAAM,eAAe,GAAoB,aAAa,CAAC;QACrD,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,MAAM,EAAE,MAAM,CAAC,QAAQ;QACvB,UAAU,EAAE,MAAM;QAClB,iBAAiB,EAAE,cAAc,CAAC,SAAS,CAAC;QAC5C,cAAc,EAAE,cAAc,CAAC,WAAW;QAC1C,KAAK,EAAE,cAAc,CAAC,KAAK;QAC3B,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,aAAa,EAAE,cAAc,CAAC,MAAM;KACrC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,SAAS,SAAS,CAAC,IAAY;QAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CACd,gBAAgB,CAAC;gBACf,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,EAAE,IAAI,EAAE;gBAChB,MAAM,EAAE,QAAQ;aACjB,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,wBAAwB,CAAC,GAAQ;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CACnB,IAAyD,EACzD,SAA8D;IAE9D,MAAM,kBAAkB,GAA4C,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1F,SAAS,QAAQ,CAAC,IAAa;QAC7B,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAS,CAAC;IAC3E,CAAC;IACD,SAAS,SAAS,CAAC,MAAW,EAAE,MAAW;QACzC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;wBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBACvD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/E,kBAAkB,CAAC,WAAW,CAAC,GAAG,SAAS,CACzC,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,EACrC,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAU;IAClC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC9B,IAAgB,EAChB,QAAgB;IAEhB,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,GAAG,SAAS,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -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;IACjB,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
+ {"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":"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"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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"}
@@ -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
- reportCheckerDiagnostic(createDiagnostic({
1397
- code: "experimental-feature",
1398
- messageId: "functionDeclarations",
1399
- target: node,
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
- if (pendingResolutions.has(sym, ResolutionKind.Type) && ctx.mapper === undefined) {
4820
- reportCheckerDiagnostic(createDiagnostic({
4821
- code: "circular-prop",
4822
- format: { propName: name },
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
- else {
4828
- pendingResolutions.start(sym, ResolutionKind.Type);
4829
- type.type = getTypeForNode(prop.value, ctx);
4830
- if (prop.default) {
4831
- const defaultValue = checkDefaultValue(ctx, prop.default, type.type);
4832
- if (defaultValue !== null) {
4833
- type.defaultValue = defaultValue;
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
- if (links) {
4837
- linkType(ctx, links, type);
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",