@typespec/compiler 1.10.0-dev.3 → 1.10.0-dev.6
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/generated-defs/TypeSpec.Prototypes.ts-test.js +1 -1
- package/dist/generated-defs/TypeSpec.Prototypes.ts-test.js.map +1 -1
- package/dist/generated-defs/TypeSpec.ts-test.js +1 -1
- package/dist/generated-defs/TypeSpec.ts-test.js.map +1 -1
- package/dist/manifest.js +2 -2
- package/dist/src/core/binder.d.ts.map +1 -1
- package/dist/src/core/binder.js +10 -8
- package/dist/src/core/binder.js.map +1 -1
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +485 -46
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/helpers/type-name-utils.d.ts.map +1 -1
- package/dist/src/core/helpers/type-name-utils.js +13 -0
- package/dist/src/core/helpers/type-name-utils.js.map +1 -1
- package/dist/src/core/js-marshaller.d.ts +4 -2
- package/dist/src/core/js-marshaller.d.ts.map +1 -1
- package/dist/src/core/js-marshaller.js +96 -6
- package/dist/src/core/js-marshaller.js.map +1 -1
- package/dist/src/core/messages.d.ts +101 -12
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +27 -2
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/name-resolver.d.ts.map +1 -1
- package/dist/src/core/name-resolver.js +30 -0
- package/dist/src/core/name-resolver.js.map +1 -1
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +34 -6
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/scanner.d.ts +5 -5
- package/dist/src/core/scanner.d.ts.map +1 -1
- package/dist/src/core/scanner.js +8 -8
- package/dist/src/core/scanner.js.map +1 -1
- package/dist/src/core/semantic-walker.d.ts +3 -3
- package/dist/src/core/semantic-walker.d.ts.map +1 -1
- package/dist/src/core/semantic-walker.js +63 -44
- package/dist/src/core/semantic-walker.js.map +1 -1
- package/dist/src/core/type-relation-checker.d.ts.map +1 -1
- package/dist/src/core/type-relation-checker.js +157 -10
- package/dist/src/core/type-relation-checker.js.map +1 -1
- package/dist/src/core/types.d.ts +187 -23
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js +1 -0
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/experimental/typekit/index.d.ts.map +1 -1
- package/dist/src/experimental/typekit/index.js.map +1 -1
- package/dist/src/formatter/print/printer.d.ts.map +1 -1
- package/dist/src/formatter/print/printer.js +13 -0
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/examples.d.ts +10 -3
- package/dist/src/lib/examples.d.ts.map +1 -1
- package/dist/src/lib/examples.js +22 -7
- package/dist/src/lib/examples.js.map +1 -1
- package/dist/src/server/type-signature.js +19 -0
- package/dist/src/server/type-signature.js.map +1 -1
- package/package.json +1 -1
- package/templates/__snapshots__/emitter-ts/eslint.config.js +10 -1
- package/templates/__snapshots__/emitter-ts/package.json +1 -2
- package/templates/__snapshots__/emitter-ts/test/test-host.ts +7 -34
- package/templates/__snapshots__/library-ts/eslint.config.js +10 -1
- package/templates/__snapshots__/library-ts/package.json +1 -2
- package/templates/__snapshots__/library-ts/test/decorators.test.ts +18 -23
- package/templates/__snapshots__/library-ts/test/test-host.ts +5 -15
- package/templates/emitter-ts/eslint.config.js +10 -1
- package/templates/emitter-ts/package.json +1 -2
- package/templates/emitter-ts/test/test-host.ts.mu +7 -34
- package/templates/library-ts/eslint.config.js +10 -1
- package/templates/library-ts/package.json +1 -2
- package/templates/library-ts/test/decorators.test.ts.mu +18 -23
- package/templates/library-ts/test/test-host.ts.mu +5 -15
|
@@ -30,7 +30,6 @@ const ReflectionNameToKind = {
|
|
|
30
30
|
Union: "Union",
|
|
31
31
|
UnionVariant: "UnionVariant",
|
|
32
32
|
};
|
|
33
|
-
const _assertReflectionNameToKind = ReflectionNameToKind;
|
|
34
33
|
export function createTypeRelationChecker(program, checker) {
|
|
35
34
|
return {
|
|
36
35
|
isTypeAssignableTo,
|
|
@@ -142,6 +141,11 @@ export function createTypeRelationChecker(program, checker) {
|
|
|
142
141
|
if (source.entityKind === "MixedParameterConstraint") {
|
|
143
142
|
return isTypeAssignableToInternal(source.type, target, diagnosticTarget, relationCache);
|
|
144
143
|
}
|
|
144
|
+
if (isReflectionType(target)) {
|
|
145
|
+
return source.kind === ReflectionNameToKind[target.name] || isNeverType(source)
|
|
146
|
+
? [Related.true, []]
|
|
147
|
+
: [Related.false, [createUnassignableDiagnostic(source, target, diagnosticTarget)]];
|
|
148
|
+
}
|
|
145
149
|
const isSimpleTypeRelated = isSimpleTypeAssignableTo(source, target);
|
|
146
150
|
if (isSimpleTypeRelated === true) {
|
|
147
151
|
return [Related.true, []];
|
|
@@ -202,6 +206,9 @@ export function createTypeRelationChecker(program, checker) {
|
|
|
202
206
|
else if (target.kind === "Enum") {
|
|
203
207
|
return isAssignableToEnum(source, target, diagnosticTarget);
|
|
204
208
|
}
|
|
209
|
+
else if (target.kind === "FunctionType") {
|
|
210
|
+
return isAssignableToFunctionType(source, target, diagnosticTarget, relationCache);
|
|
211
|
+
}
|
|
205
212
|
return [Related.false, [createUnassignableDiagnostic(source, target, diagnosticTarget)]];
|
|
206
213
|
}
|
|
207
214
|
function isIndeterminateEntityAssignableTo(indeterminate, target, diagnosticTarget, relationCache) {
|
|
@@ -295,12 +302,9 @@ export function createTypeRelationChecker(program, checker) {
|
|
|
295
302
|
if (isNeverType(source))
|
|
296
303
|
return true;
|
|
297
304
|
if (isVoidType(target))
|
|
298
|
-
return
|
|
305
|
+
return isVoidType(source);
|
|
299
306
|
if (isUnknownType(target))
|
|
300
307
|
return true;
|
|
301
|
-
if (isReflectionType(target)) {
|
|
302
|
-
return source.kind === ReflectionNameToKind[target.name];
|
|
303
|
-
}
|
|
304
308
|
if (target.kind === "Scalar") {
|
|
305
309
|
return isRelatedToScalar(source, target);
|
|
306
310
|
}
|
|
@@ -320,6 +324,146 @@ export function createTypeRelationChecker(program, checker) {
|
|
|
320
324
|
}
|
|
321
325
|
return undefined;
|
|
322
326
|
}
|
|
327
|
+
function isAssignableToFunctionType(source, target, diagnosticTarget, relationCache) {
|
|
328
|
+
if (source.kind !== "FunctionType") {
|
|
329
|
+
return [Related.false, [createUnassignableDiagnostic(source, target, source)]];
|
|
330
|
+
}
|
|
331
|
+
const { parameters: sourceParameters, returnType: sourceReturnType } = source;
|
|
332
|
+
const { parameters: targetParameters, returnType: targetReturnType } = target;
|
|
333
|
+
// Check that target parameters assignable to source parameters (contravariant relation)
|
|
334
|
+
const [parametersAssignable, parameterErrors] = areParametersAssignable(targetParameters, sourceParameters, diagnosticTarget, relationCache);
|
|
335
|
+
// Check that source return type is assignable to target return type (covariant relation)
|
|
336
|
+
const [returnTypeAssignable, returnTypeErrors] = isAssignableToMixedParameterConstraint(sourceReturnType, targetReturnType, diagnosticTarget, relationCache);
|
|
337
|
+
const related = returnTypeAssignable === Related.true && parametersAssignable === Related.true;
|
|
338
|
+
return related
|
|
339
|
+
? [Related.true, []]
|
|
340
|
+
: [
|
|
341
|
+
Related.false,
|
|
342
|
+
wrapUnassignableErrors(source, target, [...parameterErrors, ...returnTypeErrors]),
|
|
343
|
+
];
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Checks if a set of source parameter constraints are assignable to a set of target parameter constraints.
|
|
347
|
+
*
|
|
348
|
+
* This function assumes the directionality of source -> target has already been adjusted for contravariance. To check if
|
|
349
|
+
* a function F1 is assignable to F2, check that F2.parameters are assignable to F1.parameters.
|
|
350
|
+
*
|
|
351
|
+
* @param sourceParameters
|
|
352
|
+
* @param targetParameters
|
|
353
|
+
* @param diagnosticTarget
|
|
354
|
+
* @param relationCache
|
|
355
|
+
*/
|
|
356
|
+
function areParametersAssignable(sourceParameters, targetParameters, diagnosticTarget, relationCache) {
|
|
357
|
+
const queue = sourceParameters.slice();
|
|
358
|
+
const errors = [];
|
|
359
|
+
for (const targetParam of targetParameters) {
|
|
360
|
+
if (targetParam.rest) {
|
|
361
|
+
// Target is a rest parameter, so all remaining source parameters must be assignable to the rest parameter type.
|
|
362
|
+
const restElementType = getArrayElementType(targetParam.type);
|
|
363
|
+
for (const sourceParam of queue) {
|
|
364
|
+
if (sourceParam.rest) {
|
|
365
|
+
// Source is also a rest parameter, so its element type must be assignable to the target rest element type.
|
|
366
|
+
const sourceRestElementType = getArrayElementType(sourceParam.type);
|
|
367
|
+
const [assignable, innerErrors] = isTypeAssignableToInternal(sourceRestElementType, restElementType, diagnosticTarget, relationCache);
|
|
368
|
+
// Assignability check can terminate here, since nothing can follow a rest parameter.
|
|
369
|
+
return assignable === Related.true
|
|
370
|
+
? [Related.true, []]
|
|
371
|
+
: [Related.false, [...errors, ...innerErrors]];
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
const [assignable, innerErrors] = isTypeAssignableToInternal(sourceParam.type, restElementType, diagnosticTarget, relationCache);
|
|
375
|
+
if (!assignable) {
|
|
376
|
+
errors.push(...innerErrors);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
// Assignability check can again terminate here, because the target parameter was a rest parameter and we have drained
|
|
381
|
+
// both source and target parameters.
|
|
382
|
+
return errors.length === 0 ? [Related.true, []] : [Related.false, errors];
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
// Target is not a rest parameter.
|
|
386
|
+
const nextSourceParam = queue.shift();
|
|
387
|
+
if (!nextSourceParam) {
|
|
388
|
+
if (!targetParam.optional) {
|
|
389
|
+
// No more source params, but target param is required.
|
|
390
|
+
errors.push(createTypeRelationError({
|
|
391
|
+
code: "parameter-required",
|
|
392
|
+
messageId: "missing",
|
|
393
|
+
format: {
|
|
394
|
+
paramName: targetParam.name,
|
|
395
|
+
},
|
|
396
|
+
diagnosticTarget,
|
|
397
|
+
}));
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
if (nextSourceParam.rest) {
|
|
402
|
+
if (!targetParam.optional) {
|
|
403
|
+
// Rest parameters are effectively optional for satisfying non-rest target parameters, so this is an error.
|
|
404
|
+
errors.push(createTypeRelationError({
|
|
405
|
+
code: "parameter-required",
|
|
406
|
+
messageId: "rest-to-required",
|
|
407
|
+
format: {
|
|
408
|
+
paramName: nextSourceParam.name,
|
|
409
|
+
},
|
|
410
|
+
diagnosticTarget,
|
|
411
|
+
}));
|
|
412
|
+
}
|
|
413
|
+
// Source is a rest parameter, so its element type must be assignable to the target parameter type.
|
|
414
|
+
const sourceRestElementType = getArrayElementType(nextSourceParam.type);
|
|
415
|
+
const [assignable, innerErrors] = isTypeAssignableToInternal(sourceRestElementType, targetParam.type, diagnosticTarget, relationCache);
|
|
416
|
+
if (!assignable) {
|
|
417
|
+
errors.push(...innerErrors);
|
|
418
|
+
}
|
|
419
|
+
queue.unshift(nextSourceParam); // Put it back since it can be used for subsequent target parameters as well.
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
if (nextSourceParam.optional && !targetParam.optional) {
|
|
423
|
+
// Source parameter is optional and cannot satisfy required target parameter.
|
|
424
|
+
errors.push(createTypeRelationError({
|
|
425
|
+
code: "parameter-required",
|
|
426
|
+
format: {
|
|
427
|
+
paramName: nextSourceParam.name,
|
|
428
|
+
},
|
|
429
|
+
diagnosticTarget,
|
|
430
|
+
}));
|
|
431
|
+
}
|
|
432
|
+
// Source is a normal parameter
|
|
433
|
+
const [assignable, innerErrors] = isTypeAssignableToInternal(nextSourceParam.type, targetParam.type, diagnosticTarget, relationCache);
|
|
434
|
+
if (!assignable) {
|
|
435
|
+
errors.push(...innerErrors);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
return errors.length === 0 ? [Related.true, []] : [Related.false, errors];
|
|
442
|
+
function getArrayElementType(constraint) {
|
|
443
|
+
// There are two cases:
|
|
444
|
+
// - constraint has `type` only: there's only a type constraint
|
|
445
|
+
// - constraint has `valueType` only: there's only a value constraint
|
|
446
|
+
compilerAssert((constraint.type || constraint.valueType) && (!constraint.type || !constraint.valueType), "Mixed parameter rest constraint cannot have both type and value constraints.");
|
|
447
|
+
if (constraint.type) {
|
|
448
|
+
compilerAssert(constraint.type.kind === "Model" && isArrayModelType(constraint.type), "Expected rest parameter type constraint to be an array type.");
|
|
449
|
+
return {
|
|
450
|
+
entityKind: "MixedParameterConstraint",
|
|
451
|
+
node: constraint.node,
|
|
452
|
+
type: constraint.type.indexer.value,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
compilerAssert(constraint.valueType &&
|
|
457
|
+
constraint.valueType.kind === "Model" &&
|
|
458
|
+
isArrayModelType(constraint.valueType), "Mixed parameter rest constraint must have either type or value constraint.");
|
|
459
|
+
return {
|
|
460
|
+
entityKind: "MixedParameterConstraint",
|
|
461
|
+
node: constraint.node,
|
|
462
|
+
valueType: constraint.valueType.indexer.value,
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
323
467
|
function isNumericLiteralRelatedTo(source, target) {
|
|
324
468
|
// First check that the source numeric literal is assignable to the target scalar
|
|
325
469
|
if (!isNumericAssignableToNumericScalar(source.numericValue, target)) {
|
|
@@ -450,10 +594,12 @@ export function createTypeRelationChecker(program, checker) {
|
|
|
450
594
|
}
|
|
451
595
|
}
|
|
452
596
|
}
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
597
|
+
if (errors.length === 0) {
|
|
598
|
+
return [Related.true, []];
|
|
599
|
+
}
|
|
600
|
+
else {
|
|
601
|
+
return [Related.false, wrapUnassignableErrors(source, target, errors)];
|
|
602
|
+
}
|
|
457
603
|
}
|
|
458
604
|
/** If we should check for excess properties on the given model. */
|
|
459
605
|
function shouldCheckExcessProperties(model) {
|
|
@@ -593,9 +739,10 @@ function wrapUnassignablePropertyErrors(source, errors) {
|
|
|
593
739
|
error.children = errors;
|
|
594
740
|
return [error];
|
|
595
741
|
}
|
|
596
|
-
function createTypeRelationError({ code, format, details, diagnosticTarget, skipIfFirst, }) {
|
|
742
|
+
function createTypeRelationError({ code, messageId, format, details, diagnosticTarget, skipIfFirst, }) {
|
|
597
743
|
const diag = createDiagnostic({
|
|
598
744
|
code: code,
|
|
745
|
+
messageId,
|
|
599
746
|
format: format,
|
|
600
747
|
target: NoTarget,
|
|
601
748
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-relation-checker.js","sourceRoot":"","sources":["../../../src/core/type-relation-checker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type-relation-checker.js","sourceRoot":"","sources":["../../../src/core/type-relation-checker.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/types.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export interface DecoratorApplication {
|
|
|
26
26
|
* Use `@typespec/tspd` to generate an accurate signature from the `extern dec`
|
|
27
27
|
*/
|
|
28
28
|
export interface DecoratorFunction {
|
|
29
|
-
(
|
|
29
|
+
(context: DecoratorContext, target: any, ...customArgs: any[]): DecoratorValidatorCallbacks | void;
|
|
30
30
|
namespace?: string;
|
|
31
31
|
}
|
|
32
32
|
export type ValidatorFn = () => readonly Diagnostic[];
|
|
@@ -84,7 +84,7 @@ export interface TemplatedTypeBase {
|
|
|
84
84
|
* - Value Constraints
|
|
85
85
|
*/
|
|
86
86
|
export type Entity = Type | Value | MixedParameterConstraint | IndeterminateEntity;
|
|
87
|
-
export type Type = BooleanLiteral | Decorator | Enum | EnumMember | FunctionParameter | Interface | IntrinsicType | Model | ModelProperty | Namespace | NumericLiteral | Operation | Scalar | ScalarConstructor | StringLiteral | StringTemplate | StringTemplateSpan | TemplateParameter | Tuple | Union | UnionVariant;
|
|
87
|
+
export type Type = BooleanLiteral | Decorator | FunctionType | Enum | EnumMember | FunctionParameter | Interface | IntrinsicType | Model | ModelProperty | Namespace | NumericLiteral | Operation | Scalar | ScalarConstructor | StringLiteral | StringTemplate | StringTemplateSpan | TemplateParameter | Tuple | Union | UnionVariant;
|
|
88
88
|
export type StdTypes = {
|
|
89
89
|
Array: Model;
|
|
90
90
|
Record: Model;
|
|
@@ -206,7 +206,7 @@ export interface ModelProperty extends BaseType, DecoratedType {
|
|
|
206
206
|
defaultValue?: Value;
|
|
207
207
|
model?: Model;
|
|
208
208
|
}
|
|
209
|
-
export type Value = ScalarValue | NumericValue | StringValue | BooleanValue | ObjectValue | ArrayValue | EnumValue | NullValue;
|
|
209
|
+
export type Value = ScalarValue | NumericValue | StringValue | BooleanValue | ObjectValue | ArrayValue | EnumValue | NullValue | FunctionValue;
|
|
210
210
|
interface BaseValue {
|
|
211
211
|
readonly entityKind: "Value";
|
|
212
212
|
readonly valueKind: string;
|
|
@@ -406,6 +406,12 @@ export interface Namespace extends BaseType, DecoratedType {
|
|
|
406
406
|
* Order is implementation-defined and may change.
|
|
407
407
|
*/
|
|
408
408
|
decoratorDeclarations: Map<string, Decorator>;
|
|
409
|
+
/**
|
|
410
|
+
* The functions declared in the namespace.
|
|
411
|
+
*
|
|
412
|
+
* Order is implementation-defined and may change.
|
|
413
|
+
*/
|
|
414
|
+
functionDeclarations: Map<string, FunctionValue>;
|
|
409
415
|
}
|
|
410
416
|
export type LiteralType = StringLiteral | NumericLiteral | BooleanLiteral;
|
|
411
417
|
export interface StringLiteral extends BaseType {
|
|
@@ -487,25 +493,110 @@ export interface Decorator extends BaseType {
|
|
|
487
493
|
namespace: Namespace;
|
|
488
494
|
target: MixedFunctionParameter;
|
|
489
495
|
parameters: MixedFunctionParameter[];
|
|
490
|
-
implementation: (...args: unknown[]) => void;
|
|
496
|
+
implementation: (ctx: DecoratorContext, target: Type, ...args: unknown[]) => void;
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* The type of a Function in TypeSpec.
|
|
500
|
+
*/
|
|
501
|
+
export interface FunctionType extends BaseType {
|
|
502
|
+
kind: "FunctionType";
|
|
503
|
+
/**
|
|
504
|
+
* The parameter constraints of the function.
|
|
505
|
+
*/
|
|
506
|
+
parameters: MixedFunctionParameter[];
|
|
507
|
+
/**
|
|
508
|
+
* The return type constraint of the function.
|
|
509
|
+
*/
|
|
510
|
+
returnType: MixedParameterConstraint;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* A function (`fn`) declared in the TypeSpec program.
|
|
514
|
+
*
|
|
515
|
+
* By default, function values have very restrictive types, where the parameters have type `never`, and the return type is `unknown`.
|
|
516
|
+
*
|
|
517
|
+
* To call a function, you must assert the type of the parameters. For example, if you have a `FunctionValue` that represents
|
|
518
|
+
* the following TypeSpec function:
|
|
519
|
+
*
|
|
520
|
+
* ```tsp
|
|
521
|
+
* extern fn example(a: valueof string, b: valueof int32): valueof boolean;
|
|
522
|
+
* ```
|
|
523
|
+
*
|
|
524
|
+
* You can assert the parameter types in TypeScript like this:
|
|
525
|
+
*
|
|
526
|
+
* ```ts
|
|
527
|
+
* const exampleFn: FunctionValue = ...; // however you obtain a reference to the function value, it will be strictly typed.
|
|
528
|
+
*
|
|
529
|
+
* const assertedExampleFn = exampleFn as FunctionValue<[a: string, b: number], boolean>;
|
|
530
|
+
*
|
|
531
|
+
* // Now you can call assertedExampleFn with the correct types:
|
|
532
|
+
* ctx.callFunction(assertedExampleFn.implementation, "hello", 10);
|
|
533
|
+
* ```
|
|
534
|
+
*/
|
|
535
|
+
export interface FunctionValue<Parameters extends unknown[] = never[], ReturnType = unknown> extends BaseValue {
|
|
536
|
+
valueKind: "Function";
|
|
537
|
+
node?: FunctionDeclarationStatementNode;
|
|
538
|
+
/**
|
|
539
|
+
* The function's name as declared in the TypeSpec source, if any.
|
|
540
|
+
*/
|
|
541
|
+
name?: string;
|
|
542
|
+
/**
|
|
543
|
+
* The namespace in which this function was declared, if any.
|
|
544
|
+
*/
|
|
545
|
+
namespace?: Namespace;
|
|
546
|
+
/**
|
|
547
|
+
* The parameters of the function.
|
|
548
|
+
*/
|
|
549
|
+
parameters: MixedFunctionParameter[];
|
|
550
|
+
/**
|
|
551
|
+
* The return type constraint of the function.
|
|
552
|
+
*/
|
|
553
|
+
returnType: MixedParameterConstraint;
|
|
554
|
+
/**
|
|
555
|
+
* The JavaScript implementation of the function.
|
|
556
|
+
*
|
|
557
|
+
* WARNING: Calling the implementation function directly is dangerous. It assumes that you have marshaled the arguments
|
|
558
|
+
* to JS values correctly and that you will handle the return value appropriately. Constructing the correct context
|
|
559
|
+
* is your responsibility (use the `call` methods of `FunctionContext` or `DecoratorContext` to create the context for you).
|
|
560
|
+
*
|
|
561
|
+
* @param ctx - The FunctionContext providing information about the call site.
|
|
562
|
+
* @param args - The arguments passed to the function.
|
|
563
|
+
* @returns The return value of the function, which is arbitrary.
|
|
564
|
+
*/
|
|
565
|
+
implementation: (ctx: FunctionContext, ...args: Parameters) => ReturnType;
|
|
491
566
|
}
|
|
492
567
|
export interface FunctionParameterBase extends BaseType {
|
|
493
568
|
kind: "FunctionParameter";
|
|
494
569
|
node?: FunctionParameterNode;
|
|
570
|
+
/**
|
|
571
|
+
* The name of this function parameter, as declared in the TypeSpec source.
|
|
572
|
+
*/
|
|
495
573
|
name: string;
|
|
574
|
+
/**
|
|
575
|
+
* Whether this parameter is optional.
|
|
576
|
+
*/
|
|
496
577
|
optional: boolean;
|
|
578
|
+
/**
|
|
579
|
+
* Whether this parameter is a rest parameter (i.e., `...args`).
|
|
580
|
+
*/
|
|
497
581
|
rest: boolean;
|
|
498
582
|
}
|
|
499
|
-
/**
|
|
583
|
+
/**
|
|
584
|
+
* A function parameter with a mixed parameter constraint that could accept a value.
|
|
585
|
+
*/
|
|
500
586
|
export interface MixedFunctionParameter extends FunctionParameterBase {
|
|
501
587
|
mixed: true;
|
|
502
588
|
type: MixedParameterConstraint;
|
|
503
589
|
}
|
|
504
|
-
/**
|
|
590
|
+
/**
|
|
591
|
+
* A function parameter with a simple type constraint.
|
|
592
|
+
*/
|
|
505
593
|
export interface SignatureFunctionParameter extends FunctionParameterBase {
|
|
506
594
|
mixed: false;
|
|
507
595
|
type: Type;
|
|
508
596
|
}
|
|
597
|
+
/**
|
|
598
|
+
* A function parameter.
|
|
599
|
+
*/
|
|
509
600
|
export type FunctionParameter = MixedFunctionParameter | SignatureFunctionParameter;
|
|
510
601
|
export interface Sym {
|
|
511
602
|
readonly flags: SymbolFlags;
|
|
@@ -794,7 +885,8 @@ export declare enum SyntaxKind {
|
|
|
794
885
|
ArrayLiteral = 66,
|
|
795
886
|
ConstStatement = 67,
|
|
796
887
|
CallExpression = 68,
|
|
797
|
-
ScalarConstructor = 69
|
|
888
|
+
ScalarConstructor = 69,
|
|
889
|
+
FunctionTypeExpression = 70
|
|
798
890
|
}
|
|
799
891
|
export declare const enum NodeFlags {
|
|
800
892
|
None = 0,
|
|
@@ -947,7 +1039,10 @@ export interface DirectiveExpressionNode extends BaseNode {
|
|
|
947
1039
|
readonly arguments: readonly DirectiveArgument[];
|
|
948
1040
|
}
|
|
949
1041
|
export type DirectiveArgument = StringLiteralNode | IdentifierNode;
|
|
950
|
-
export type Expression = ArrayExpressionNode | MemberExpressionNode | ModelExpressionNode | ObjectLiteralNode | ArrayLiteralNode | TupleExpressionNode | UnionExpressionNode | IntersectionExpressionNode | TypeReferenceNode | ValueOfExpressionNode | TypeOfExpressionNode | CallExpressionNode | StringLiteralNode | NumericLiteralNode | BooleanLiteralNode | StringTemplateExpressionNode | VoidKeywordNode | NeverKeywordNode | AnyKeywordNode;
|
|
1042
|
+
export type Expression = ArrayExpressionNode | MemberExpressionNode | ModelExpressionNode | ObjectLiteralNode | ArrayLiteralNode | TupleExpressionNode | UnionExpressionNode | IntersectionExpressionNode | TypeReferenceNode | ValueOfExpressionNode | TypeOfExpressionNode | CallExpressionNode | StringLiteralNode | NumericLiteralNode | BooleanLiteralNode | StringTemplateExpressionNode | VoidKeywordNode | NeverKeywordNode | AnyKeywordNode | FunctionTypeExpressionNode;
|
|
1043
|
+
export type ParenthesizedExpression = Expression & {
|
|
1044
|
+
readonly parenthesized: true;
|
|
1045
|
+
};
|
|
951
1046
|
export type ReferenceExpression = TypeReferenceNode | MemberExpressionNode | IdentifierNode | VoidKeywordNode | NeverKeywordNode;
|
|
952
1047
|
export interface MemberExpressionNode extends BaseNode {
|
|
953
1048
|
readonly kind: SyntaxKind.MemberExpression;
|
|
@@ -1234,10 +1329,11 @@ export interface FunctionParameterNode extends BaseNode {
|
|
|
1234
1329
|
readonly rest: boolean;
|
|
1235
1330
|
}
|
|
1236
1331
|
/**
|
|
1237
|
-
*
|
|
1332
|
+
* The syntax representing a function value declaration.
|
|
1333
|
+
*
|
|
1238
1334
|
* @example
|
|
1239
1335
|
* ```typespec
|
|
1240
|
-
* extern fn camelCase(value:
|
|
1336
|
+
* extern fn camelCase(value: valueof string): valueof string;
|
|
1241
1337
|
* ```
|
|
1242
1338
|
*/
|
|
1243
1339
|
export interface FunctionDeclarationStatementNode extends BaseNode, DeclarationNode {
|
|
@@ -1248,6 +1344,19 @@ export interface FunctionDeclarationStatementNode extends BaseNode, DeclarationN
|
|
|
1248
1344
|
readonly returnType?: Expression;
|
|
1249
1345
|
readonly parent?: TypeSpecScriptNode | NamespaceStatementNode;
|
|
1250
1346
|
}
|
|
1347
|
+
/**
|
|
1348
|
+
* The syntax representing a function type expression.
|
|
1349
|
+
*
|
|
1350
|
+
* @example
|
|
1351
|
+
* ```typespec
|
|
1352
|
+
* fn(value: valueof string) => valueof string
|
|
1353
|
+
* ```
|
|
1354
|
+
*/
|
|
1355
|
+
export interface FunctionTypeExpressionNode extends BaseNode {
|
|
1356
|
+
readonly kind: SyntaxKind.FunctionTypeExpression;
|
|
1357
|
+
readonly parameters: FunctionParameterNode[];
|
|
1358
|
+
readonly returnType?: Expression;
|
|
1359
|
+
}
|
|
1251
1360
|
export interface IdentifierContext {
|
|
1252
1361
|
kind: IdentifierKind;
|
|
1253
1362
|
node: Node;
|
|
@@ -1569,9 +1678,15 @@ type ListenerForType<T extends Type> = T extends Type ? {
|
|
|
1569
1678
|
[k in Uncapitalize<T["kind"]> | exitListener<T["kind"]>]?: TypeListener<T>;
|
|
1570
1679
|
} : never;
|
|
1571
1680
|
export type TypeListeners = UnionToIntersection<ListenerForType<Type>>;
|
|
1681
|
+
type ValueListener<V> = (context: V) => ListenerFlow | undefined | void;
|
|
1682
|
+
type exitValueListener<T extends string | number | symbol> = T extends string ? `exit${T}` : T;
|
|
1683
|
+
type ListenerForValue<V extends Value> = V extends Value ? {
|
|
1684
|
+
[k in Uncapitalize<V["valueKind"]> | exitValueListener<V["valueKind"]>]?: ValueListener<V>;
|
|
1685
|
+
} : never;
|
|
1686
|
+
export type ValueListeners = UnionToIntersection<ListenerForValue<Value>>;
|
|
1572
1687
|
export type SemanticNodeListener = {
|
|
1573
1688
|
root?: (context: Program) => void | undefined;
|
|
1574
|
-
} & TypeListeners;
|
|
1689
|
+
} & TypeListeners & ValueListeners;
|
|
1575
1690
|
export type DiagnosticReportWithoutTarget<T extends {
|
|
1576
1691
|
[code: string]: DiagnosticMessages;
|
|
1577
1692
|
}, C extends keyof T, M extends keyof T[C] = "default"> = {
|
|
@@ -1695,6 +1810,11 @@ export interface DecoratorImplementations {
|
|
|
1695
1810
|
readonly [name: string]: DecoratorFunction;
|
|
1696
1811
|
};
|
|
1697
1812
|
}
|
|
1813
|
+
export interface FunctionImplementations {
|
|
1814
|
+
readonly [namespace: string]: {
|
|
1815
|
+
readonly [name: string]: (ctx: FunctionContext, ...parameters: never[]) => unknown;
|
|
1816
|
+
};
|
|
1817
|
+
}
|
|
1698
1818
|
export interface PackageFlags {
|
|
1699
1819
|
}
|
|
1700
1820
|
export interface LinterDefinition {
|
|
@@ -1788,27 +1908,71 @@ export interface TypeSpecLibrary<T extends {
|
|
|
1788
1908
|
* Get the options for the onEmit of this library.
|
|
1789
1909
|
*/
|
|
1790
1910
|
export type EmitOptionsFor<C> = C extends TypeSpecLibrary<infer _T, infer E> ? E : never;
|
|
1791
|
-
|
|
1911
|
+
/**
|
|
1912
|
+
* Base context passed to JavaScript implementations of invocable constructs (decorators, functions).
|
|
1913
|
+
*/
|
|
1914
|
+
export interface InvocationContext {
|
|
1915
|
+
/**
|
|
1916
|
+
* The current TypeSpec Program.
|
|
1917
|
+
*/
|
|
1792
1918
|
program: Program;
|
|
1793
1919
|
/**
|
|
1794
|
-
*
|
|
1920
|
+
* Helper to get the target for a given argument index.
|
|
1921
|
+
*
|
|
1922
|
+
* @param argIndex Argument index in the decorator call.
|
|
1923
|
+
* @example
|
|
1924
|
+
* ```tsp
|
|
1925
|
+
* @dec("hello", 123)
|
|
1926
|
+
* model MyModel { }
|
|
1927
|
+
* ```
|
|
1928
|
+
* - `getArgumentTarget(0)` -> target for "hello"
|
|
1929
|
+
* - `getArgumentTarget(1)` -> target for 123
|
|
1795
1930
|
*/
|
|
1796
|
-
|
|
1931
|
+
getArgumentTarget(argIndex: number): DiagnosticTarget | undefined;
|
|
1797
1932
|
/**
|
|
1798
|
-
*
|
|
1799
|
-
*
|
|
1800
|
-
* @
|
|
1801
|
-
*
|
|
1802
|
-
*
|
|
1933
|
+
* Helper to call a decorator implementation from within another decorator implementation.
|
|
1934
|
+
*
|
|
1935
|
+
* @param decorator The decorator function to call.
|
|
1936
|
+
* @param target The target to which the decorator is applied.
|
|
1937
|
+
* @param args Arguments to pass to the decorator.
|
|
1803
1938
|
*/
|
|
1804
|
-
|
|
1939
|
+
callDecorator<T extends Type, A extends any[], R>(decorator: (context: DecoratorContext, target: T, ...args: A) => R, target: T, ...args: A): R;
|
|
1805
1940
|
/**
|
|
1806
|
-
* Helper to call
|
|
1807
|
-
* @param
|
|
1808
|
-
* @param args
|
|
1941
|
+
* Helper to call a function implementation from within a decorator implementation.
|
|
1942
|
+
* @param func The function implementation to call.
|
|
1943
|
+
* @param args Arguments to pass to the function.
|
|
1944
|
+
*/
|
|
1945
|
+
callFunction<A extends any[], R>(func: (context: FunctionContext, ...args: A) => R, ...args: A): R;
|
|
1946
|
+
}
|
|
1947
|
+
/**
|
|
1948
|
+
* Context passed to decorator implementations.
|
|
1949
|
+
*/
|
|
1950
|
+
export interface DecoratorContext extends InvocationContext {
|
|
1951
|
+
program: Program;
|
|
1952
|
+
/**
|
|
1953
|
+
* The diagnostic target for the decorator application.
|
|
1954
|
+
*/
|
|
1955
|
+
decoratorTarget: DiagnosticTarget;
|
|
1956
|
+
/**
|
|
1957
|
+
* Helper to call a decorator implementation from within another decorator implementation.
|
|
1958
|
+
*
|
|
1959
|
+
* This function is identical to `callDecorator`.
|
|
1960
|
+
*
|
|
1961
|
+
* @param decorator The decorator function to call.
|
|
1962
|
+
* @param target The target to which the decorator is applied.
|
|
1963
|
+
* @param args Arguments to pass to the decorator.
|
|
1809
1964
|
*/
|
|
1810
1965
|
call<T extends Type, A extends any[], R>(decorator: (context: DecoratorContext, target: T, ...args: A) => R, target: T, ...args: A): R;
|
|
1811
1966
|
}
|
|
1967
|
+
/**
|
|
1968
|
+
* Context passed to function implementations.
|
|
1969
|
+
*/
|
|
1970
|
+
export interface FunctionContext extends InvocationContext {
|
|
1971
|
+
/**
|
|
1972
|
+
* The function call diagnostic target.
|
|
1973
|
+
*/
|
|
1974
|
+
functionCallTarget: DiagnosticTarget;
|
|
1975
|
+
}
|
|
1812
1976
|
export interface EmitContext<TOptions extends object = Record<string, never>> {
|
|
1813
1977
|
/**
|
|
1814
1978
|
* TypeSpec Program.
|