@typespec/compiler 0.44.0-dev.2 → 0.44.0-dev.21
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/cmd/runner.js.map +1 -1
- package/dist/core/checker.d.ts +1 -6
- package/dist/core/checker.d.ts.map +1 -1
- package/dist/core/checker.js +22 -18
- package/dist/core/checker.js.map +1 -1
- package/dist/core/cli/args.d.ts.map +1 -1
- package/dist/core/cli/args.js +3 -2
- package/dist/core/cli/args.js.map +1 -1
- package/dist/core/decorator-utils.d.ts +1 -0
- package/dist/core/decorator-utils.d.ts.map +1 -1
- package/dist/core/decorator-utils.js +5 -1
- package/dist/core/decorator-utils.js.map +1 -1
- package/dist/core/helpers/type-name-utils.d.ts.map +1 -1
- package/dist/core/helpers/type-name-utils.js +8 -5
- package/dist/core/helpers/type-name-utils.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/messages.d.ts +30 -20
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +8 -6
- package/dist/core/messages.js.map +1 -1
- package/dist/core/node-host.js.map +1 -1
- package/dist/core/parser.d.ts.map +1 -1
- package/dist/core/parser.js +1 -7
- package/dist/core/parser.js.map +1 -1
- package/dist/core/path-utils.d.ts +10 -0
- package/dist/core/path-utils.d.ts.map +1 -1
- package/dist/core/path-utils.js +116 -1
- package/dist/core/path-utils.js.map +1 -1
- package/dist/core/program.d.ts +4 -0
- package/dist/core/program.d.ts.map +1 -1
- package/dist/core/program.js +23 -15
- package/dist/core/program.js.map +1 -1
- package/dist/core/projection-members.js +1 -1
- package/dist/core/projection-members.js.map +1 -1
- package/dist/core/projector.d.ts.map +1 -1
- package/dist/core/projector.js +11 -0
- package/dist/core/projector.js.map +1 -1
- package/dist/core/scanner.d.ts.map +1 -1
- package/dist/core/scanner.js.map +1 -1
- package/dist/core/type-utils.d.ts +2 -1
- package/dist/core/type-utils.d.ts.map +1 -1
- package/dist/core/type-utils.js.map +1 -1
- package/dist/core/types.d.ts +14 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/emitter-framework/asset-emitter.js.map +1 -1
- package/dist/emitter-framework/builders/object-builder.d.ts +1 -1
- package/dist/emitter-framework/builders/object-builder.d.ts.map +1 -1
- package/dist/emitter-framework/builders/object-builder.js +11 -2
- package/dist/emitter-framework/builders/object-builder.js.map +1 -1
- package/dist/emitter-framework/type-emitter.d.ts.map +1 -1
- package/dist/emitter-framework/type-emitter.js +0 -1
- package/dist/emitter-framework/type-emitter.js.map +1 -1
- package/dist/formatter/print/printer.js +1 -1
- package/dist/formatter/print/printer.js.map +1 -1
- package/dist/lib/decorators.d.ts +10 -10
- package/dist/lib/decorators.d.ts.map +1 -1
- package/dist/lib/decorators.js +83 -19
- package/dist/lib/decorators.js.map +1 -1
- package/dist/manifest.js +1 -1
- package/dist/server/serverlib.d.ts +1 -1
- package/dist/server/serverlib.d.ts.map +1 -1
- package/dist/server/serverlib.js +10 -3
- package/dist/server/serverlib.js.map +1 -1
- package/dist/testing/expect.d.ts.map +1 -1
- package/dist/testing/expect.js +1 -1
- package/dist/testing/expect.js.map +1 -1
- package/dist/testing/test-host.js.map +1 -1
- package/dist/testing/test-server-host.d.ts.map +1 -1
- package/dist/testing/test-server-host.js +1 -1
- package/dist/testing/test-server-host.js.map +1 -1
- package/lib/decorators.tsp +119 -11
- package/lib/lib.tsp +25 -1
- package/lib/reflection.tsp +4 -2
- package/package.json +17 -18
package/dist/cmd/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../cmd/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../cmd/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAqB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,YAAoB,EAAE,UAAkB;IACtE,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAE/C,IAAI,WAAW,EAAE;QACf,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,EAAE;YAClD,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SACxC;QACD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnD,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;KACzB;SAAM;QACL,MAAM,IAAI,KAAK,CACb,6HAA6H,CAC9H,CAAC;KACH;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC;SAChB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,GAAG,EAAE;QACtD,OAAO,MAAM,kBAAkB,EAAE,CAAC;KACnC;IAED,IAAI;QACF,MAAM,IAAI,GAAsB;YAC9B,QAAQ;YACR,QAAQ,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;YAC/D,IAAI;SACL,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE;YAC/D,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;SACvB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC9B,MAAM,IAAI,KAAK,CACb,2FAA2F,QAAQ,CAAC,IAAI,IAAI,CAC7G,CAAC;SACH;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC;KACtB;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE;YACnC,mDAAmD;YACnD,OAAO,MAAM,kBAAkB,EAAE,CAAC;SACnC;aAAM;YACL,MAAM,GAAG,CAAC;SACX;KACF;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,OAAO,OAAO,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC7E,CAAC"}
|
package/dist/core/checker.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TypeNameOptions } from "./helpers/index.js";
|
|
2
2
|
import { Program, ProjectedProgram } from "./program.js";
|
|
3
|
-
import { BooleanLiteral, BooleanLiteralNode, Diagnostic, DiagnosticTarget, ErrorType, FunctionType, IdentifierNode, IntrinsicScalarName, JsSourceFileNode, LiteralNode, LiteralType, Model, ModelProperty, Namespace, NamespaceStatementNode, NeverType, Node, NumericLiteral, NumericLiteralNode, ProjectionNode, ProjectionStatementNode, Scalar, StringLiteral, StringLiteralNode, Sym, Type, TypeMapper, TypeReferenceNode, TypeSpecScriptNode, UnknownType, VoidType } from "./types.js";
|
|
3
|
+
import { BooleanLiteral, BooleanLiteralNode, Diagnostic, DiagnosticTarget, ErrorType, FunctionType, IdentifierNode, IntrinsicScalarName, JsSourceFileNode, LiteralNode, LiteralType, Model, ModelProperty, Namespace, NamespaceStatementNode, NeverType, Node, NumericLiteral, NumericLiteralNode, ProjectionNode, ProjectionStatementNode, Scalar, StdTypeName, StdTypes, StringLiteral, StringLiteralNode, Sym, Type, TypeMapper, TypeReferenceNode, TypeSpecScriptNode, UnknownType, VoidType } from "./types.js";
|
|
4
4
|
export interface Checker {
|
|
5
5
|
typePrototype: TypePrototype;
|
|
6
6
|
getTypeForNode(node: Node): Type;
|
|
@@ -87,11 +87,6 @@ export interface TypeSpecCompletionItem {
|
|
|
87
87
|
*/
|
|
88
88
|
label?: string;
|
|
89
89
|
}
|
|
90
|
-
type StdTypeName = IntrinsicScalarName | "Array" | "Record" | "object";
|
|
91
|
-
type StdTypes = {
|
|
92
|
-
Array: Model;
|
|
93
|
-
Record: Model;
|
|
94
|
-
} & Record<IntrinsicScalarName, Scalar>;
|
|
95
90
|
export declare function createChecker(program: Program): Checker;
|
|
96
91
|
/**
|
|
97
92
|
* If the input is anonymous (or the provided filter removes properties)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../core/checker.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../core/checker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAqC,MAAM,oBAAoB,CAAC;AAGxF,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AASzD,OAAO,EAIL,cAAc,EACd,kBAAkB,EAQlB,UAAU,EACV,gBAAgB,EAKhB,SAAS,EAKT,YAAY,EAEZ,cAAc,EAId,mBAAmB,EACnB,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,EACjB,GAAG,EAYH,IAAI,EAEJ,UAAU,EAEV,iBAAiB,EACjB,kBAAkB,EAMlB,WAAW,EACX,QAAQ,EACT,MAAM,YAAY,CAAC;AAGpB,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,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;IAC7C,mBAAmB,CAAC,CAAC,SAAS,IAAI,SAAS,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,aAAa,CAAC,GAAG,KAAK,EACtF,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,EACZ,MAAM,EAAE,IAAI,EACZ,gBAAgB,EAAE,gBAAgB,GACjC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAE3B;;;;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,CAkmJvD;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,EACjD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,CAAC,EACV,MAAM,CAAC,EAAE,UAAU,GAClB,CAAC,CAEH"}
|
package/dist/core/checker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getDeprecated, getIndexer } from "../lib/decorators.js";
|
|
2
2
|
import { createSymbol, createSymbolTable } from "./binder.js";
|
|
3
|
-
import {
|
|
3
|
+
import { ProjectionError, compilerAssert } from "./diagnostics.js";
|
|
4
4
|
import { validateInheritanceDiscriminatedUnions } from "./helpers/discriminator-utils.js";
|
|
5
5
|
import { getNamespaceFullName, getTypeName } from "./helpers/index.js";
|
|
6
6
|
import { createDiagnostic } from "./messages.js";
|
|
@@ -8,7 +8,7 @@ import { getIdentifierContext, hasParseError, visitChildren } from "./parser.js"
|
|
|
8
8
|
import { createProjectionMembers } from "./projection-members.js";
|
|
9
9
|
import { getParentTemplateNode, isNeverType, isTemplateInstance, isUnknownType, isVoidType, } from "./type-utils.js";
|
|
10
10
|
import { IdentifierKind, SyntaxKind, } from "./types.js";
|
|
11
|
-
import { createRekeyableMap, isArray,
|
|
11
|
+
import { MultiKeyMap, createRekeyableMap, isArray, mutate } from "./util.js";
|
|
12
12
|
/**
|
|
13
13
|
* Maps type arguments to type instantiation.
|
|
14
14
|
*/
|
|
@@ -733,12 +733,13 @@ export function createChecker(program) {
|
|
|
733
733
|
compilerAssert(false, `Unexpected checker error. symbolLinks.instantiations was not defined for ${SyntaxKind[templateNode.kind]}`);
|
|
734
734
|
}
|
|
735
735
|
}
|
|
736
|
-
const
|
|
736
|
+
const mapper = createTypeMapper(params, args, parentMapper);
|
|
737
|
+
const cached = (_a = symbolLinks.instantiations) === null || _a === void 0 ? void 0 : _a.get(mapper.args);
|
|
737
738
|
if (cached) {
|
|
738
739
|
return cached;
|
|
739
740
|
}
|
|
740
741
|
if (instantiateTempalates) {
|
|
741
|
-
return instantiateTemplate(symbolLinks.instantiations, templateNode, params,
|
|
742
|
+
return instantiateTemplate(symbolLinks.instantiations, templateNode, params, mapper);
|
|
742
743
|
}
|
|
743
744
|
else {
|
|
744
745
|
return errorType;
|
|
@@ -753,11 +754,10 @@ export function createChecker(program) {
|
|
|
753
754
|
* twice at the same time, or if template parameters from more than one template
|
|
754
755
|
* are ever in scope at once.
|
|
755
756
|
*/
|
|
756
|
-
function instantiateTemplate(instantiations, templateNode, params,
|
|
757
|
-
const mapper = createTypeMapper(params, args, parentMapper);
|
|
757
|
+
function instantiateTemplate(instantiations, templateNode, params, mapper) {
|
|
758
758
|
const type = getTypeForNode(templateNode, mapper);
|
|
759
|
-
if (!instantiations.get(args)) {
|
|
760
|
-
instantiations.set(args, type);
|
|
759
|
+
if (!instantiations.get(mapper.args)) {
|
|
760
|
+
instantiations.set(mapper.args, type);
|
|
761
761
|
}
|
|
762
762
|
if (type.kind === "Model") {
|
|
763
763
|
type.templateNode = templateNode;
|
|
@@ -1077,13 +1077,14 @@ export function createChecker(program) {
|
|
|
1077
1077
|
const name = node.id.sv;
|
|
1078
1078
|
let decorators = [];
|
|
1079
1079
|
// Is this a definition or reference?
|
|
1080
|
-
let parameters, returnType;
|
|
1080
|
+
let parameters, returnType, sourceOperation;
|
|
1081
1081
|
if (node.signature.kind === SyntaxKind.OperationSignatureReference) {
|
|
1082
1082
|
// Attempt to resolve the operation
|
|
1083
1083
|
const baseOperation = checkOperationIs(node, node.signature.baseOperation, mapper);
|
|
1084
1084
|
if (!baseOperation) {
|
|
1085
1085
|
return errorType;
|
|
1086
1086
|
}
|
|
1087
|
+
sourceOperation = baseOperation;
|
|
1087
1088
|
// Reference the same return type and create the parameters type
|
|
1088
1089
|
parameters = cloneType(baseOperation.parameters);
|
|
1089
1090
|
returnType = baseOperation.returnType;
|
|
@@ -1102,6 +1103,7 @@ export function createChecker(program) {
|
|
|
1102
1103
|
parameters,
|
|
1103
1104
|
returnType,
|
|
1104
1105
|
decorators,
|
|
1106
|
+
sourceOperation,
|
|
1105
1107
|
interface: parentInterface,
|
|
1106
1108
|
});
|
|
1107
1109
|
decorators.push(...checkDecorators(operationType, node, mapper));
|
|
@@ -1684,6 +1686,7 @@ export function createChecker(program) {
|
|
|
1684
1686
|
linkType(links, type, mapper);
|
|
1685
1687
|
const isBase = checkModelIs(node, node.is, mapper);
|
|
1686
1688
|
if (isBase) {
|
|
1689
|
+
type.sourceModel = isBase;
|
|
1687
1690
|
checkDeprecated(isBase, node.is);
|
|
1688
1691
|
// copy decorators
|
|
1689
1692
|
decorators.push(...isBase.decorators);
|
|
@@ -2209,8 +2212,8 @@ export function createChecker(program) {
|
|
|
2209
2212
|
if (!isValueType(defaultType)) {
|
|
2210
2213
|
reportCheckerDiagnostic(createDiagnostic({
|
|
2211
2214
|
code: "unsupported-default",
|
|
2212
|
-
format: { type:
|
|
2213
|
-
target:
|
|
2215
|
+
format: { type: defaultType.kind },
|
|
2216
|
+
target: defaultNode,
|
|
2214
2217
|
}));
|
|
2215
2218
|
return errorType;
|
|
2216
2219
|
}
|
|
@@ -3726,7 +3729,7 @@ export function createChecker(program) {
|
|
|
3726
3729
|
indexType: getTypeName(target.indexer.key),
|
|
3727
3730
|
sourceType: getTypeName(source),
|
|
3728
3731
|
},
|
|
3729
|
-
target,
|
|
3732
|
+
target: diagnosticTarget,
|
|
3730
3733
|
}),
|
|
3731
3734
|
],
|
|
3732
3735
|
];
|
|
@@ -3889,14 +3892,14 @@ function addDerivedModels(models, possiblyDerivedModels) {
|
|
|
3889
3892
|
}
|
|
3890
3893
|
}
|
|
3891
3894
|
function createTypeMapper(parameters, args, parentMapper) {
|
|
3892
|
-
var _a;
|
|
3895
|
+
var _a, _b;
|
|
3893
3896
|
const map = new Map((_a = parentMapper === null || parentMapper === void 0 ? void 0 : parentMapper.map) !== null && _a !== void 0 ? _a : []);
|
|
3894
3897
|
for (const [index, param] of parameters.entries()) {
|
|
3895
3898
|
map.set(param, args[index]);
|
|
3896
3899
|
}
|
|
3897
3900
|
return {
|
|
3898
3901
|
partial: false,
|
|
3899
|
-
args,
|
|
3902
|
+
args: [...((_b = parentMapper === null || parentMapper === void 0 ? void 0 : parentMapper.args) !== null && _b !== void 0 ? _b : []), ...args],
|
|
3900
3903
|
getMappedType: (type) => {
|
|
3901
3904
|
var _a;
|
|
3902
3905
|
return (_a = map.get(type)) !== null && _a !== void 0 ? _a : type;
|
|
@@ -4160,14 +4163,15 @@ function isTemplatedNode(node) {
|
|
|
4160
4163
|
* Mapping from the reflection models to Type["kind"] value
|
|
4161
4164
|
*/
|
|
4162
4165
|
const ReflectionNameToKind = {
|
|
4163
|
-
Model: "Model",
|
|
4164
|
-
ModelProperty: "ModelProperty",
|
|
4165
|
-
Interface: "Interface",
|
|
4166
4166
|
Enum: "Enum",
|
|
4167
4167
|
EnumMember: "EnumMember",
|
|
4168
|
-
|
|
4168
|
+
Interface: "Interface",
|
|
4169
|
+
Model: "Model",
|
|
4170
|
+
ModelProperty: "ModelProperty",
|
|
4169
4171
|
Namespace: "Namespace",
|
|
4170
4172
|
Operation: "Operation",
|
|
4173
|
+
Scalar: "Scalar",
|
|
4174
|
+
TemplateParameter: "TemplateParameter",
|
|
4171
4175
|
Tuple: "Tuple",
|
|
4172
4176
|
Union: "Union",
|
|
4173
4177
|
UnionVariant: "UnionVariant",
|