diff --git a/lib/chibi/ast.c b/lib/chibi/ast.c index 51df718d..9a245902 100644 --- a/lib/chibi/ast.c +++ b/lib/chibi/ast.c @@ -677,7 +677,6 @@ sexp sexp_init_library (sexp ctx, sexp self, sexp_sint_t n, sexp env, const char sexp_define_type_predicate(ctx, env, "ref?", SEXP_REF); sexp_define_type_predicate(ctx, env, "seq?", SEXP_SEQ); sexp_define_type_predicate(ctx, env, "lit?", SEXP_LIT); - sexp_define_type_predicate(ctx, env, "opcode?", SEXP_OPCODE); sexp_define_type_predicate(ctx, env, "type?", SEXP_TYPE); sexp_define_type_predicate(ctx, env, "core?", SEXP_CORE); sexp_define_type_predicate(ctx, env, "context?", SEXP_CONTEXT); diff --git a/lib/chibi/ast.sld b/lib/chibi/ast.sld index 477b4fba..56171759 100644 --- a/lib/chibi/ast.sld +++ b/lib/chibi/ast.sld @@ -26,11 +26,11 @@ seq-ls seq-ls-set! lit-value lit-value-set! exception-kind exception-message exception-irritants exception-source opcode-name opcode-num-params opcode-return-type opcode-param-type - opcode-class opcode-code opcode-data opcode-variadic? + opcode-class opcode-code opcode-data opcode-variadic? opcode? macro-procedure macro-env macro-source macro-aux macro-aux-set! procedure-code procedure-vars procedure-name procedure-name-set! procedure-arity procedure-variadic? procedure-variable-transformer? - procedure-flags make-variable-transformer make-procedure + procedure-flags make-variable-transformer make-procedure procedure? bytecode-name bytecode-literals bytecode-source port-line port-line-set! port-source? port-source?-set! extend-env env-parent env-parent-set! env-lambda env-lambda-set! diff --git a/lib/meta-7.scm b/lib/meta-7.scm index 077369ca..de5f4c63 100644 --- a/lib/meta-7.scm +++ b/lib/meta-7.scm @@ -112,19 +112,19 @@ (if (memq (car x) '(only except rename)) (let* ((mod-name+imports (%resolve-import (cadr x))) (imp-ids (or (cdr mod-name+imports) - (and (not (eq? 'only (car x))) - (module-exports - (find-module (car mod-name+imports))))))) + (module-exports (find-module (car mod-name+imports)))))) (cons (car mod-name+imports) (case (car x) ((only) - (if imp-ids - (map (lambda (imp) (or (assq imp imp-ids) imp)) - (cddr x)) - (cddr x))) + (map (lambda (imp) + (if (or (boolean? imp-ids) (memq imp imp-ids)) + imp + (error "importing unknown binding" imp imp-ids))) + (cddr x))) ((except) (id-filter (lambda (i) (not (memq i (cddr x)))) imp-ids)) ((rename) + ;; TODO: warn about renaming an unimported id (map (lambda (i) (let ((rename (assq (to-id i) (cddr x)))) (if rename (cons (cadr rename) (from-id i)) i)))