mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-24 04:30:53 -06:00
Unconditionally call checkExpression from checkSatisfiesExpression (#51704)
* Unconditionally call `checkExpression` in `checkSatisfiesExpression` * A testcase
This commit is contained in:
parent
70d5cb2827
commit
9089d5390a
@ -33707,13 +33707,13 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
|
||||
function checkSatisfiesExpression(node: SatisfiesExpression) {
|
||||
checkSourceElement(node.type);
|
||||
const exprType = checkExpression(node.expression);
|
||||
|
||||
const targetType = getTypeFromTypeNode(node.type);
|
||||
if (isErrorType(targetType)) {
|
||||
return targetType;
|
||||
}
|
||||
|
||||
const exprType = checkExpression(node.expression);
|
||||
checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, node.type, node.expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1);
|
||||
|
||||
return exprType;
|
||||
|
||||
13
tests/baselines/reference/satisfiesEmit.errors.txt
Normal file
13
tests/baselines/reference/satisfiesEmit.errors.txt
Normal file
@ -0,0 +1,13 @@
|
||||
tests/cases/compiler/satisfiesEmit.ts(2,20): error TS2307: Cannot find module 'foo' or its corresponding type declarations.
|
||||
tests/cases/compiler/satisfiesEmit.ts(3,23): error TS2304: Cannot find name 'bleh'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/satisfiesEmit.ts (2 errors) ====
|
||||
// This import should not be elided in the emitted JS
|
||||
import a = require("foo");
|
||||
~~~~~
|
||||
!!! error TS2307: Cannot find module 'foo' or its corresponding type declarations.
|
||||
const p = a satisfies bleh;
|
||||
~~~~
|
||||
!!! error TS2304: Cannot find name 'bleh'.
|
||||
|
||||
12
tests/baselines/reference/satisfiesEmit.js
Normal file
12
tests/baselines/reference/satisfiesEmit.js
Normal file
@ -0,0 +1,12 @@
|
||||
//// [satisfiesEmit.ts]
|
||||
// This import should not be elided in the emitted JS
|
||||
import a = require("foo");
|
||||
const p = a satisfies bleh;
|
||||
|
||||
|
||||
//// [satisfiesEmit.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
// This import should not be elided in the emitted JS
|
||||
var a = require("foo");
|
||||
var p = a;
|
||||
10
tests/baselines/reference/satisfiesEmit.symbols
Normal file
10
tests/baselines/reference/satisfiesEmit.symbols
Normal file
@ -0,0 +1,10 @@
|
||||
=== tests/cases/compiler/satisfiesEmit.ts ===
|
||||
// This import should not be elided in the emitted JS
|
||||
import a = require("foo");
|
||||
>a : Symbol(a, Decl(satisfiesEmit.ts, 0, 0))
|
||||
|
||||
const p = a satisfies bleh;
|
||||
>p : Symbol(p, Decl(satisfiesEmit.ts, 2, 5))
|
||||
>a : Symbol(a, Decl(satisfiesEmit.ts, 0, 0))
|
||||
>bleh : Symbol(bleh)
|
||||
|
||||
10
tests/baselines/reference/satisfiesEmit.types
Normal file
10
tests/baselines/reference/satisfiesEmit.types
Normal file
@ -0,0 +1,10 @@
|
||||
=== tests/cases/compiler/satisfiesEmit.ts ===
|
||||
// This import should not be elided in the emitted JS
|
||||
import a = require("foo");
|
||||
>a : any
|
||||
|
||||
const p = a satisfies bleh;
|
||||
>p : bleh
|
||||
>a satisfies bleh : bleh
|
||||
>a : any
|
||||
|
||||
3
tests/cases/compiler/satisfiesEmit.ts
Normal file
3
tests/cases/compiler/satisfiesEmit.ts
Normal file
@ -0,0 +1,3 @@
|
||||
// This import should not be elided in the emitted JS
|
||||
import a = require("foo");
|
||||
const p = a satisfies bleh;
|
||||
Loading…
x
Reference in New Issue
Block a user