comparison src/eval.c @ 5128:7be849cb8828 ben-lisp-object

merge
author Ben Wing <ben@xemacs.org>
date Sun, 07 Mar 2010 02:09:59 -0600
parents a9c41067dd88 47bcef7b0b44
children f965e31a35f0
comparison
equal deleted inserted replaced
5127:a9c41067dd88 5128:7be849cb8828
415 #endif 415 #endif
416 416
417 static int warning_will_be_discarded (Lisp_Object level); 417 static int warning_will_be_discarded (Lisp_Object level);
418 static Lisp_Object maybe_get_trapping_problems_backtrace (void); 418 static Lisp_Object maybe_get_trapping_problems_backtrace (void);
419 419
420
421
422 /* When parsing keyword arguments; is some element of NARGS
423 :allow-other-keys, and is that element followed by a non-nil Lisp
424 object? */
425
426 Boolint
427 non_nil_allow_other_keys_p (Elemcount offset, int nargs, Lisp_Object *args)
428 {
429 Lisp_Object key, value;
430 while (offset + 1 < nargs)
431 {
432 key = args[offset++];
433 value = args[offset++];
434 if (EQ (key, Q_allow_other_keys))
435 {
436 /* The ANSI Common Lisp standard says the first value for a given
437 keyword overrides. */
438 return !NILP (value);
439 }
440 }
441 return 0;
442 }
420 443
421 /************************************************************************/ 444 /************************************************************************/
422 /* The subr object type */ 445 /* The subr object type */
423 /************************************************************************/ 446 /************************************************************************/
424 447
3047 { 3070 {
3048 maybe_signal_error (Qinvalid_argument, reason, frob, class_, errb); 3071 maybe_signal_error (Qinvalid_argument, reason, frob, class_, errb);
3049 } 3072 }
3050 3073
3051 DOESNT_RETURN 3074 DOESNT_RETURN
3075 invalid_keyword_argument (Lisp_Object function, Lisp_Object keyword)
3076 {
3077 signal_error_1 (Qinvalid_keyword_argument, list2 (function, keyword));
3078 }
3079
3080 DOESNT_RETURN
3052 invalid_constant (const Ascbyte *reason, Lisp_Object frob) 3081 invalid_constant (const Ascbyte *reason, Lisp_Object frob)
3053 { 3082 {
3054 signal_error (Qinvalid_constant, reason, frob); 3083 signal_error (Qinvalid_constant, reason, frob);
3055 } 3084 }
3056 3085
4577 if (print_readably) 4606 if (print_readably)
4578 { 4607 {
4579 printing_unreadable_object ("multiple values"); 4608 printing_unreadable_object ("multiple values");
4580 } 4609 }
4581 4610
4582 if (0 == count) 4611 write_fmt_string (printcharfun,
4583 { 4612 "#<INTERNAL OBJECT (XEmacs bug?) %d multiple values,"
4584 write_msg_string (printcharfun, "#<zero-length multiple value>"); 4613 " data (", count);
4585 }
4586 4614
4587 for (index = 0; index < count;) 4615 for (index = 0; index < count;)
4588 { 4616 {
4589 if (index != 0 && 4617 if (index != 0 &&
4590 (index < first_desired || 4618 (index < first_desired ||
4601 4629
4602 ++index; 4630 ++index;
4603 4631
4604 if (count > 1 && index < count) 4632 if (count > 1 && index < count)
4605 { 4633 {
4606 write_ascstring (printcharfun, " ;\n"); 4634 write_ascstring (printcharfun, " ");
4607 } 4635 }
4608 } 4636 }
4637
4638 write_fmt_string (printcharfun, ") 0x%lx>", (unsigned long) XPNTR (obj));
4609 } 4639 }
4610 4640
4611 static Lisp_Object 4641 static Lisp_Object
4612 mark_multiple_value (Lisp_Object obj) 4642 mark_multiple_value (Lisp_Object obj)
4613 { 4643 {