diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 875db08fba2..a53c1841b6e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -17840,7 +17840,7 @@ namespace ts { containingMessageChain: (() => DiagnosticMessageChain | undefined) | undefined, errorOutputContainer: { errors?: Diagnostic[], skipLogging?: boolean } | undefined ) { - if (target.flags & TypeFlags.Primitive) return false; + if (target.flags & (TypeFlags.Primitive | TypeFlags.Never)) return false; if (isTupleLikeType(source)) { return elaborateElementwise(generateLimitedTupleElements(node, target), source, target, relation, containingMessageChain, errorOutputContainer); } @@ -17893,7 +17893,7 @@ namespace ts { containingMessageChain: (() => DiagnosticMessageChain | undefined) | undefined, errorOutputContainer: { errors?: Diagnostic[], skipLogging?: boolean } | undefined ) { - if (target.flags & TypeFlags.Primitive) return false; + if (target.flags & (TypeFlags.Primitive | TypeFlags.Never)) return false; return elaborateElementwise(generateObjectLiteralElements(node), source, target, relation, containingMessageChain, errorOutputContainer); } diff --git a/tests/baselines/reference/assignmentCompatability46.errors.txt b/tests/baselines/reference/assignmentCompatability46.errors.txt new file mode 100644 index 00000000000..e4e7629c375 --- /dev/null +++ b/tests/baselines/reference/assignmentCompatability46.errors.txt @@ -0,0 +1,14 @@ +tests/cases/compiler/assignmentCompatability46.ts(3,4): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'never'. +tests/cases/compiler/assignmentCompatability46.ts(4,4): error TS2345: Argument of type '{ a: number; b: number; }' is not assignable to parameter of type 'never'. + + +==== tests/cases/compiler/assignmentCompatability46.ts (2 errors) ==== + declare function fn(x: never): void; + + fn([1, 2, 3]) + ~~~~~~~~~ +!!! error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'never'. + fn({ a: 1, b: 2 }) + ~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type '{ a: number; b: number; }' is not assignable to parameter of type 'never'. + \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability46.js b/tests/baselines/reference/assignmentCompatability46.js new file mode 100644 index 00000000000..6ae198625af --- /dev/null +++ b/tests/baselines/reference/assignmentCompatability46.js @@ -0,0 +1,10 @@ +//// [assignmentCompatability46.ts] +declare function fn(x: never): void; + +fn([1, 2, 3]) +fn({ a: 1, b: 2 }) + + +//// [assignmentCompatability46.js] +fn([1, 2, 3]); +fn({ a: 1, b: 2 }); diff --git a/tests/baselines/reference/assignmentCompatability46.symbols b/tests/baselines/reference/assignmentCompatability46.symbols new file mode 100644 index 00000000000..0a92711b4e8 --- /dev/null +++ b/tests/baselines/reference/assignmentCompatability46.symbols @@ -0,0 +1,13 @@ +=== tests/cases/compiler/assignmentCompatability46.ts === +declare function fn(x: never): void; +>fn : Symbol(fn, Decl(assignmentCompatability46.ts, 0, 0)) +>x : Symbol(x, Decl(assignmentCompatability46.ts, 0, 20)) + +fn([1, 2, 3]) +>fn : Symbol(fn, Decl(assignmentCompatability46.ts, 0, 0)) + +fn({ a: 1, b: 2 }) +>fn : Symbol(fn, Decl(assignmentCompatability46.ts, 0, 0)) +>a : Symbol(a, Decl(assignmentCompatability46.ts, 3, 4)) +>b : Symbol(b, Decl(assignmentCompatability46.ts, 3, 10)) + diff --git a/tests/baselines/reference/assignmentCompatability46.types b/tests/baselines/reference/assignmentCompatability46.types new file mode 100644 index 00000000000..0a43ca90c1d --- /dev/null +++ b/tests/baselines/reference/assignmentCompatability46.types @@ -0,0 +1,22 @@ +=== tests/cases/compiler/assignmentCompatability46.ts === +declare function fn(x: never): void; +>fn : (x: never) => void +>x : never + +fn([1, 2, 3]) +>fn([1, 2, 3]) : void +>fn : (x: never) => void +>[1, 2, 3] : number[] +>1 : 1 +>2 : 2 +>3 : 3 + +fn({ a: 1, b: 2 }) +>fn({ a: 1, b: 2 }) : void +>fn : (x: never) => void +>{ a: 1, b: 2 } : { a: number; b: number; } +>a : number +>1 : 1 +>b : number +>2 : 2 + diff --git a/tests/cases/compiler/assignmentCompatability46.ts b/tests/cases/compiler/assignmentCompatability46.ts new file mode 100644 index 00000000000..ee286cc5d48 --- /dev/null +++ b/tests/cases/compiler/assignmentCompatability46.ts @@ -0,0 +1,4 @@ +declare function fn(x: never): void; + +fn([1, 2, 3]) +fn({ a: 1, b: 2 })