(issue: ParseIssue)
| 1800 | const Either_void = Either.right(undefined) |
| 1801 | |
| 1802 | const getCurrentMessage = (issue: ParseIssue): Effect.Effect<CurrentMessage | undefined> => |
| 1803 | getAnnotated(issue).pipe( |
| 1804 | Option.flatMap(AST.getMessageAnnotation), |
| 1805 | Option.match({ |
| 1806 | onNone: () => Either_void, |
| 1807 | onSome: (messageAnnotation) => { |
| 1808 | const union = messageAnnotation(issue) |
| 1809 | if (Predicate.isString(union)) { |
| 1810 | return Either.right({ message: union, override: false }) |
| 1811 | } |
| 1812 | if (Effect.isEffect(union)) { |
| 1813 | return Effect.map(union, (message) => ({ message, override: false })) |
| 1814 | } |
| 1815 | if (Predicate.isString(union.message)) { |
| 1816 | return Either.right({ message: union.message, override: union.override }) |
| 1817 | } |
| 1818 | return Effect.map(union.message, (message) => ({ message, override: union.override })) |
| 1819 | } |
| 1820 | }) |
| 1821 | ) |
| 1822 | |
| 1823 | const createParseIssueGuard = |
| 1824 | <T extends ParseIssue["_tag"]>(tag: T) => (issue: ParseIssue): issue is Extract<ParseIssue, { _tag: T }> => |
no test coverage detected