@typespec/compiler 0.51.0-dev.1 → 0.51.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/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +47 -1
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/helpers/discriminator-utils.js +2 -0
- package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
- package/dist/src/core/helpers/index.d.ts +1 -0
- package/dist/src/core/helpers/index.d.ts.map +1 -1
- package/dist/src/core/helpers/index.js +1 -0
- package/dist/src/core/helpers/index.js.map +1 -1
- package/dist/src/core/helpers/string-template-utils.d.ts +11 -0
- package/dist/src/core/helpers/string-template-utils.d.ts.map +1 -0
- package/dist/src/core/helpers/string-template-utils.js +65 -0
- package/dist/src/core/helpers/string-template-utils.js.map +1 -0
- package/dist/src/core/helpers/type-name-utils.d.ts.map +1 -1
- package/dist/src/core/helpers/type-name-utils.js +2 -0
- package/dist/src/core/helpers/type-name-utils.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 +97 -1
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/scanner.d.ts +85 -66
- package/dist/src/core/scanner.d.ts.map +1 -1
- package/dist/src/core/scanner.js +229 -127
- package/dist/src/core/scanner.js.map +1 -1
- package/dist/src/core/semantic-walker.d.ts.map +1 -1
- package/dist/src/core/semantic-walker.js +22 -0
- package/dist/src/core/semantic-walker.js.map +1 -1
- package/dist/src/core/types.d.ts +106 -54
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js +55 -50
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/emitter-framework/asset-emitter.d.ts.map +1 -1
- package/dist/src/emitter-framework/asset-emitter.js +105 -70
- package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
- package/dist/src/emitter-framework/builders/array-builder.js +1 -1
- package/dist/src/emitter-framework/builders/array-builder.js.map +1 -1
- package/dist/src/emitter-framework/builders/object-builder.js +1 -1
- package/dist/src/emitter-framework/builders/object-builder.js.map +1 -1
- package/dist/src/emitter-framework/type-emitter.d.ts +5 -1
- package/dist/src/emitter-framework/type-emitter.d.ts.map +1 -1
- package/dist/src/emitter-framework/type-emitter.js +12 -0
- package/dist/src/emitter-framework/type-emitter.js.map +1 -1
- package/dist/src/emitter-framework/types.d.ts +7 -2
- package/dist/src/emitter-framework/types.d.ts.map +1 -1
- package/dist/src/emitter-framework/types.js.map +1 -1
- package/dist/src/formatter/print/needs-parens.d.ts.map +1 -1
- package/dist/src/formatter/print/needs-parens.js +4 -0
- package/dist/src/formatter/print/needs-parens.js.map +1 -1
- package/dist/src/formatter/print/printer.d.ts +2 -1
- package/dist/src/formatter/print/printer.d.ts.map +1 -1
- package/dist/src/formatter/print/printer.js +17 -0
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/server/serverlib.d.ts.map +1 -1
- package/dist/src/server/serverlib.js +84 -6
- package/dist/src/server/serverlib.js.map +1 -1
- package/dist/src/server/tmlanguage.d.ts +1 -1
- package/dist/src/server/tmlanguage.d.ts.map +1 -1
- package/dist/src/server/tmlanguage.js +15 -2
- package/dist/src/server/tmlanguage.js.map +1 -1
- package/dist/src/server/type-signature.js +13 -0
- package/dist/src/server/type-signature.js.map +1 -1
- package/dist/typespec.tmLanguage +40 -0
- package/lib/decorators.tsp +2 -2
- package/lib/reflection.tsp +1 -0
- 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":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUzD,OAAO,EAIL,cAAc,EACd,kBAAkB,EAQlB,UAAU,EACV,gBAAgB,EAMhB,SAAS,EAKT,YAAY,EAEZ,cAAc,EAId,mBAAmB,EAEnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EAOX,KAAK,EAGL,aAAa,EAKb,SAAS,EACT,sBAAsB,EACtB,SAAS,EACT,IAAI,EAEJ,cAAc,EACd,kBAAkB,EAiBlB,cAAc,EAGd,uBAAuB,EAIvB,MAAM,EAEN,WAAW,EACX,QAAQ,EACR,aAAa,EACb,iBAAiB,EASjB,GAAG,EAYH,IAAI,EAIJ,iBAAiB,EACjB,kBAAkB,EAMlB,WAAW,EAEX,SAAS,EACT,QAAQ,EACT,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,aAAa,CAAC,CAAC;AAE7E,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,aAAa,CAAC;IAE7B,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjD,YAAY,IAAI,IAAI,CAAC;IACrB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,sBAAsB,IAAI,SAAS,CAAC;IACpC,sBAAsB,IAAI,sBAAsB,CAAC;IACjD,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;IACvD,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACnE,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa,CAAC;IACvD,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAAC;IACzD,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAAC;IACzD,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAE/C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IAE3D;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IACnF,SAAS,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAAE,GAAG,CAAC,CAAC;IACnF,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACvE,OAAO,CACL,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,cAAc,EAC1B,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAC1C,IAAI,CAAC;IACR,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,GAAG,SAAS,CAAC;IACzD,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC9E,UAAU,CAAC,CAAC,SAAS,IAAI,SAAS,GAAG,GAAG,eAAe,GAAG,KAAK,EAC7D,OAAO,EAAE,CAAC,GACT,CAAC,GAAG,aAAa,GAAG;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,mBAAmB,CAAC,CAAC,SAAS,IAAI,SAAS,GAAG,GAAG,eAAe,GAAG,KAAK,EACtE,OAAO,EAAE,CAAC,GACT,CAAC,GAAG,aAAa,CAAC;IACrB,UAAU,CAAC,CAAC,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1C,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG,YAAY,CAAC;IAChE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,aAAa,CAAC;IAC1E,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAAC;IAC5E,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAAC;IAC7E,iBAAiB,CACf,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAChC,IAAI,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,GACjE,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;IACnD,iBAAiB,CACf,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAChC,IAAI,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,GACjE,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;IAEnD;;;;;;OAMG;IACH,kBAAkB,CAChB,MAAM,EAAE,IAAI,GAAG,SAAS,EACxB,MAAM,EAAE,IAAI,GAAG,SAAS,EACxB,gBAAgB,EAAE,gBAAgB,GACjC,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAEpC;;;;OAIG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,IAAI,MAAM,GAAG;QAAE,IAAI,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAClD,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,IAAI,IAAI,GAAG;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAEnF;;;OAGG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE3D;;;;OAIG;IACH,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,CAAC,IAAI,GAAG,SAAS,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAEzF,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,UAAU,aAAa;IACrB,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACvC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAAC;CAC5D;AAED,6CAA6C;AAC7C,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,GAAG,CAAC;IAET;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAkwKvD;AAqFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,GAC5C,KAAK,CAyEP;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,GAAG,gBAAgB,EACnC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,GAC3C,KAAK,CAmCP;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,CAcxF;AAED;;;;;;;GAOG;AACH,wBAAiB,uBAAuB,CAAC,KAAK,EAAE,KAAK,2CAapD;AAYD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAEpF"}
|
package/dist/src/core/checker.js
CHANGED
|
@@ -9,7 +9,8 @@ import { createSymbol, createSymbolTable } from "./binder.js";
|
|
|
9
9
|
import { getDeprecationDetails, markDeprecated } from "./deprecation.js";
|
|
10
10
|
import { ProjectionError, compilerAssert, reportDeprecated } from "./diagnostics.js";
|
|
11
11
|
import { validateInheritanceDiscriminatedUnions } from "./helpers/discriminator-utils.js";
|
|
12
|
-
import { getNamespaceFullName, getTypeName } from "./helpers/index.js";
|
|
12
|
+
import { getNamespaceFullName, getTypeName, stringTemplateToString, } from "./helpers/index.js";
|
|
13
|
+
import { isStringTemplateSerializable } from "./helpers/string-template-utils.js";
|
|
13
14
|
import { createDiagnostic } from "./messages.js";
|
|
14
15
|
import { getIdentifierContext, hasParseError, visitChildren } from "./parser.js";
|
|
15
16
|
import { createProjectionMembers } from "./projection-members.js";
|
|
@@ -357,6 +358,8 @@ export function createChecker(program) {
|
|
|
357
358
|
return checkTupleExpression(node, mapper);
|
|
358
359
|
case SyntaxKind.StringLiteral:
|
|
359
360
|
return checkStringLiteral(node);
|
|
361
|
+
case SyntaxKind.StringTemplateExpression:
|
|
362
|
+
return checkStringTemplateExpresion(node, mapper);
|
|
360
363
|
case SyntaxKind.ArrayExpression:
|
|
361
364
|
return checkArrayExpression(node, mapper);
|
|
362
365
|
case SyntaxKind.UnionExpression:
|
|
@@ -1717,6 +1720,35 @@ export function createChecker(program) {
|
|
|
1717
1720
|
return (_a = getMergedSymbol(aliasType.node.symbol)) !== null && _a !== void 0 ? _a : aliasSymbol;
|
|
1718
1721
|
}
|
|
1719
1722
|
}
|
|
1723
|
+
function checkStringTemplateExpresion(node, mapper) {
|
|
1724
|
+
const spans = [createTemplateSpanLiteral(node.head)];
|
|
1725
|
+
for (const span of node.spans) {
|
|
1726
|
+
spans.push(createTemplateSpanValue(span.expression, mapper));
|
|
1727
|
+
spans.push(createTemplateSpanLiteral(span.literal));
|
|
1728
|
+
}
|
|
1729
|
+
const type = createType({
|
|
1730
|
+
kind: "StringTemplate",
|
|
1731
|
+
node,
|
|
1732
|
+
spans,
|
|
1733
|
+
});
|
|
1734
|
+
return type;
|
|
1735
|
+
}
|
|
1736
|
+
function createTemplateSpanLiteral(node) {
|
|
1737
|
+
return createType({
|
|
1738
|
+
kind: "StringTemplateSpan",
|
|
1739
|
+
node: node,
|
|
1740
|
+
isInterpolated: false,
|
|
1741
|
+
type: getLiteralType(node),
|
|
1742
|
+
});
|
|
1743
|
+
}
|
|
1744
|
+
function createTemplateSpanValue(node, mapper) {
|
|
1745
|
+
return createType({
|
|
1746
|
+
kind: "StringTemplateSpan",
|
|
1747
|
+
node: node,
|
|
1748
|
+
isInterpolated: true,
|
|
1749
|
+
type: getTypeForNode(node, mapper),
|
|
1750
|
+
});
|
|
1751
|
+
}
|
|
1720
1752
|
function checkStringLiteral(str) {
|
|
1721
1753
|
return getLiteralType(str);
|
|
1722
1754
|
}
|
|
@@ -2413,6 +2445,10 @@ export function createChecker(program) {
|
|
|
2413
2445
|
if (type === nullType) {
|
|
2414
2446
|
return true;
|
|
2415
2447
|
}
|
|
2448
|
+
if (type.kind === "StringTemplate") {
|
|
2449
|
+
const [valid] = isStringTemplateSerializable(type);
|
|
2450
|
+
return valid;
|
|
2451
|
+
}
|
|
2416
2452
|
const valueTypes = new Set(["String", "Number", "Boolean", "EnumMember", "Tuple"]);
|
|
2417
2453
|
return valueTypes.has(type.kind);
|
|
2418
2454
|
}
|
|
@@ -2561,6 +2597,9 @@ export function createChecker(program) {
|
|
|
2561
2597
|
if (value.kind === "Boolean" || value.kind === "String" || value.kind === "Number") {
|
|
2562
2598
|
return literalTypeToValue(value);
|
|
2563
2599
|
}
|
|
2600
|
+
else if (value.kind === "StringTemplate") {
|
|
2601
|
+
return stringTemplateToString(value)[0];
|
|
2602
|
+
}
|
|
2564
2603
|
}
|
|
2565
2604
|
return value;
|
|
2566
2605
|
}
|
|
@@ -4034,6 +4073,7 @@ export function createChecker(program) {
|
|
|
4034
4073
|
case "Number":
|
|
4035
4074
|
return isNumericLiteralRelatedTo(source, target);
|
|
4036
4075
|
case "String":
|
|
4076
|
+
case "StringTemplate":
|
|
4037
4077
|
return areScalarsRelated(target, getStdType("string"));
|
|
4038
4078
|
case "Boolean":
|
|
4039
4079
|
return areScalarsRelated(target, getStdType("boolean"));
|
|
@@ -4209,6 +4249,9 @@ export function createChecker(program) {
|
|
|
4209
4249
|
return [Related.true, []];
|
|
4210
4250
|
}
|
|
4211
4251
|
function isAssignableToUnion(source, target, diagnosticTarget, relationCache) {
|
|
4252
|
+
if (source.kind === "UnionVariant" && source.union === target) {
|
|
4253
|
+
return [Related.true, []];
|
|
4254
|
+
}
|
|
4212
4255
|
for (const option of target.variants.values()) {
|
|
4213
4256
|
const [related] = isTypeAssignableToInternal(source, option.type, diagnosticTarget, relationCache);
|
|
4214
4257
|
if (related) {
|
|
@@ -4649,6 +4692,9 @@ function marshalArgumentsForJS(args) {
|
|
|
4649
4692
|
if (arg.kind === "Boolean" || arg.kind === "String" || arg.kind === "Number") {
|
|
4650
4693
|
return literalTypeToValue(arg);
|
|
4651
4694
|
}
|
|
4695
|
+
else if (arg.kind === "StringTemplate") {
|
|
4696
|
+
return stringTemplateToString(arg)[0];
|
|
4697
|
+
}
|
|
4652
4698
|
return arg;
|
|
4653
4699
|
});
|
|
4654
4700
|
}
|