hare

[hare] The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

platform_abort.ha (633B)


      1 // SPDX-License-Identifier: MPL-2.0
      2 // (c) Hare authors <https://harelang.org>
      3 
      4 fn strvec(s: str) iovec = {
      5 	return iovec {
      6 		iov_base = *(&s: **opaque),
      7 		iov_len = len(s),
      8 	};
      9 };
     10 
     11 fn platform_abort(path: *str, line: u64, col: u64, msg: str) never = {
     12 	let linebuf: [U64_BUFSZ]u8 = [0...];
     13 	let colbuf: [U64_BUFSZ]u8 = [0...];
     14 
     15 	const iov = [
     16 		strvec("Abort: "),
     17 		strvec(*path),
     18 		strvec(":"),
     19 		strvec(u64tos(linebuf, line)),
     20 		strvec(":"),
     21 		strvec(u64tos(colbuf, col)),
     22 		strvec(": "),
     23 		strvec(msg),
     24 		strvec("\n"),
     25 	];
     26 	writev(STDERR_FILENO, &iov, len(iov): int): void;
     27 
     28 	for (true) {
     29 		kill(getpid(), SIGABRT): void;
     30 	};
     31 };