@typespec/compiler 0.49.0-dev.2 → 0.49.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 (53) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/core/checker.d.ts.map +1 -1
  3. package/dist/src/core/checker.js +109 -22
  4. package/dist/src/core/checker.js.map +1 -1
  5. package/dist/src/core/cli/actions/format.d.ts.map +1 -1
  6. package/dist/src/core/cli/actions/format.js +6 -1
  7. package/dist/src/core/cli/actions/format.js.map +1 -1
  8. package/dist/src/core/decorator-utils.d.ts +3 -0
  9. package/dist/src/core/decorator-utils.d.ts.map +1 -1
  10. package/dist/src/core/decorator-utils.js +6 -2
  11. package/dist/src/core/decorator-utils.js.map +1 -1
  12. package/dist/src/core/formatter-fs.d.ts +9 -1
  13. package/dist/src/core/formatter-fs.d.ts.map +1 -1
  14. package/dist/src/core/formatter-fs.js +12 -2
  15. package/dist/src/core/formatter-fs.js.map +1 -1
  16. package/dist/src/core/messages.d.ts +38 -7
  17. package/dist/src/core/messages.d.ts.map +1 -1
  18. package/dist/src/core/messages.js +12 -1
  19. package/dist/src/core/messages.js.map +1 -1
  20. package/dist/src/core/parser.d.ts.map +1 -1
  21. package/dist/src/core/parser.js +3 -0
  22. package/dist/src/core/parser.js.map +1 -1
  23. package/dist/src/core/types.d.ts +38 -34
  24. package/dist/src/core/types.d.ts.map +1 -1
  25. package/dist/src/core/types.js +34 -33
  26. package/dist/src/core/types.js.map +1 -1
  27. package/dist/src/emitter-framework/asset-emitter.d.ts.map +1 -1
  28. package/dist/src/emitter-framework/asset-emitter.js +16 -4
  29. package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
  30. package/dist/src/formatter/print/comment-handler.js +7 -5
  31. package/dist/src/formatter/print/comment-handler.js.map +1 -1
  32. package/dist/src/formatter/print/printer.d.ts +1 -1
  33. package/dist/src/formatter/print/printer.d.ts.map +1 -1
  34. package/dist/src/formatter/print/printer.js +28 -34
  35. package/dist/src/formatter/print/printer.js.map +1 -1
  36. package/dist/src/index.d.ts +0 -1
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +0 -1
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/init/init.d.ts.map +1 -1
  41. package/dist/src/init/init.js +21 -5
  42. package/dist/src/init/init.js.map +1 -1
  43. package/dist/src/lib/decorators.d.ts +39 -2
  44. package/dist/src/lib/decorators.d.ts.map +1 -1
  45. package/dist/src/lib/decorators.js +137 -48
  46. package/dist/src/lib/decorators.js.map +1 -1
  47. package/dist/src/server/tmlanguage.js +1 -1
  48. package/dist/src/server/tmlanguage.js.map +1 -1
  49. package/dist/src/server/type-details.js +1 -1
  50. package/dist/src/server/type-details.js.map +1 -1
  51. package/dist/typespec.tmLanguage +1 -1
  52. package/lib/decorators.tsp +30 -0
  53. package/package.json +27 -24
package/dist/manifest.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export default {
2
- "version": "0.49.0-dev.2",
3
- "commit": "589c34e308131d648ab95a18a53180aa0942a981"
2
+ "version": "0.49.0-dev.20",
3
+ "commit": "430dc7e9a8d53db055f9da2de7dcfb5b050f48b2"
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,8 @@ export function createChecker(program) {
42
42
  };
43
43
  const globalNamespaceNode = createGlobalNamespaceNode();
44
44
  const globalNamespaceType = createGlobalNamespaceType();
45
- let typespecNamespaceNode;
45
+ // Caches the deprecation test of nodes in the program
46
+ const nodeDeprecationMap = new Map();
46
47
  const errorType = createType({ kind: "Intrinsic", name: "ErrorType" });
47
48
  const voidType = createType({ kind: "Intrinsic", name: "void" });
48
49
  const neverType = createType({ kind: "Intrinsic", name: "never" });
@@ -76,20 +77,19 @@ export function createChecker(program) {
76
77
  for (const file of program.sourceFiles.values()) {
77
78
  mergeSourceFile(file);
78
79
  }
79
- for (const file of program.sourceFiles.values()) {
80
- setUsingsForFile(file);
81
- }
82
80
  const typespecNamespaceBinding = globalNamespaceNode.symbol.exports.get("TypeSpec");
83
81
  if (typespecNamespaceBinding) {
84
82
  // the typespec namespace binding will be absent if we've passed
85
83
  // the no-std-lib option.
86
84
  // the first declaration here is the JS file for the typespec script.
87
- typespecNamespaceNode = typespecNamespaceBinding.declarations[1];
88
85
  initializeTypeSpecIntrinsics();
89
86
  for (const file of program.sourceFiles.values()) {
90
87
  addUsingSymbols(typespecNamespaceBinding.exports, file.locals);
91
88
  }
92
89
  }
90
+ for (const file of program.sourceFiles.values()) {
91
+ setUsingsForFile(file);
92
+ }
93
93
  let evalContext = undefined;
94
94
  const checker = {
95
95
  getTypeForNode,
@@ -191,9 +191,6 @@ export function createChecker(program) {
191
191
  usedUsing.add(namespaceSym);
192
192
  addUsingSymbols(sym.exports, parentNs.locals);
193
193
  }
194
- if (typespecNamespaceNode) {
195
- addUsingSymbols(typespecNamespaceBinding.exports, file.locals);
196
- }
197
194
  }
198
195
  function applyAugmentDecorators(node) {
199
196
  if (!node.statements || !isArray(node.statements)) {
@@ -525,6 +522,41 @@ export function createChecker(program) {
525
522
  reportDeprecation(program, target, deprecationDetails.message, reportCheckerDiagnostic);
526
523
  }
527
524
  }
525
+ function isTypeReferenceContextDeprecated(node) {
526
+ function checkDeprecatedNode(node) {
527
+ var _a;
528
+ // Perform a simple check if the parent node is deprecated. We do this
529
+ // out of band because `checkDirectives` usually gets called on the parent
530
+ // type after child types have already been checked (including their
531
+ // deprecations).
532
+ if (!nodeDeprecationMap.has(node)) {
533
+ nodeDeprecationMap.set(node, ((_a = node.directives) !== null && _a !== void 0 ? _a : []).findIndex((d) => d.target.sv === "deprecated") >= 0);
534
+ }
535
+ return nodeDeprecationMap.get(node);
536
+ }
537
+ // Walk the parent hierarchy up to a node which might have a
538
+ // deprecation which would mitigate the deprecation warning of the original
539
+ // type reference. This is done to prevent multiple deprecation notices from
540
+ // being raised when a parent context is already being deprecated.
541
+ switch (node.kind) {
542
+ case SyntaxKind.ModelStatement:
543
+ return checkDeprecatedNode(node);
544
+ case SyntaxKind.OperationStatement:
545
+ return (checkDeprecatedNode(node) ||
546
+ (node.parent.kind === SyntaxKind.InterfaceStatement &&
547
+ isTypeReferenceContextDeprecated(node.parent)));
548
+ case SyntaxKind.InterfaceStatement:
549
+ return checkDeprecatedNode(node);
550
+ case SyntaxKind.IntersectionExpression:
551
+ case SyntaxKind.UnionExpression:
552
+ case SyntaxKind.ModelProperty:
553
+ case SyntaxKind.OperationSignatureDeclaration:
554
+ case SyntaxKind.OperationSignatureReference:
555
+ return isTypeReferenceContextDeprecated(node.parent);
556
+ default:
557
+ return false;
558
+ }
559
+ }
528
560
  function checkTypeReferenceArgs(node, mapper) {
529
561
  const args = [];
530
562
  if (node.kind !== SyntaxKind.TypeReference) {
@@ -680,10 +712,14 @@ export function createChecker(program) {
680
712
  }
681
713
  }
682
714
  }
683
- // Check for deprecations here, first on symbol, then on type.
715
+ // Check for deprecations here, first on symbol, then on type. However,
716
+ // don't raise deprecation when the usage site is also a deprecated
717
+ // declaration.
684
718
  const declarationNode = sym === null || sym === void 0 ? void 0 : sym.declarations[0];
685
719
  if (declarationNode && mapper === undefined) {
686
- checkDeprecated(baseType, declarationNode, node);
720
+ if (!isTypeReferenceContextDeprecated(node.parent)) {
721
+ checkDeprecated(baseType, declarationNode, node);
722
+ }
687
723
  }
688
724
  return baseType;
689
725
  }
@@ -2323,10 +2359,7 @@ export function createChecker(program) {
2323
2359
  ((_c = prop.parent.parent.parent) === null || _c === void 0 ? void 0 : _c.kind) === SyntaxKind.OperationStatement) {
2324
2360
  const doc = extractParamDoc(prop.parent.parent.parent, type.name);
2325
2361
  if (doc) {
2326
- type.decorators.unshift({
2327
- decorator: $docFromComment,
2328
- args: [{ value: createLiteralType(doc), jsValue: doc }],
2329
- });
2362
+ type.decorators.unshift(createDocFromCommentDecorator("self", doc));
2330
2363
  }
2331
2364
  }
2332
2365
  finishType(type);
@@ -2334,7 +2367,19 @@ export function createChecker(program) {
2334
2367
  pendingResolutions.finish(symId, ResolutionKind.Type);
2335
2368
  return type;
2336
2369
  }
2370
+ function createDocFromCommentDecorator(key, doc) {
2371
+ return {
2372
+ decorator: $docFromComment,
2373
+ args: [
2374
+ { value: createLiteralType(key), jsValue: key },
2375
+ { value: createLiteralType(doc), jsValue: doc },
2376
+ ],
2377
+ };
2378
+ }
2337
2379
  function isValueType(type) {
2380
+ if (type === nullType) {
2381
+ return true;
2382
+ }
2338
2383
  const valueTypes = new Set(["String", "Number", "Boolean", "EnumMember", "Tuple"]);
2339
2384
  return valueTypes.has(type.kind);
2340
2385
  }
@@ -2530,10 +2575,16 @@ export function createChecker(program) {
2530
2575
  // Doc comment should always be the first decorator in case an explicit @doc must override it.
2531
2576
  const docComment = extractMainDoc(targetType);
2532
2577
  if (docComment) {
2533
- decorators.unshift({
2534
- decorator: $docFromComment,
2535
- args: [{ value: createLiteralType(docComment), jsValue: docComment }],
2536
- });
2578
+ decorators.unshift(createDocFromCommentDecorator("self", docComment));
2579
+ }
2580
+ if (targetType.kind === "Operation") {
2581
+ const returnTypesDocs = extractReturnsDocs(targetType);
2582
+ if (returnTypesDocs.returns) {
2583
+ decorators.unshift(createDocFromCommentDecorator("returns", returnTypesDocs.returns));
2584
+ }
2585
+ if (returnTypesDocs.errors) {
2586
+ decorators.unshift(createDocFromCommentDecorator("errors", returnTypesDocs.errors));
2587
+ }
2537
2588
  }
2538
2589
  return decorators;
2539
2590
  }
@@ -2910,13 +2961,28 @@ export function createChecker(program) {
2910
2961
  function checkDirectives(node, type) {
2911
2962
  var _a;
2912
2963
  let hasDeprecation = false;
2913
- ((_a = node.directives) !== null && _a !== void 0 ? _a : []).forEach((directive) => {
2964
+ for (const directive of (_a = node.directives) !== null && _a !== void 0 ? _a : []) {
2914
2965
  if (directive.target.sv === "deprecated") {
2915
- if (directive.arguments[0].kind !== SyntaxKind.StringLiteral) {
2966
+ const message = directive.arguments[0];
2967
+ if (message === undefined) {
2916
2968
  reportCheckerDiagnostic(createDiagnostic({
2917
2969
  code: "invalid-deprecation-argument",
2970
+ messageId: "missing",
2971
+ target: directive,
2972
+ }));
2973
+ continue;
2974
+ }
2975
+ let messageStr;
2976
+ if (message.kind !== SyntaxKind.StringLiteral) {
2977
+ reportCheckerDiagnostic(createDiagnostic({
2978
+ code: "invalid-deprecation-argument",
2979
+ format: { kind: SyntaxKind[message.kind] },
2918
2980
  target: directive.arguments[0],
2919
2981
  }));
2982
+ messageStr = "<missing message>";
2983
+ }
2984
+ else {
2985
+ messageStr = message.value;
2920
2986
  }
2921
2987
  if (hasDeprecation === true) {
2922
2988
  reportCheckerDiagnostic(createDiagnostic({ code: "duplicate-deprecation", target: node }));
@@ -2924,11 +2990,11 @@ export function createChecker(program) {
2924
2990
  else {
2925
2991
  hasDeprecation = true;
2926
2992
  markDeprecated(program, type, {
2927
- message: directive.arguments[0].value,
2993
+ message: messageStr,
2928
2994
  });
2929
2995
  }
2930
2996
  }
2931
- });
2997
+ }
2932
2998
  }
2933
2999
  // the types here aren't ideal and could probably be refactored.
2934
3000
  function createAndFinishType(typeDef) {
@@ -4419,6 +4485,27 @@ function extractMainDoc(type) {
4419
4485
  const trimmed = mainDoc.trim();
4420
4486
  return trimmed === "" ? undefined : trimmed;
4421
4487
  }
4488
+ function extractReturnsDocs(type) {
4489
+ var _a;
4490
+ const result = {
4491
+ returns: undefined,
4492
+ errors: undefined,
4493
+ };
4494
+ if (((_a = type.node) === null || _a === void 0 ? void 0 : _a.docs) === undefined) {
4495
+ return result;
4496
+ }
4497
+ for (const doc of type.node.docs) {
4498
+ for (const tag of doc.tags) {
4499
+ if (tag.kind === SyntaxKind.DocReturnsTag) {
4500
+ result.returns = getDocContent(tag.content);
4501
+ }
4502
+ if (tag.kind === SyntaxKind.DocErrorsTag) {
4503
+ result.errors = getDocContent(tag.content);
4504
+ }
4505
+ }
4506
+ }
4507
+ return result;
4508
+ }
4422
4509
  function extractParamDoc(node, paramName) {
4423
4510
  if (node.docs === undefined) {
4424
4511
  return undefined;