tccpp: Allow computed include like 42.h
The include directive needs to be parsed as pp-tokens, not as token (i.e. no conversion to TOK_STR or TOK_NUM). Also fix parsing computed includes using quoted strings.
This commit is contained in:
13
tests/42test.h
Normal file
13
tests/42test.h
Normal file
@ -0,0 +1,13 @@
|
||||
/* This file is to test compute #include directives. It's named so
|
||||
that it starts with a pre-processing number which isn't a valid
|
||||
number (42test.h). Including this must work. */
|
||||
#ifndef INC42_FIRST
|
||||
int have_included_42test_h;
|
||||
#define INC42_FIRST
|
||||
#elif !defined INC42_SECOND
|
||||
#define INC42_SECOND
|
||||
int have_included_42test_h_second;
|
||||
#else
|
||||
#define INC42_THIRD
|
||||
int have_included_42test_h_third;
|
||||
#endif
|
||||
@ -44,7 +44,7 @@
|
||||
#define TCCLIB_INC <tcclib.h>
|
||||
#define TCCLIB_INC1 <tcclib
|
||||
#define TCCLIB_INC2 h>
|
||||
#define TCCLIB_INC3 "tcclib"
|
||||
#define TCCLIB_INC3 "tcclib.h"
|
||||
|
||||
#include TCCLIB_INC
|
||||
|
||||
@ -52,8 +52,7 @@
|
||||
|
||||
#include TCCLIB_INC1.h>
|
||||
|
||||
/* gcc 3.2 does not accept that (bug ?) */
|
||||
//#include TCCLIB_INC3 ".h"
|
||||
#include TCCLIB_INC3
|
||||
|
||||
#include <tcclib.h>
|
||||
|
||||
@ -61,6 +60,17 @@
|
||||
|
||||
#include "tcctest.h"
|
||||
|
||||
/* Test two more ways to include a file named like a pp-number */
|
||||
#define INC(name) <tests/name.h>
|
||||
#define funnyname 42test.h
|
||||
#define incdir tests/
|
||||
#define incname < incdir funnyname >
|
||||
#define __stringify(x) #x
|
||||
#define stringify(x) __stringify(x)
|
||||
#include INC(42test)
|
||||
#include incname
|
||||
#include stringify(funnyname)
|
||||
|
||||
void intdiv_test();
|
||||
void string_test();
|
||||
void expr_test();
|
||||
@ -396,6 +406,11 @@ comment
|
||||
printf("%s\n", __BASE_FILE__);
|
||||
printf("%s\n", get_file_from_header());
|
||||
printf("%s\n", __FILE__);
|
||||
|
||||
/* Check that funnily named include was in fact included */
|
||||
have_included_42test_h = 1;
|
||||
have_included_42test_h_second = 1;
|
||||
have_included_42test_h_third = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user