lean4-code-actions
Version:
Refactorings and snippets for Lean 4
23 lines (18 loc) • 754 B
text/typescript
import { stringify } from '../JSON'
import { Mapper } from '../Mapper'
import { Modifier } from '../Modifier'
import { Runner } from '../Runner'
export function withErrorContext<Out>(runner: Runner<void, Out>, mutatorOfCaughtValue: Modifier<unknown>) {
try {
return runner()
} catch (e) {
throw mutatorOfCaughtValue(e)
}
}
export function ifErrorThenMapElseThrow<T>(mapper: Mapper<Error, T>) {
return (something: unknown) => {
throw (something instanceof Error) ? mapper(something) : something
}
}
export const concatErrorMessage = (suffix: string) => (error: Error) => new Error(error.message + ' ' + suffix)
export const addContextString = (context: unknown) => ifErrorThenMapElseThrow(concatErrorMessage(stringify(context)))