• R/O
  • SSH

quipu: Commit

quipu mercurial repository


Commit MetaInfo

Revisão35dee5c7df996449c7b816289e0af5216b3de396 (tree)
Hora2018-02-21 14:01:00
AutorAgustina Arzille <avarzille@rise...>
CommiterAgustina Arzille

Mensagem de Log

Small fixes

Mudança Sumário

Diff

diff -r 789dfebcf228 -r 35dee5c7df99 function.h
--- a/function.h Tue Feb 20 17:03:06 2018 -0300
+++ b/function.h Wed Feb 21 05:01:00 2018 +0000
@@ -144,6 +144,22 @@
144144 return (__interp->retval);
145145 }
146146
147+template <class ...Args>
148+object call_fct (interpreter *__interp,
149+ object (*__fn) (interpreter *, object *, int), Args... __args)
150+{
151+ lazy_arg __lst[] = { __args... };
152+ uint32_t __sp = __interp->sp;
153+
154+ __interp->growstk (QP_NELEM (__lst));
155+ for (auto& __s : __lst)
156+ __interp->stack[__sp++] = __s.get ();
157+
158+ __fn (__interp, &__interp->stack[__sp], QP_NELEM (__lst));
159+ __interp->sp = __sp;
160+ return (__interp->retval);
161+}
162+
147163 QP_DECLS_END
148164
149165 #endif
diff -r 789dfebcf228 -r 35dee5c7df99 io.cpp
--- a/io.cpp Tue Feb 20 17:03:06 2018 -0300
+++ b/io.cpp Wed Feb 21 05:01:00 2018 +0000
@@ -941,6 +941,16 @@
941941 return (false);
942942 }
943943
944+static inline void
945+bq_nonlist_splice_err (interpreter *interp, bool dot)
946+{
947+ char errmsg[] = "read: the syntax `,@form is invalid";
948+ if (dot)
949+ errmsg[19] = '.';
950+
951+ interp->raise2 ("parse-error", errmsg);
952+}
953+
944954 object rdstate::read_bq (object lbl)
945955 {
946956 this->unquoted = false;
@@ -952,13 +962,7 @@
952962 object head = xcar (obj), tst = QP_S(commaat);
953963
954964 if (head == QP_S(commaat) || head == QP_S(commadot))
955- {
956- char errmsg[] = "read: the syntax `,@form is invalid";
957- if (head == QP_S(commadot))
958- errmsg[19] = '.';
959-
960- this->interp->raise2 ("parse-error", errmsg);
961- }
965+ bq_nonlist_splice_err (interp, head == QP_S(commadot));
962966 else if (bq_member (tst, obj) || bq_member (tst = QP_S(commadot), obj))
963967 {
964968 char errmsg[] = "read: the syntax `( ... . ,@form) is invalid";
Show on old repository browser