@typespec/compiler 0.45.0-dev.2 → 0.45.0-dev.20

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 (67) hide show
  1. package/dist/core/checker.d.ts.map +1 -1
  2. package/dist/core/checker.js +90 -23
  3. package/dist/core/checker.js.map +1 -1
  4. package/dist/core/cli/args.d.ts +1 -1
  5. package/dist/core/cli/args.d.ts.map +1 -1
  6. package/dist/core/cli/args.js +10 -8
  7. package/dist/core/cli/args.js.map +1 -1
  8. package/dist/core/cli/cli.js +13 -6
  9. package/dist/core/cli/cli.js.map +1 -1
  10. package/dist/core/decorator-utils.js +1 -1
  11. package/dist/core/decorator-utils.js.map +1 -1
  12. package/dist/core/entrypoint-resolution.d.ts +10 -0
  13. package/dist/core/entrypoint-resolution.d.ts.map +1 -0
  14. package/dist/core/entrypoint-resolution.js +39 -0
  15. package/dist/core/entrypoint-resolution.js.map +1 -0
  16. package/dist/core/fetch.d.ts +11 -0
  17. package/dist/core/fetch.d.ts.map +1 -0
  18. package/dist/core/fetch.js +38 -0
  19. package/dist/core/fetch.js.map +1 -0
  20. package/dist/core/messages.d.ts +7 -25
  21. package/dist/core/messages.d.ts.map +1 -1
  22. package/dist/core/messages.js +2 -8
  23. package/dist/core/messages.js.map +1 -1
  24. package/dist/core/module-resolver.d.ts +1 -0
  25. package/dist/core/module-resolver.d.ts.map +1 -1
  26. package/dist/core/module-resolver.js.map +1 -1
  27. package/dist/core/node-host.js +2 -2
  28. package/dist/core/node-host.js.map +1 -1
  29. package/dist/core/parser.d.ts.map +1 -1
  30. package/dist/core/parser.js +4 -3
  31. package/dist/core/parser.js.map +1 -1
  32. package/dist/core/program.d.ts.map +1 -1
  33. package/dist/core/program.js +4 -54
  34. package/dist/core/program.js.map +1 -1
  35. package/dist/core/type-utils.d.ts +4 -1
  36. package/dist/core/type-utils.d.ts.map +1 -1
  37. package/dist/core/type-utils.js +17 -0
  38. package/dist/core/type-utils.js.map +1 -1
  39. package/dist/core/types.d.ts +3 -1
  40. package/dist/core/types.d.ts.map +1 -1
  41. package/dist/core/types.js.map +1 -1
  42. package/dist/formatter/parser.js +1 -1
  43. package/dist/formatter/parser.js.map +1 -1
  44. package/dist/formatter/print/comment-handler.js +1 -0
  45. package/dist/formatter/print/comment-handler.js.map +1 -1
  46. package/dist/init/init.d.ts.map +1 -1
  47. package/dist/init/init.js +9 -7
  48. package/dist/init/init.js.map +1 -1
  49. package/dist/lib/decorators.d.ts +25 -0
  50. package/dist/lib/decorators.d.ts.map +1 -1
  51. package/dist/lib/decorators.js +37 -10
  52. package/dist/lib/decorators.js.map +1 -1
  53. package/dist/manifest.js +1 -1
  54. package/dist/server/completion.js +2 -2
  55. package/dist/server/completion.js.map +1 -1
  56. package/dist/server/serverlib.d.ts.map +1 -1
  57. package/dist/server/serverlib.js +141 -71
  58. package/dist/server/serverlib.js.map +1 -1
  59. package/dist/server/type-details.d.ts +1 -10
  60. package/dist/server/type-details.d.ts.map +1 -1
  61. package/dist/server/type-details.js +43 -27
  62. package/dist/server/type-details.js.map +1 -1
  63. package/dist/server/type-signature.js +19 -3
  64. package/dist/server/type-signature.js.map +1 -1
  65. package/lib/decorators.tsp +7 -2
  66. package/lib/lib.tsp +15 -3
  67. package/package.json +1 -2
@@ -12,7 +12,7 @@ import { SyntaxKind, } from "../core/types.js";
12
12
  import { doIO, getNormalizedRealPath, getSourceFileKindFromExt, loadFile, resolveTspMain, } from "../core/util.js";
13
13
  import { resolveCompletion } from "./completion.js";
14
14
  import { getSymbolStructure } from "./symbol-structure.js";
15
- import { getParameterDocumentation, getTypeDetails } from "./type-details.js";
15
+ import { getParameterDocumentation, getSymbolDetails, getTemplateParameterDocumentation, } from "./type-details.js";
16
16
  export var SemanticTokenKind;
17
17
  (function (SemanticTokenKind) {
18
18
  SemanticTokenKind[SemanticTokenKind["Namespace"] = 0] = "Namespace";
@@ -390,12 +390,10 @@ export function createServer(host) {
390
390
  }
391
391
  async function getHover(params) {
392
392
  const docString = await compile(params.textDocument, (program, document, file) => {
393
- var _a;
394
393
  const id = getNodeAtPosition(file, document.offsetAt(params.position));
395
394
  const sym = (id === null || id === void 0 ? void 0 : id.kind) === SyntaxKind.Identifier ? program.checker.resolveIdentifier(id) : undefined;
396
395
  if (sym) {
397
- const type = (_a = sym.type) !== null && _a !== void 0 ? _a : program.checker.getTypeForNode(sym.declarations[0]);
398
- return getTypeDetails(program, type);
396
+ return getSymbolDetails(program, sym);
399
397
  }
400
398
  return undefined;
401
399
  });
@@ -409,62 +407,113 @@ export function createServer(host) {
409
407
  }
410
408
  async function getSignatureHelp(params) {
411
409
  return await compile(params.textDocument, (program, document, file) => {
412
- const nodeAtPosition = getNodeAtPosition(file, document.offsetAt(params.position));
413
- const data = nodeAtPosition && findDecoratorOrParameter(nodeAtPosition);
410
+ const data = getSignatureHelpNodeAtPosition(file, document.offsetAt(params.position));
414
411
  if (data === undefined) {
415
412
  return undefined;
416
413
  }
417
414
  const { node, argumentIndex } = data;
418
- const sym = program.checker.resolveIdentifier(node.target.kind === SyntaxKind.MemberExpression ? node.target.id : node.target);
419
- const decoratorDeclNode = sym === null || sym === void 0 ? void 0 : sym.declarations.find((x) => x.kind === SyntaxKind.DecoratorDeclarationStatement);
420
- if (decoratorDeclNode === undefined) {
421
- return undefined;
415
+ switch (node.kind) {
416
+ case SyntaxKind.TypeReference:
417
+ return getSignatureHelpForTemplate(program, node, argumentIndex);
418
+ case SyntaxKind.DecoratorExpression:
419
+ case SyntaxKind.AugmentDecoratorStatement:
420
+ return getSignatureHelpForDecorator(program, node, argumentIndex);
421
+ default:
422
+ const _assertNever = node;
423
+ compilerAssert(false, "Unreachable");
422
424
  }
423
- const type = program.checker.getTypeForNode(decoratorDeclNode);
424
- compilerAssert(type.kind === "Decorator", "Expected type to be a decorator.");
425
- const parameterDocs = getParameterDocumentation(program, type);
426
- let labelPrefix = "";
427
- const parameters = [];
428
- if (node.kind === SyntaxKind.AugmentDecoratorStatement) {
429
- const targetType = decoratorDeclNode.target.type
430
- ? program.checker.getTypeForNode(decoratorDeclNode.target.type)
431
- : undefined;
432
- parameters.push({
433
- label: `${decoratorDeclNode.target.id.sv}: ${targetType ? getTypeName(targetType) : "unknown"}`,
434
- });
435
- labelPrefix = "@";
425
+ });
426
+ }
427
+ function getSignatureHelpForTemplate(program, node, argumentIndex) {
428
+ const sym = program.checker.resolveIdentifier(node.target.kind === SyntaxKind.MemberExpression ? node.target.id : node.target);
429
+ const templateDeclNode = sym === null || sym === void 0 ? void 0 : sym.declarations[0];
430
+ if (!templateDeclNode ||
431
+ !("templateParameters" in templateDeclNode) ||
432
+ templateDeclNode.templateParameters.length === 0) {
433
+ return undefined;
434
+ }
435
+ const parameterDocs = getTemplateParameterDocumentation(templateDeclNode);
436
+ const parameters = templateDeclNode.templateParameters.map((x) => {
437
+ const info = { label: x.id.sv };
438
+ const doc = parameterDocs.get(x.id.sv);
439
+ if (doc) {
440
+ info.documentation = { kind: MarkupKind.Markdown, value: doc };
436
441
  }
437
- parameters.push(...type.parameters.map((x) => {
438
- const info = {
439
- // prettier-ignore
440
- label: `${x.rest ? "..." : ""}${x.name}${x.optional ? "?" : ""}: ${getTypeName(x.type)}`,
441
- };
442
- const doc = parameterDocs.get(x.name);
443
- if (doc) {
444
- info.documentation = { kind: MarkupKind.Markdown, value: doc };
445
- }
446
- return info;
447
- }));
448
- const help = {
449
- signatures: [
450
- {
451
- label: `${labelPrefix}${type.name}(${parameters.map((x) => x.label).join(", ")})`,
452
- parameters,
453
- activeParameter: Math.min(parameters.length - 1, argumentIndex),
454
- },
455
- ],
456
- activeSignature: 0,
457
- activeParameter: 0,
458
- };
459
- const doc = getTypeDetails(program, type, {
460
- includeSignature: false,
461
- includeParameterTags: false,
442
+ return info;
443
+ });
444
+ const help = {
445
+ signatures: [
446
+ {
447
+ label: `${sym.name}<${parameters.map((x) => x.label).join(", ")}>`,
448
+ parameters,
449
+ activeParameter: Math.min(parameters.length - 1, argumentIndex),
450
+ },
451
+ ],
452
+ activeSignature: 0,
453
+ activeParameter: 0,
454
+ };
455
+ const doc = getSymbolDetails(program, sym, {
456
+ includeSignature: false,
457
+ includeParameterTags: false,
458
+ });
459
+ if (doc) {
460
+ help.signatures[0].documentation = { kind: MarkupKind.Markdown, value: doc };
461
+ }
462
+ return help;
463
+ }
464
+ function getSignatureHelpForDecorator(program, node, argumentIndex) {
465
+ const sym = program.checker.resolveIdentifier(node.target.kind === SyntaxKind.MemberExpression ? node.target.id : node.target);
466
+ if (!sym) {
467
+ return undefined;
468
+ }
469
+ const decoratorDeclNode = sym.declarations.find((x) => x.kind === SyntaxKind.DecoratorDeclarationStatement);
470
+ if (decoratorDeclNode === undefined) {
471
+ return undefined;
472
+ }
473
+ const type = program.checker.getTypeForNode(decoratorDeclNode);
474
+ compilerAssert(type.kind === "Decorator", "Expected type to be a decorator.");
475
+ const parameterDocs = getParameterDocumentation(program, type);
476
+ let labelPrefix = "";
477
+ const parameters = [];
478
+ if (node.kind === SyntaxKind.AugmentDecoratorStatement) {
479
+ const targetType = decoratorDeclNode.target.type
480
+ ? program.checker.getTypeForNode(decoratorDeclNode.target.type)
481
+ : undefined;
482
+ parameters.push({
483
+ label: `${decoratorDeclNode.target.id.sv}: ${targetType ? getTypeName(targetType) : "unknown"}`,
462
484
  });
485
+ labelPrefix = "@";
486
+ }
487
+ parameters.push(...type.parameters.map((x) => {
488
+ const info = {
489
+ // prettier-ignore
490
+ label: `${x.rest ? "..." : ""}${x.name}${x.optional ? "?" : ""}: ${getTypeName(x.type)}`,
491
+ };
492
+ const doc = parameterDocs.get(x.name);
463
493
  if (doc) {
464
- help.signatures[0].documentation = { kind: MarkupKind.Markdown, value: doc };
494
+ info.documentation = { kind: MarkupKind.Markdown, value: doc };
465
495
  }
466
- return help;
496
+ return info;
497
+ }));
498
+ const help = {
499
+ signatures: [
500
+ {
501
+ label: `${labelPrefix}${type.name}(${parameters.map((x) => x.label).join(", ")})`,
502
+ parameters,
503
+ activeParameter: Math.min(parameters.length - 1, argumentIndex),
504
+ },
505
+ ],
506
+ activeSignature: 0,
507
+ activeParameter: 0,
508
+ };
509
+ const doc = getSymbolDetails(program, sym, {
510
+ includeSignature: false,
511
+ includeParameterTags: false,
467
512
  });
513
+ if (doc) {
514
+ help.signatures[0].documentation = { kind: MarkupKind.Markdown, value: doc };
515
+ }
516
+ return help;
468
517
  }
469
518
  async function formatDocument(params) {
470
519
  const document = host.getOpenDocumentByURL(params.textDocument.uri);
@@ -986,31 +1035,52 @@ export function createServer(host) {
986
1035
  }
987
1036
  }
988
1037
  }
989
- function findDecoratorOrParameter(node) {
990
- var _a, _b, _c;
991
- if (node.kind === SyntaxKind.DecoratorExpression) {
992
- return { node, argumentIndex: node.arguments.length };
1038
+ function getSignatureHelpNodeAtPosition(file, position) {
1039
+ var _a;
1040
+ const node = getNodeAtPosition(file, position);
1041
+ if (!node) {
1042
+ return undefined;
993
1043
  }
994
- if (node.kind === SyntaxKind.AugmentDecoratorStatement) {
995
- return { node, argumentIndex: node.arguments.length + 1 };
1044
+ // Edge case: If the node itself is decorator or type reference and we're
1045
+ // at a position where a type argument can occur, then we are at the last
1046
+ // argument. The syntax tree will not have a missing identifier for the
1047
+ // final argument as the recovery will be to assume there was a trailing
1048
+ // delimiter. For example: @dec(x,y,|) or Template<x,y,|>.
1049
+ switch (node.kind) {
1050
+ case SyntaxKind.DecoratorExpression:
1051
+ case SyntaxKind.TypeReference:
1052
+ if (position > node.target.end) {
1053
+ return { node, argumentIndex: node.arguments.length };
1054
+ }
1055
+ break;
1056
+ case SyntaxKind.AugmentDecoratorStatement:
1057
+ if (position > node.targetType.end) {
1058
+ return { node, argumentIndex: node.arguments.length + 1 };
1059
+ }
1060
+ break;
996
1061
  }
997
- let current = node;
998
- while (current) {
999
- if (((_a = current.parent) === null || _a === void 0 ? void 0 : _a.kind) === SyntaxKind.DecoratorExpression) {
1000
- return {
1001
- node: current.parent,
1002
- argumentIndex: current.parent.arguments.indexOf(current),
1003
- };
1062
+ // Normal case: Check if the node is parented by a type reference or
1063
+ // decorator and is one of its parent's arguments.
1064
+ for (let current = node; current; current = current.parent) {
1065
+ let argumentIndex = -1;
1066
+ let signatureNode;
1067
+ switch ((_a = current.parent) === null || _a === void 0 ? void 0 : _a.kind) {
1068
+ case SyntaxKind.TypeReference:
1069
+ case SyntaxKind.DecoratorExpression:
1070
+ signatureNode = current.parent;
1071
+ argumentIndex = current.parent.arguments.indexOf(current);
1072
+ break;
1073
+ case SyntaxKind.AugmentDecoratorStatement:
1074
+ signatureNode = current.parent;
1075
+ argumentIndex =
1076
+ current === current.parent.targetType
1077
+ ? 0
1078
+ : current.parent.arguments.indexOf(current) + 1;
1079
+ break;
1004
1080
  }
1005
- if (((_b = current.parent) === null || _b === void 0 ? void 0 : _b.kind) === SyntaxKind.AugmentDecoratorStatement) {
1006
- return {
1007
- node: current.parent,
1008
- argumentIndex: current === ((_c = current.parent) === null || _c === void 0 ? void 0 : _c.targetType)
1009
- ? 0
1010
- : current.parent.arguments.indexOf(current) + 1,
1011
- };
1081
+ if (signatureNode && argumentIndex >= 0) {
1082
+ return { node: signatureNode, argumentIndex };
1012
1083
  }
1013
- current = current.parent;
1014
1084
  }
1015
1085
  return undefined;
1016
1086
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serverlib.js","sourceRoot":"","sources":["../../server/serverlib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverlib.js","sourceRoot":"","sources":["../../server/serverlib.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,2 @@
1
- import { Program, Type } from "../core/index.js";
2
- /**
3
- * Get the detailed documentation of a type.
4
- * @param program The program
5
- */
6
- export declare function getTypeDetails(program: Program, type: Type, options?: {
7
- includeSignature: boolean;
8
- includeParameterTags: boolean;
9
- }): string;
10
- export declare function getParameterDocumentation(program: Program, type: Type): Map<string, string>;
1
+ export {};
11
2
  //# sourceMappingURL=type-details.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-details.d.ts","sourceRoot":"","sources":["../../server/type-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,OAAO,EAAc,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIzF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO;;;CAGN,GACA,MAAM,CA2BR;AAmBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAU3F"}
1
+ {"version":3,"file":"type-details.d.ts","sourceRoot":"","sources":["../../server/type-details.ts"],"names":[],"mappings":""}
@@ -1,54 +1,57 @@
1
- import { compilerAssert, SyntaxKind } from "../core/index.js";
2
- import { getDoc } from "../lib/decorators.js";
3
- import { getTypeSignature } from "./type-signature.js";
1
+ import { compilerAssert, getDocData, SyntaxKind, } from "../core/index.js";
2
+ import { getSymbolSignature } from "./type-signature.js";
4
3
  /**
5
- * Get the detailed documentation of a type.
4
+ * Get the detailed documentation for a symbol.
6
5
  * @param program The program
6
+ * @internal
7
7
  */
8
- export function getTypeDetails(program, type, options = {
8
+ export function getSymbolDetails(program, symbol, options = {
9
9
  includeSignature: true,
10
10
  includeParameterTags: true,
11
11
  }) {
12
- // BUG: https://github.com/microsoft/typespec/issues/1348
13
- // We've already resolved to a Type and lost the alias node so we don't show doc comments on aliases or alias signatures, currently.
14
- var _a, _b;
15
- if (type.kind === "Intrinsic") {
16
- return "";
17
- }
12
+ var _a;
18
13
  const lines = [];
19
14
  if (options.includeSignature) {
20
- lines.push(getTypeSignature(type));
15
+ lines.push(getSymbolSignature(program, symbol));
21
16
  }
22
- const doc = getTypeDocumentation(program, type);
17
+ const doc = getSymbolDocumentation(program, symbol);
23
18
  if (doc) {
24
19
  lines.push(doc);
25
20
  }
26
- for (const doc of (_b = (_a = type === null || type === void 0 ? void 0 : type.node) === null || _a === void 0 ? void 0 : _a.docs) !== null && _b !== void 0 ? _b : []) {
27
- for (const tag of doc.tags) {
28
- if (tag.tagName.sv === "param" && !options.includeParameterTags) {
29
- continue;
21
+ for (const node of symbol.declarations) {
22
+ for (const doc of (_a = node === null || node === void 0 ? void 0 : node.docs) !== null && _a !== void 0 ? _a : []) {
23
+ for (const tag of doc.tags) {
24
+ if (!options.includeParameterTags &&
25
+ (tag.kind === SyntaxKind.DocParamTag || tag.kind === SyntaxKind.DocTemplateTag)) {
26
+ continue;
27
+ }
28
+ lines.push(
29
+ //prettier-ignore
30
+ `_@${tag.tagName.sv}_${"paramName" in tag ? ` \`${tag.paramName.sv}\`` : ""} —\n${getDocContent(tag.content)}`);
30
31
  }
31
- lines.push(
32
- //prettier-ignore
33
- `_@${tag.tagName.sv}_${"paramName" in tag ? ` \`${tag.paramName.sv}\`` : ""} —\n${getDocContent(tag.content)}`);
34
32
  }
35
33
  }
36
34
  return lines.join("\n\n");
37
35
  }
38
- function getTypeDocumentation(program, type) {
36
+ function getSymbolDocumentation(program, symbol) {
39
37
  var _a, _b;
40
38
  const docs = [];
41
- // Add /** ... */ developer docs
42
- for (const d of (_b = (_a = type === null || type === void 0 ? void 0 : type.node) === null || _a === void 0 ? void 0 : _a.docs) !== null && _b !== void 0 ? _b : []) {
43
- docs.push(getDocContent(d.content));
39
+ for (const node of symbol.declarations) {
40
+ // Add /** ... */ developer docs
41
+ for (const d of (_a = node.docs) !== null && _a !== void 0 ? _a : []) {
42
+ docs.push(getDocContent(d.content));
43
+ }
44
44
  }
45
45
  // Add @doc(...) API docs
46
- const apiDocs = getDoc(program, type);
47
- if (apiDocs) {
48
- docs.push(apiDocs);
46
+ const type = (_b = symbol.type) !== null && _b !== void 0 ? _b : program.checker.getTypeForNode(symbol.declarations[0]);
47
+ const apiDocs = getDocData(program, type);
48
+ // The doc comment is already included above we don't want to duplicate
49
+ if (apiDocs && apiDocs.source === "@doc") {
50
+ docs.push(apiDocs.value);
49
51
  }
50
52
  return docs.join("\n\n");
51
53
  }
54
+ /** @internal */
52
55
  export function getParameterDocumentation(program, type) {
53
56
  var _a, _b;
54
57
  const map = new Map();
@@ -61,6 +64,19 @@ export function getParameterDocumentation(program, type) {
61
64
  }
62
65
  return map;
63
66
  }
67
+ /** @internal */
68
+ export function getTemplateParameterDocumentation(node) {
69
+ var _a;
70
+ const map = new Map();
71
+ for (const d of (_a = node === null || node === void 0 ? void 0 : node.docs) !== null && _a !== void 0 ? _a : []) {
72
+ for (const tag of d.tags) {
73
+ if (tag.kind === SyntaxKind.DocTemplateTag) {
74
+ map.set(tag.paramName.sv, getDocContent(tag.content));
75
+ }
76
+ }
77
+ }
78
+ return map;
79
+ }
64
80
  function getDocContent(content) {
65
81
  const docs = [];
66
82
  for (const node of content) {
@@ -1 +1 @@
1
- {"version":3,"file":"type-details.js","sourceRoot":"","sources":["../../server/type-details.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-details.js","sourceRoot":"","sources":["../../server/type-details.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,20 @@
1
1
  import { compilerAssert } from "../core/diagnostics.js";
2
2
  import { getTypeName, isStdNamespace } from "../core/helpers/type-name-utils.js";
3
+ import { getFullyQualifiedSymbolName } from "../core/type-utils.js";
4
+ import { SyntaxKind, } from "../core/types.js";
3
5
  import { printId } from "../formatter/print/printer.js";
4
6
  /** @internal */
5
- export function getTypeSignature(type) {
7
+ export function getSymbolSignature(program, sym) {
8
+ var _a;
9
+ const decl = sym.declarations[0];
10
+ switch (decl === null || decl === void 0 ? void 0 : decl.kind) {
11
+ case SyntaxKind.AliasStatement:
12
+ return fence(`alias ${getAliasSignature(decl)}`);
13
+ }
14
+ const type = (_a = sym.type) !== null && _a !== void 0 ? _a : program.checker.getTypeForNode(decl);
15
+ return getTypeSignature(type);
16
+ }
17
+ function getTypeSignature(type) {
6
18
  switch (type.kind) {
7
19
  case "Scalar":
8
20
  case "Enum":
@@ -25,7 +37,7 @@ export function getTypeSignature(type) {
25
37
  case "Number":
26
38
  return `(number)\n${fence(type.value.toString())}`;
27
39
  case "Intrinsic":
28
- return `(intrinsic)\n${fence(type.name)}`;
40
+ return "";
29
41
  case "FunctionParameter":
30
42
  return `(function parameter)\n${fence(getFunctionParameterSignature(type))}`;
31
43
  case "ModelProperty":
@@ -45,7 +57,6 @@ export function getTypeSignature(type) {
45
57
  default:
46
58
  const _assertNever = type;
47
59
  compilerAssert(false, "Unexpected type kind");
48
- return "";
49
60
  }
50
61
  }
51
62
  function getDecoratorSignature(type) {
@@ -87,6 +98,11 @@ function getEnumMemberSignature(member) {
87
98
  ? `${ns}${printId(member.name)}`
88
99
  : `${ns}${printId(member.name)}: ${value}`;
89
100
  }
101
+ function getAliasSignature(alias) {
102
+ const fullName = getFullyQualifiedSymbolName(alias.symbol);
103
+ const args = alias.templateParameters.map((t) => t.id.sv);
104
+ return args.length === 0 ? fullName : `${fullName}<${args.join(", ")}>`;
105
+ }
90
106
  function getQualifier(parent) {
91
107
  if (!(parent === null || parent === void 0 ? void 0 : parent.name) ||
92
108
  typeof parent.name !== "string" ||