From 6ab85a42bb4e26d440ae951b239de5c37e928e79 Mon Sep 17 00:00:00 2001 From: Jaco Date: Wed, 8 Dec 2021 09:26:45 +0100 Subject: [PATCH] assertUnreachable (#1294) --- CHANGELOG.md | 1 + packages/util/src/assert.ts | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d37cb0d51..f22ec745e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Changes: +- Expose `assertUnreachable` for codepaths that should not be followed - Swap to upstream `@noble/hashes` - Preserve all-caps word splits in `stringCamelCase` diff --git a/packages/util/src/assert.ts b/packages/util/src/assert.ts index 135f33e9c..2214345d5 100644 --- a/packages/util/src/assert.ts +++ b/packages/util/src/assert.ts @@ -42,3 +42,11 @@ export function assertReturn (value: T | undefined | null, message: string | return value; } + +/** + * @name assertUnreachable + * @description An assertion helper that ensures all codepaths are followed + */ +export function assertUnreachable (x: never): never { + throw new Error(`This codepath should be unreachable. Unhandled input: ${x as unknown as string}`); +}