case Bnreverse:
error ("Bnreverse not supported");
break;
+
case Bsetcar:
- error ("Bsetcar not supported");
+ POP2;
+ res = comp_emit_call ("Fsetcar", comp.lisp_obj_type, 2, args);
+ PUSH_LVAL (res);
break;
+
case Bsetcdr:
- error ("Bsetcdr not supported");
+ POP2;
+ res = comp_emit_call ("Fsetcdr", comp.lisp_obj_type, 2, args);
+ PUSH_LVAL (res);
break;
+
case Bcar_safe:
error ("Bcar_safe not supported");
break;
(should (eq (comp-tests-geq-f 3 3) t))
(should (eq (comp-tests-geq-f 2 3) nil)))
+(ert-deftest comp-tests-setcarcdr ()
+ "Testing setcar setcdr."
+ (defun comp-tests-setcar-f (x y)
+ (setcar x y)
+ x)
+ (defun comp-tests-setcdr-f (x y)
+ (setcdr x y)
+ x)
+
+ (byte-compile #'comp-tests-setcar-f)
+ (byte-compile #'comp-tests-setcdr-f)
+ (native-compile #'comp-tests-setcar-f)
+ (native-compile #'comp-tests-setcdr-f)
+
+ (should (equal (comp-tests-setcar-f '(10 . 10) 3) '(3 . 10)))
+ (should (equal (comp-tests-setcdr-f '(10 . 10) 3) '(10 . 3))))
+
(ert-deftest comp-tests-gc ()
"Try to do some longer computation to let the gc kick in."
(dotimes (_ 100000)