@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.
- package/dist/manifest.js +2 -2
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +109 -22
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/cli/actions/format.d.ts.map +1 -1
- package/dist/src/core/cli/actions/format.js +6 -1
- package/dist/src/core/cli/actions/format.js.map +1 -1
- package/dist/src/core/decorator-utils.d.ts +3 -0
- package/dist/src/core/decorator-utils.d.ts.map +1 -1
- package/dist/src/core/decorator-utils.js +6 -2
- package/dist/src/core/decorator-utils.js.map +1 -1
- package/dist/src/core/formatter-fs.d.ts +9 -1
- package/dist/src/core/formatter-fs.d.ts.map +1 -1
- package/dist/src/core/formatter-fs.js +12 -2
- package/dist/src/core/formatter-fs.js.map +1 -1
- package/dist/src/core/messages.d.ts +38 -7
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +12 -1
- 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 +3 -0
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/types.d.ts +38 -34
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js +34 -33
- 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 +16 -4
- package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
- package/dist/src/formatter/print/comment-handler.js +7 -5
- package/dist/src/formatter/print/comment-handler.js.map +1 -1
- package/dist/src/formatter/print/printer.d.ts +1 -1
- package/dist/src/formatter/print/printer.d.ts.map +1 -1
- package/dist/src/formatter/print/printer.js +28 -34
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/init.d.ts.map +1 -1
- package/dist/src/init/init.js +21 -5
- package/dist/src/init/init.js.map +1 -1
- package/dist/src/lib/decorators.d.ts +39 -2
- package/dist/src/lib/decorators.d.ts.map +1 -1
- package/dist/src/lib/decorators.js +137 -48
- package/dist/src/lib/decorators.js.map +1 -1
- package/dist/src/server/tmlanguage.js +1 -1
- package/dist/src/server/tmlanguage.js.map +1 -1
- package/dist/src/server/type-details.js +1 -1
- package/dist/src/server/type-details.js.map +1 -1
- package/dist/typespec.tmLanguage +1 -1
- package/lib/decorators.tsp +30 -0
- package/package.json +27 -24
package/dist/manifest.js
CHANGED
|
@@ -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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"}
|
package/dist/src/core/checker.js
CHANGED
|
@@ -42,7 +42,8 @@ export function createChecker(program) {
|
|
|
42
42
|
};
|
|
43
43
|
const globalNamespaceNode = createGlobalNamespaceNode();
|
|
44
44
|
const globalNamespaceType = createGlobalNamespaceType();
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2535
|
-
|
|
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 : [])
|
|
2964
|
+
for (const directive of (_a = node.directives) !== null && _a !== void 0 ? _a : []) {
|
|
2914
2965
|
if (directive.target.sv === "deprecated") {
|
|
2915
|
-
|
|
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:
|
|
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;
|