diff --git a/src/c/cinit.d b/src/c/cinit.d index 73fbb93f5..a52668f0c 100644 --- a/src/c/cinit.d +++ b/src/c/cinit.d @@ -123,6 +123,12 @@ si_find_relative_package(cl_narg narg, cl_object package, ...) @(return ECL_NIL); } +extern cl_object +si_wrong_type_argument(cl_narg narg, cl_object object, cl_object type, ...) +{ + return _ecl_funcall3(@'si::wrong-type-argument', object, type); +} + static cl_object si_simple_toplevel () { cl_env_ptr env = ecl_process_env(); diff --git a/src/c/symbols_list.h b/src/c/symbols_list.h index 1ed84675d..d8d0d8219 100755 --- a/src/c/symbols_list.h +++ b/src/c/symbols_list.h @@ -1782,7 +1782,7 @@ cl_symbols[] = { {SYS_ "PACKAGE-CHILDREN", SI_ORDINARY, NULL, -1, OBJNULL}, /* #endif ECL_RELATIVE_PACKAGE_NAMES */ -{SYS_ "WRONG-TYPE-ARGUMENT", SI_ORDINARY, NULL, -1, OBJNULL}, +{SYS_ "WRONG-TYPE-ARGUMENT", SI_ORDINARY, si_wrong_type_argument, -1, OBJNULL}, {SYS_ "*CURRENT-FORM*", SI_SPECIAL, NULL, -1, OBJNULL}, diff --git a/src/c/symbols_list2.h b/src/c/symbols_list2.h index 70e7eb4b3..0f1618396 100644 --- a/src/c/symbols_list2.h +++ b/src/c/symbols_list2.h @@ -1782,7 +1782,7 @@ cl_symbols[] = { {SYS_ "PACKAGE-CHILDREN",NULL}, /* #endif ECL_RELATIVE_PACKAGE_NAMES */ -{SYS_ "WRONG-TYPE-ARGUMENT",NULL}, +{SYS_ "WRONG-TYPE-ARGUMENT","si_wrong_type_argument"}, {SYS_ "*CURRENT-FORM*",NULL}, @@ -2018,6 +2018,7 @@ cl_symbols[] = { {SYS_ "ASSERT-FAILURE","ECL_NAME(si_assert_failure)"}, {SYS_ "ECASE-ERROR","ECL_NAME(si_ecase_error)"}, {SYS_ "ETYPECASE-ERROR","ECL_NAME(si_etypecase_error)"}, +{SYS_ "DO-CHECK-TYPE","ECL_NAME(si_do_check_type)"}, {SYS_ "SERIALIZE","si_serialize"}, {SYS_ "DESERIALIZE","si_deserialize"}, @@ -2315,7 +2316,5 @@ cl_symbols[] = { {SYS_ "BIND-SIMPLE-RESTARTS","ECL_NAME(si_bind_simple_restarts)"}, {SYS_ "BIND-SIMPLE-HANDLERS","ECL_NAME(si_bind_simple_handlers)"}, -{SYS_ "DO-CHECK-TYPE","ECL_NAME(si_do_check_type)"}, - /* Tag for end of list */ {NULL,NULL}}; diff --git a/src/c/typespec.d b/src/c/typespec.d index 2e54c8495..afa46d22d 100644 --- a/src/c/typespec.d +++ b/src/c/typespec.d @@ -93,9 +93,9 @@ cl_object ecl_type_error(cl_object function, const char *place, cl_object o, cl_object type) { - return funcall(5, @'si::wrong-type-argument', o, type, - (*place? make_constant_base_string(place) : ECL_NIL), - function); + si_wrong_type_argument(4, o, type, + (*place? make_constant_base_string(place) : ECL_NIL), + function); } /**********************************************************************/ diff --git a/src/cmp/sysfun.lsp b/src/cmp/sysfun.lsp index 9ef9acc37..eab3891f9 100644 --- a/src/cmp/sysfun.lsp +++ b/src/cmp/sysfun.lsp @@ -880,6 +880,7 @@ vector-pop adjust-array ;; assert.lsp si::do-check-type si::ecase-error si::etypecase-error + si::wrong-type-argument ;; assignment.lsp si::setf-definition ;; conditions.lsp diff --git a/src/h/external.h b/src/h/external.h index d8bdcf472..29b36729d 100755 --- a/src/h/external.h +++ b/src/h/external.h @@ -2167,6 +2167,9 @@ extern ECL_API cl_object cl_use_value _ECL_ARGS((cl_narg narg, cl_object value, extern ECL_API cl_object si_bind_simple_restarts(cl_object tag, cl_object names); extern ECL_API cl_object si_bind_simple_handlers(cl_object tag, cl_object names); extern ECL_API cl_object si_assert_failure _ECL_ARGS((cl_narg narg, cl_object V1, ...)); + +/* assert.lsp */ +extern ECL_API cl_object si_wrong_type_argument _ECL_ARGS((cl_narg narg, cl_object value, cl_object type, ...)); extern ECL_API cl_object si_ecase_error(cl_object value, cl_object values); extern ECL_API cl_object si_etypecase_error(cl_object value, cl_object type); extern ECL_API cl_object si_do_check_type(cl_object value, cl_object type, cl_object type_string, cl_object place);