File: error.ha

package info (click to toggle)
hare 0.25.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,948 kB
  • sloc: asm: 1,264; makefile: 123; sh: 114; lisp: 101
file content (36 lines) | stat: -rw-r--r-- 828 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// SPDX-License-Identifier: MPL-2.0
// (c) Hare authors <https://harelang.org>

use encoding::utf8;
use fmt;
use fs;
use io;

// All possible errors returned from this module.
export type error = !(tscmismatch | utciniterror);

// Converts an [[error]] into a human-friendly string. The result may be
// statically allocated.
export fn strerror(e: error) const str = {
	static let buf: [92]u8 = [0...];
	match (e) {
	case let e: tscmismatch =>
		return fmt::bsprintf(buf,
			"Timescale mismatch: {}, {}",
			e.0.abbr,
			e.1.abbr,
		)!;
	case let e: utciniterror =>
		return fmt::bsprintf(buf,
			"UTC initialization: {}",
			match (e) {
			case let e: fs::error =>
				yield fs::strerror(e);
			case let e: io::error =>
				yield io::strerror(e);
			case let e: utf8::invalid =>
				yield utf8::strerror(e);
			},
		)!;
	};
};