@@ -34515,21 +34515,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
34515
34515
}
34516
34516
34517
34517
function checkAssertionWorker(node: JSDocTypeAssertion | AssertionExpression, checkMode: CheckMode | undefined) {
34518
- const { type, expression } = getAssertionTypeAndExpression(node);
34519
- if (isConstTypeReference(type)) {
34520
- if (!isValidConstAssertionArgument(expression)) {
34521
- error(expression, Diagnostics.A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals);
34522
- }
34523
- return getRegularTypeOfLiteralType(checkExpression(expression, checkMode));
34524
- }
34525
- const links = getNodeLinks(node);
34526
- links.assertionExpressionType = checkExpression(expression, checkMode);
34527
- checkSourceElement(type);
34528
- checkNodeDeferred(node);
34529
- return getTypeFromTypeNode(type);
34530
- }
34531
-
34532
- function getAssertionTypeAndExpression(node: JSDocTypeAssertion | AssertionExpression) {
34533
34518
let type: TypeNode;
34534
34519
let expression: Expression;
34535
34520
switch (node.kind) {
@@ -34543,12 +34528,23 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
34543
34528
expression = node.expression;
34544
34529
break;
34545
34530
}
34546
-
34547
- return { type, expression };
34531
+ if (isConstTypeReference(type)) {
34532
+ if (!isValidConstAssertionArgument(expression)) {
34533
+ error(expression, Diagnostics.A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals);
34534
+ }
34535
+ return getRegularTypeOfLiteralType(checkExpression(expression, checkMode));
34536
+ }
34537
+ const links = getNodeLinks(node);
34538
+ links.assertionExpressionType = checkExpression(expression, checkMode);
34539
+ checkSourceElement(type);
34540
+ checkNodeDeferred(node);
34541
+ return getTypeFromTypeNode(type);
34548
34542
}
34549
34543
34550
34544
function checkAssertionDeferred(node: JSDocTypeAssertion | AssertionExpression) {
34551
- const { type } = getAssertionTypeAndExpression(node);
34545
+ const type = node.kind === SyntaxKind.ParenthesizedExpression
34546
+ ? getJSDocTypeAssertionType(node)
34547
+ : node.type;
34552
34548
const errNode = isParenthesizedExpression(node) ? type : node;
34553
34549
const links = getNodeLinks(node);
34554
34550
Debug.assertIsDefined(links.assertionExpressionType);
0 commit comments