Improve missingCaseError error message

This commit is contained in:
Evan Hahn 2020-11-12 12:09:39 -06:00 committed by GitHub
parent 7d4d85a755
commit 947e9c366c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 1 deletions

View File

@ -1,6 +1,17 @@
// Copyright 2018-2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
const stringify = (value: unknown): string => {
try {
// `JSON.stringify` can return `undefined` (TypeScript has incorrect types here).
// However, this is fine because we interpolate it into a string, so it shows up as
// "undefined" in the final error message.
return JSON.stringify(value);
} catch (err) {
return Object.prototype.toString.call(value);
}
};
// `missingCaseError` is useful for compile-time checking that all `case`s in
// a `switch` statement have been handled, e.g.
//
@ -21,4 +32,4 @@
// handled by our `switch` / `case` statement which is useful for code
// maintenance and system evolution.
export const missingCaseError = (x: never): TypeError =>
new TypeError(`Unhandled case: ${x}`);
new TypeError(`Unhandled case: ${stringify(x)}`);