diff --git a/src/mzscheme/src/error.c b/src/mzscheme/src/error.c index b26170be14..35f971240c 100644 --- a/src/mzscheme/src/error.c +++ b/src/mzscheme/src/error.c @@ -1169,9 +1169,11 @@ void scheme_wrong_type(const char *name, const char *expected, if ((which < 0) || (argc == 1)) scheme_raise_exn(MZEXN_FAIL_CONTRACT, - "%s: expects %s of type <%s>; " + "%s: expect%s %s of type <%s>; " "given %t", - name, isress, expected, s, slen); + name, + (which < 0) ? "ed" : "s", + isress, expected, s, slen); else { char *other; long olen; diff --git a/src/mzscheme/src/module.c b/src/mzscheme/src/module.c index 75da9eda85..ebeacfb768 100644 --- a/src/mzscheme/src/module.c +++ b/src/mzscheme/src/module.c @@ -1804,6 +1804,11 @@ static Scheme_Object *_module_resolve(Scheme_Object *modidx, Scheme_Object *stx, name = scheme_apply(scheme_get_param(scheme_current_config(), MZCONFIG_CURRENT_MODULE_RESOLVER), 4, a); + if (!SCHEME_SYMBOLP(name)) { + a[0] = name; + scheme_wrong_type("module name resolver", "symbol", -1, -1, a); + } + ((Scheme_Modidx *)modidx)->resolved = name; }