diff options
| author | Richie Foreman <[email protected]> | 2025-08-13 16:17:38 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-13 20:17:38 +0000 |
| commit | a90aeb3d8fd05fc6303ce9ef4e957c2e19cbe9c4 (patch) | |
| tree | 78423cea4d8f3a3f44d0e182b46fdf0a4bc45de0 /packages/cli/src | |
| parent | 8fae227e8d53b962f8b7db3abff51906fad1d181 (diff) | |
chore(build/compiler): Enable a bunch of strict TS compiler options. (#6138)
Diffstat (limited to 'packages/cli/src')
| -rw-r--r-- | packages/cli/src/ui/commands/directoryCommand.tsx | 6 | ||||
| -rw-r--r-- | packages/cli/src/ui/components/shared/vim-buffer-actions.ts | 3 | ||||
| -rw-r--r-- | packages/cli/src/utils/checks.ts | 28 |
3 files changed, 32 insertions, 5 deletions
diff --git a/packages/cli/src/ui/commands/directoryCommand.tsx b/packages/cli/src/ui/commands/directoryCommand.tsx index 6c667f44..d3f50e4c 100644 --- a/packages/cli/src/ui/commands/directoryCommand.tsx +++ b/packages/cli/src/ui/commands/directoryCommand.tsx @@ -138,13 +138,11 @@ export const directoryCommand: SlashCommand = { if (errors.length > 0) { addItem( - { - type: MessageType.ERROR, - text: errors.join('\n'), - }, + { type: MessageType.ERROR, text: errors.join('\n') }, Date.now(), ); } + return; }, }, { diff --git a/packages/cli/src/ui/components/shared/vim-buffer-actions.ts b/packages/cli/src/ui/components/shared/vim-buffer-actions.ts index 0e2e7989..bf04716f 100644 --- a/packages/cli/src/ui/components/shared/vim-buffer-actions.ts +++ b/packages/cli/src/ui/components/shared/vim-buffer-actions.ts @@ -19,6 +19,7 @@ import { findWordEndInLine, } from './text-buffer.js'; import { cpLen, toCodePoints } from '../../utils/textUtils.js'; +import { assumeExhaustive } from '../../../utils/checks.js'; // Check if we're at the end of a base word (on the last base character) // Returns true if current position has a base character followed only by combining marks until non-word @@ -806,7 +807,7 @@ export function handleVimAction( default: { // This should never happen if TypeScript is working correctly - const _exhaustiveCheck: never = action; + assumeExhaustive(action); return state; } } diff --git a/packages/cli/src/utils/checks.ts b/packages/cli/src/utils/checks.ts new file mode 100644 index 00000000..0598835f --- /dev/null +++ b/packages/cli/src/utils/checks.ts @@ -0,0 +1,28 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Fail to compile on unexpected values. */ +export function assumeExhaustive(_value: never): void {} + +/** + * Throws an exception on unexpected values. + * + * A common use case is switch statements: + * switch(enumValue) { + * case Enum.A: + * case Enum.B: + * break; + * default: + * checkExhaustive(enumValue); + * } + */ +export function checkExhaustive( + value: never, + msg = `unexpected value ${value}!`, +): never { + assumeExhaustive(value); + throw new Error(msg); +} |
