Subject: bug#15880: Compute C declarations for DEFSYMs automatically.

From: Eli Zaretskii <[email-masked]>
Date: Mon, 05 Jan 2015 21:27:28 +0200

> Date: Mon, 05 Jan 2015 20:56:36 +0200
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked]
> 
>   In file included from dispnew.c:26:0:
>   lisp.h:209:23: error: expected ')' before '||' token
>       (suppress_checking || (cond)     \
> 			 ^
>   lisp.h:360:5: note: in expansion of macro 'eassert'
>       (eassert (SYMBOLP (a)), \
>        ^
>   lisp.h:405:21: note: in expansion of macro 'lisp_h_XSYMBOL'
>    # define XSYMBOL(a) lisp_h_XSYMBOL (a)
> 		       ^
>   lisp.h:612:28: note: in expansion of macro 'XSYMBOL'
>    INLINE struct Lisp_Symbol *XSYMBOL (Lisp_Object);
> 			      ^
>   lisp.h:360:26: error: expected ')' before ',' token
>       (eassert (SYMBOLP (a)), \
> 			    ^
>   lisp.h:405:21: note: in expansion of macro 'lisp_h_XSYMBOL'
>    # define XSYMBOL(a) lisp_h_XSYMBOL (a)
> 		       ^
>   lisp.h:612:28: note: in expansion of macro 'XSYMBOL'
>    INLINE struct Lisp_Symbol *XSYMBOL (Lisp_Object);

Is this the right fix?

diff --git a/src/lisp.h b/src/lisp.h
index fc04ab9..d9f43cc 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -609,7 +609,9 @@ INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t,
 INLINE bool SUBRP (Lisp_Object);
 INLINE bool (SYMBOLP) (Lisp_Object);
 INLINE bool (VECTORLIKEP) (Lisp_Object);
+#ifndef XSYMBOL
 INLINE struct Lisp_Symbol *XSYMBOL (Lisp_Object);
+#endif
 INLINE void *(XUNTAGBASE) (Lisp_Object, int, void *);
 INLINE bool WINDOWP (Lisp_Object);
 INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object);