@formspec/build 0.1.0-alpha.55 → 0.1.0-alpha.58
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/analyzer/tsdoc-parser.d.ts.map +1 -1
- package/dist/browser.cjs +26 -8
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.js +26 -8
- package/dist/browser.js.map +1 -1
- package/dist/build-alpha.d.ts +7 -6
- package/dist/build-beta.d.ts +7 -6
- package/dist/build-internal.d.ts +7 -6
- package/dist/build.d.ts +7 -6
- package/dist/cli.cjs +86 -19
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +88 -19
- package/dist/cli.js.map +1 -1
- package/dist/generators/class-schema.d.ts +2 -2
- package/dist/generators/class-schema.d.ts.map +1 -1
- package/dist/index.cjs +81 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +83 -16
- package/dist/index.js.map +1 -1
- package/dist/internals.cjs +81 -16
- package/dist/internals.cjs.map +1 -1
- package/dist/internals.js +83 -16
- package/dist/internals.js.map +1 -1
- package/dist/json-schema/generator.d.ts +1 -1
- package/dist/json-schema/generator.d.ts.map +1 -1
- package/dist/json-schema/ir-generator.d.ts +1 -1
- package/dist/json-schema/ir-generator.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -133,7 +133,7 @@ export interface StaticSchemaGenerationOptions {
|
|
|
133
133
|
* @defaultValue "enum"
|
|
134
134
|
* @deprecated Provide a `FormSpecConfig` via the `config` option instead.
|
|
135
135
|
*/
|
|
136
|
-
readonly enumSerialization?: "enum" | "oneOf";
|
|
136
|
+
readonly enumSerialization?: "enum" | "oneOf" | "smart-size";
|
|
137
137
|
/**
|
|
138
138
|
* Metadata resolution policy for static schema generation.
|
|
139
139
|
* @deprecated Provide a `FormSpecConfig` via the `config` option instead.
|
|
@@ -386,7 +386,7 @@ export declare function generateSchemasBatchFromProgram(options: GenerateSchemas
|
|
|
386
386
|
export declare function resolveStaticOptions(options: StaticSchemaGenerationOptions): {
|
|
387
387
|
extensionRegistry: ExtensionRegistry | undefined;
|
|
388
388
|
vendorPrefix: string | undefined;
|
|
389
|
-
enumSerialization: "enum" | "oneOf" | undefined;
|
|
389
|
+
enumSerialization: "enum" | "oneOf" | "smart-size" | undefined;
|
|
390
390
|
metadata: MetadataPolicyInput | undefined;
|
|
391
391
|
};
|
|
392
392
|
//# sourceMappingURL=class-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-schema.d.ts","sourceRoot":"","sources":["../../src/generators/class-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"class-schema.d.ts","sourceRoot":"","sources":["../../src/generators/class-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,cAAc,EACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,UAAU,EAAE,cAAc,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA4B,SAAQ,6BAA6B;IAChF,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,WAAW,sCAAuC,SAAQ,6BAA6B;IAC3F,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,WAAW,oCAAqC,SAAQ,0BAA0B;IACtF,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,+BAA+B,GAAG;IAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAA;CAAE,GACzF,YAAY,CAUd;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,eAAe,EACzB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,+BAA+B,GAAG;IAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAA;CAAE,GACzF,0BAA0B,CAoC5B;AAmBD;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;IAC7D;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACpD,yDAAyD;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;IACpE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAyB,SAAQ,6BAA6B;IAC7E,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,UAAU,EAAE,cAAc,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,iCAAkC,SAAQ,6BAA6B;IACtF,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,aAAa,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAiCzB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,6BAA6B;IAC3E,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,aAAa,CAAC;CAClD;AAeD;;;;;;;;;;;;;;;;GAgBG;AACH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAAG;IAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GACrE,uBAAuB,CAAC;AAC3B;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAAG;IAAE,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAA;CAAE,GAC3E,0BAA0B,CAAC;AAC9B;;;;;;;;GAQG;AAEH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,6BAA6B,GAAG;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACA,uBAAuB,CAAC;AAmB3B;;;;;;GAMG;AACH;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iCAAiC,GAAG;IAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GAChF,uBAAuB,CAAC;AAC3B;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iCAAiC,GAAG;IAAE,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAA;CAAE,GACtF,0BAA0B,CAAC;AAC9B;;;;;;;;;GASG;AAEH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,6BAA6B,GAAG;IACvC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACA,uBAAuB,CAAC;AAmB3B;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,6BAA6B,GAAG;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACA,0BAA0B,CAK5B;AA0BD;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,6BAA6B,GAAG;IACvC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACA,0BAA0B,CAK5B;AAuBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,SAAS,oCAAoC,EAAE,CA4DjD;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sCAAsC,GAC9C,SAAS,oCAAoC,EAAE,CAiBjD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,6BAA6B,GAAG;IAC5E,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;IAC/D,QAAQ,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC3C,CAqBA"}
|
package/dist/index.cjs
CHANGED
|
@@ -1001,20 +1001,29 @@ function assertNoSerializedNameCollisions(ir) {
|
|
|
1001
1001
|
}
|
|
1002
1002
|
|
|
1003
1003
|
// src/json-schema/ir-generator.ts
|
|
1004
|
+
function parseEnumSerialization(value) {
|
|
1005
|
+
switch (value) {
|
|
1006
|
+
case void 0:
|
|
1007
|
+
case "enum":
|
|
1008
|
+
return "enum";
|
|
1009
|
+
case "oneOf":
|
|
1010
|
+
return "oneOf";
|
|
1011
|
+
case "smart-size":
|
|
1012
|
+
return "smart-size";
|
|
1013
|
+
default:
|
|
1014
|
+
throw new Error(
|
|
1015
|
+
`Invalid enumSerialization "${String(value)}". Expected "enum", "oneOf", or "smart-size".`
|
|
1016
|
+
);
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1004
1019
|
function makeContext(options) {
|
|
1005
1020
|
const vendorPrefix = options?.vendorPrefix ?? "x-formspec";
|
|
1006
|
-
const
|
|
1021
|
+
const enumSerialization = parseEnumSerialization(options?.enumSerialization);
|
|
1007
1022
|
if (!vendorPrefix.startsWith("x-")) {
|
|
1008
1023
|
throw new Error(
|
|
1009
1024
|
`Invalid vendorPrefix "${vendorPrefix}". Extension JSON Schema keywords must start with "x-".`
|
|
1010
1025
|
);
|
|
1011
1026
|
}
|
|
1012
|
-
if (rawEnumSerialization !== void 0 && rawEnumSerialization !== "enum" && rawEnumSerialization !== "oneOf") {
|
|
1013
|
-
throw new Error(
|
|
1014
|
-
`Invalid enumSerialization "${rawEnumSerialization}". Expected "enum" or "oneOf".`
|
|
1015
|
-
);
|
|
1016
|
-
}
|
|
1017
|
-
const enumSerialization = rawEnumSerialization ?? "enum";
|
|
1018
1027
|
return {
|
|
1019
1028
|
defs: {},
|
|
1020
1029
|
typeNameMap: {},
|
|
@@ -1222,7 +1231,7 @@ function generatePrimitiveType(type) {
|
|
|
1222
1231
|
};
|
|
1223
1232
|
}
|
|
1224
1233
|
function generateEnumType(type, ctx) {
|
|
1225
|
-
if (ctx.enumSerialization === "oneOf") {
|
|
1234
|
+
if (ctx.enumSerialization === "oneOf" || ctx.enumSerialization === "smart-size" && shouldSerializeEnumAsOneOf(type)) {
|
|
1226
1235
|
return {
|
|
1227
1236
|
oneOf: type.members.map((m) => {
|
|
1228
1237
|
const stringValue = String(m.value);
|
|
@@ -1232,12 +1241,21 @@ function generateEnumType(type, ctx) {
|
|
|
1232
1241
|
};
|
|
1233
1242
|
}
|
|
1234
1243
|
const schema = { enum: type.members.map((m) => m.value) };
|
|
1244
|
+
if (ctx.enumSerialization === "smart-size") {
|
|
1245
|
+
return schema;
|
|
1246
|
+
}
|
|
1235
1247
|
const displayNames = buildEnumDisplayNameExtension(type);
|
|
1236
1248
|
if (displayNames !== void 0) {
|
|
1237
1249
|
schema[`${ctx.vendorPrefix}-display-names`] = displayNames;
|
|
1238
1250
|
}
|
|
1239
1251
|
return schema;
|
|
1240
1252
|
}
|
|
1253
|
+
function shouldSerializeEnumAsOneOf(type) {
|
|
1254
|
+
return type.members.some((member) => {
|
|
1255
|
+
const title = member.displayName ?? String(member.value);
|
|
1256
|
+
return title !== String(member.value);
|
|
1257
|
+
});
|
|
1258
|
+
}
|
|
1241
1259
|
function buildEnumDisplayNameExtension(type) {
|
|
1242
1260
|
if (!type.members.some((member) => member.displayName !== void 0)) {
|
|
1243
1261
|
return void 0;
|
|
@@ -2546,6 +2564,7 @@ function processConstraintTag(tagName, text, parsedTag, provenance, node, source
|
|
|
2546
2564
|
sourceFile,
|
|
2547
2565
|
tagName,
|
|
2548
2566
|
parsedTag,
|
|
2567
|
+
text,
|
|
2549
2568
|
provenance,
|
|
2550
2569
|
supportingDeclarations,
|
|
2551
2570
|
options
|
|
@@ -2573,6 +2592,9 @@ function renderSyntheticArgumentExpression(valueKind, argumentText) {
|
|
|
2573
2592
|
case "number":
|
|
2574
2593
|
case "integer":
|
|
2575
2594
|
case "signedInteger":
|
|
2595
|
+
if (trimmed === "Infinity" || trimmed === "-Infinity" || trimmed === "NaN") {
|
|
2596
|
+
return trimmed;
|
|
2597
|
+
}
|
|
2576
2598
|
return Number.isFinite(Number(trimmed)) ? trimmed : JSON.stringify(trimmed);
|
|
2577
2599
|
case "string":
|
|
2578
2600
|
return JSON.stringify(argumentText);
|
|
@@ -2784,7 +2806,7 @@ function hasBuiltinConstraintBroadening(tagName, options) {
|
|
|
2784
2806
|
const broadenedTypeId = getBroadenedCustomTypeId(options?.fieldType);
|
|
2785
2807
|
return broadenedTypeId !== void 0 && options?.extensionRegistry?.findBuiltinConstraintBroadening(broadenedTypeId, tagName) !== void 0;
|
|
2786
2808
|
}
|
|
2787
|
-
function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, parsedTag, provenance, supportingDeclarations, options) {
|
|
2809
|
+
function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, parsedTag, rawText, provenance, supportingDeclarations, options) {
|
|
2788
2810
|
if (!(0, import_internals4.isBuiltinConstraintName)(tagName)) {
|
|
2789
2811
|
return [];
|
|
2790
2812
|
}
|
|
@@ -2805,8 +2827,10 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
|
|
|
2805
2827
|
const log = (0, import_internal4.getBuildLogger)();
|
|
2806
2828
|
const broadeningLog = (0, import_internal4.getBroadeningLogger)();
|
|
2807
2829
|
const syntheticLog = (0, import_internal4.getSyntheticLogger)();
|
|
2830
|
+
const typedParserLog = (0, import_internal4.getTypedParserLogger)();
|
|
2808
2831
|
const logsEnabled = log !== import_core3.noopLogger || broadeningLog !== import_core3.noopLogger;
|
|
2809
2832
|
const syntheticTraceEnabled = syntheticLog !== import_core3.noopLogger;
|
|
2833
|
+
const typedParserTraceEnabled = typedParserLog !== import_core3.noopLogger;
|
|
2810
2834
|
const logStart = logsEnabled ? (0, import_internal4.nowMicros)() : 0;
|
|
2811
2835
|
const subjectTypeKind = logsEnabled ? (0, import_internal4.describeTypeKind)(subjectType, checker) : "";
|
|
2812
2836
|
function emit(outcome, result2) {
|
|
@@ -2914,16 +2938,57 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
|
|
|
2914
2938
|
]);
|
|
2915
2939
|
}
|
|
2916
2940
|
}
|
|
2917
|
-
const
|
|
2918
|
-
definition.valueKind,
|
|
2919
|
-
parsedTag?.argumentText ?? ""
|
|
2920
|
-
);
|
|
2921
|
-
if (definition.requiresArgument && argumentExpression === null) {
|
|
2922
|
-
return emit("A-pass", []);
|
|
2923
|
-
}
|
|
2941
|
+
const effectiveArgumentText = parsedTag !== null ? (0, import_internal3.parseTagSyntax)(tagName, rawText).argumentText : rawText;
|
|
2924
2942
|
if (hasBroadening) {
|
|
2925
2943
|
return emit("bypass", []);
|
|
2926
2944
|
}
|
|
2945
|
+
const typedParseResult = (0, import_internal4.parseTagArgument)(tagName, effectiveArgumentText, "build");
|
|
2946
|
+
if (!typedParseResult.ok) {
|
|
2947
|
+
if (typedParserTraceEnabled) {
|
|
2948
|
+
typedParserLog.trace("typed-parser C-reject", {
|
|
2949
|
+
consumer: "build",
|
|
2950
|
+
tag: tagName,
|
|
2951
|
+
placement: nonNullPlacement,
|
|
2952
|
+
subjectTypeKind: subjectTypeKind !== "" ? subjectTypeKind : "-",
|
|
2953
|
+
roleOutcome: "C-reject",
|
|
2954
|
+
diagnosticCode: typedParseResult.diagnostic.code
|
|
2955
|
+
});
|
|
2956
|
+
}
|
|
2957
|
+
let mappedCode;
|
|
2958
|
+
switch (typedParseResult.diagnostic.code) {
|
|
2959
|
+
case "MISSING_TAG_ARGUMENT":
|
|
2960
|
+
mappedCode = "MISSING_TAG_ARGUMENT";
|
|
2961
|
+
break;
|
|
2962
|
+
case "INVALID_TAG_ARGUMENT":
|
|
2963
|
+
mappedCode = "INVALID_TAG_ARGUMENT";
|
|
2964
|
+
break;
|
|
2965
|
+
case "UNKNOWN_TAG":
|
|
2966
|
+
throw new Error(
|
|
2967
|
+
`Unexpected UNKNOWN_TAG from parseTagArgument("${tagName}") \u2014 tag was resolved via getTagDefinition.`
|
|
2968
|
+
);
|
|
2969
|
+
default: {
|
|
2970
|
+
const _exhaustive = typedParseResult.diagnostic.code;
|
|
2971
|
+
throw new Error(`Unknown diagnostic code: ${String(_exhaustive)}`);
|
|
2972
|
+
}
|
|
2973
|
+
}
|
|
2974
|
+
return emit("C-reject", [
|
|
2975
|
+
makeDiagnostic(mappedCode, typedParseResult.diagnostic.message, provenance)
|
|
2976
|
+
]);
|
|
2977
|
+
}
|
|
2978
|
+
if (typedParserTraceEnabled) {
|
|
2979
|
+
typedParserLog.trace("typed-parser C-pass", {
|
|
2980
|
+
consumer: "build",
|
|
2981
|
+
tag: tagName,
|
|
2982
|
+
placement: nonNullPlacement,
|
|
2983
|
+
subjectTypeKind: subjectTypeKind !== "" ? subjectTypeKind : "-",
|
|
2984
|
+
roleOutcome: "C-pass",
|
|
2985
|
+
valueKind: typedParseResult.value.kind
|
|
2986
|
+
});
|
|
2987
|
+
}
|
|
2988
|
+
const argumentExpression = renderSyntheticArgumentExpression(
|
|
2989
|
+
definition.valueKind,
|
|
2990
|
+
effectiveArgumentText
|
|
2991
|
+
);
|
|
2927
2992
|
const subjectTypeText = checker.typeToString(subjectType, node, SYNTHETIC_TYPE_FORMAT_FLAGS);
|
|
2928
2993
|
const hostType = options?.hostType ?? subjectType;
|
|
2929
2994
|
const hostTypeText = checker.typeToString(hostType, node, SYNTHETIC_TYPE_FORMAT_FLAGS);
|