From 33af4ea250ec372186f2b857b2400b3bbce97a09 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 6 Feb 2019 08:57:24 -0800 Subject: [PATCH] assertNever no longer crashes on string input (#29764) --- src/compiler/core.ts | 2 +- src/testRunner/unittests/asserts.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index a2f2b245502..eb24dd1edd5 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -1652,7 +1652,7 @@ namespace ts { } export function assertNever(member: never, message = "Illegal value:", stackCrawlMark?: AnyFunction): never { - const detail = "kind" in member && "pos" in member ? "SyntaxKind: " + showSyntaxKind(member as Node) : JSON.stringify(member); + const detail = typeof member === "object" && "kind" in member && "pos" in member ? "SyntaxKind: " + showSyntaxKind(member as Node) : JSON.stringify(member); return fail(`${message} ${detail}`, stackCrawlMark || assertNever); } diff --git a/src/testRunner/unittests/asserts.ts b/src/testRunner/unittests/asserts.ts index c54173e2f90..116a74cf179 100644 --- a/src/testRunner/unittests/asserts.ts +++ b/src/testRunner/unittests/asserts.ts @@ -5,5 +5,8 @@ namespace ts { assert.throws(() => assert.deepEqual(createNodeArray([], /*hasTrailingComma*/ true), createNodeArray([], /*hasTrailingComma*/ false))); assert.deepEqual(createNodeArray([createIdentifier("A")], /*hasTrailingComma*/ true), createNodeArray([createIdentifier("A")], /*hasTrailingComma*/ true)); }); + it("assertNever on string has correct error", () => { + assert.throws(() => Debug.assertNever("hi" as never), "Debug Failure. Illegal value: \"hi\""); + }); }); }