mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-08 21:47:33 +02:00
adding type-checking on the remaining I/O opcodes
This commit is contained in:
parent
a630d84413
commit
95e0b0bb31
1 changed files with 8 additions and 0 deletions
8
eval.c
8
eval.c
|
@ -1942,19 +1942,27 @@ sexp sexp_vm (sexp ctx, sexp proc) {
|
||||||
case SEXP_OP_WRITE_CHAR:
|
case SEXP_OP_WRITE_CHAR:
|
||||||
if (! sexp_charp(_ARG1))
|
if (! sexp_charp(_ARG1))
|
||||||
sexp_raise("write-char: not a character", sexp_list1(ctx, _ARG1));
|
sexp_raise("write-char: not a character", sexp_list1(ctx, _ARG1));
|
||||||
|
if (! sexp_oportp(_ARG2))
|
||||||
|
sexp_raise("write-char: not an output-port", sexp_list1(ctx, _ARG2));
|
||||||
sexp_write_char(ctx, sexp_unbox_character(_ARG1), _ARG2);
|
sexp_write_char(ctx, sexp_unbox_character(_ARG1), _ARG2);
|
||||||
_ARG2 = SEXP_VOID;
|
_ARG2 = SEXP_VOID;
|
||||||
top--;
|
top--;
|
||||||
break;
|
break;
|
||||||
case SEXP_OP_NEWLINE:
|
case SEXP_OP_NEWLINE:
|
||||||
|
if (! sexp_oportp(_ARG1))
|
||||||
|
sexp_raise("newline: not an output-port", sexp_list1(ctx, _ARG1));
|
||||||
sexp_newline(ctx, _ARG1);
|
sexp_newline(ctx, _ARG1);
|
||||||
_ARG1 = SEXP_VOID;
|
_ARG1 = SEXP_VOID;
|
||||||
break;
|
break;
|
||||||
case SEXP_OP_READ_CHAR:
|
case SEXP_OP_READ_CHAR:
|
||||||
|
if (! sexp_iportp(_ARG1))
|
||||||
|
sexp_raise("read-char: not an intput-port", sexp_list1(ctx, _ARG1));
|
||||||
i = sexp_read_char(ctx, _ARG1);
|
i = sexp_read_char(ctx, _ARG1);
|
||||||
_ARG1 = (i == EOF) ? SEXP_EOF : sexp_make_character(i);
|
_ARG1 = (i == EOF) ? SEXP_EOF : sexp_make_character(i);
|
||||||
break;
|
break;
|
||||||
case SEXP_OP_PEEK_CHAR:
|
case SEXP_OP_PEEK_CHAR:
|
||||||
|
if (! sexp_iportp(_ARG1))
|
||||||
|
sexp_raise("peek-char: not an intput-port", sexp_list1(ctx, _ARG1));
|
||||||
i = sexp_read_char(ctx, _ARG1);
|
i = sexp_read_char(ctx, _ARG1);
|
||||||
sexp_push_char(ctx, i, _ARG1);
|
sexp_push_char(ctx, i, _ARG1);
|
||||||
_ARG1 = (i == EOF) ? SEXP_EOF : sexp_make_character(i);
|
_ARG1 = (i == EOF) ? SEXP_EOF : sexp_make_character(i);
|
||||||
|
|
Loading…
Add table
Reference in a new issue