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:
Michael Matz
2016-08-08 22:26:11 +02:00
parent 0381387640
commit d0d25ec7df
3 changed files with 50 additions and 29 deletions

View File

@ -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;
}