@@ -47,8 +47,13 @@ class TestTokenizer : public TestFixture {
4747
4848private:
4949 const Settings settings0 = settingsBuilder().library(" qt.cfg" ).build();
50- const Settings settings1 = settingsBuilder().library(" qt .cfg" ).library(" std .cfg" ).debugwarnings().build();
50+ const Settings settings1 = settingsBuilder().library(" std .cfg" ).library(" qt .cfg" ).debugwarnings().build();
5151 const Settings settings2 = settingsBuilder(settings1).cpp(Standards::CPP11).c(Standards::C11).build();
52+ const Settings settings2_win32a = settingsBuilder(settings2).platform(Platform::Type::Win32A).build();
53+ const Settings settings2_win32w = settingsBuilder(settings2).platform(Platform::Type::Win32W).build();
54+ const Settings settings2_win64 = settingsBuilder(settings2).platform(Platform::Type::Win64).build();
55+ const Settings settings2_unix32 = settingsBuilder(settings2).platform(Platform::Type::Unix32).build();
56+ const Settings settings2_unix64 = settingsBuilder(settings2).platform(Platform::Type::Unix64).build();
5257 const Settings settings3 = settingsBuilder(settings0).c(Standards::C89).cpp(Standards::CPP03).build();
5358 const Settings settings_windows = settingsBuilder().library(" windows.cfg" ).debugwarnings().cpp(Standards::CPP11).build();
5459
@@ -535,19 +540,14 @@ class TestTokenizer : public TestFixture {
535540 struct TokenizeOptions
536541 {
537542 bool expand = true ;
538- Platform::Type platform = Platform::Type::Native;
539543 bool cpp = true ;
540- Standards::cppstd_t cppstd = Standards::CPP11;
541- Standards::cstd_t cstd = Standards::C11;
542544 };
543545
544546#define tokenizeAndStringify (...) tokenizeAndStringify_(__FILE__, __LINE__, __VA_ARGS__)
545547 template <size_t size>
546548 std::string tokenizeAndStringify_ (const char * file, int linenr, const char (&code)[size], const TokenizeOptions& opt = make_default_obj{}) {
547- const Settings settings = settingsBuilder (settings1).cpp (opt.cppstd ).c (opt.cstd ).platform (opt.platform ).build ();
548-
549549 // tokenize..
550- SimpleTokenizer tokenizer (settings , *this , opt.cpp );
550+ SimpleTokenizer tokenizer (settings2 , *this , opt.cpp );
551551 ASSERT_LOC (tokenizer.tokenize (code), file, linenr);
552552
553553 if (tokenizer.tokens ())
@@ -566,13 +566,13 @@ class TestTokenizer : public TestFixture {
566566 }
567567
568568 template <size_t size>
569- std::string tokenizeAndStringify_ (const char * file, int line, const char (&code)[size], const Settings &settings, bool cpp = true) {
569+ std::string tokenizeAndStringify_ (const char * file, int line, const char (&code)[size], const Settings &settings, bool cpp = true, bool expand = true ) {
570570 // tokenize..
571571 SimpleTokenizer tokenizer (settings, *this , cpp);
572572 ASSERT_LOC (tokenizer.tokenize (code), file, line);
573573 if (!tokenizer.tokens ())
574574 return " " ;
575- return tokenizer.tokens ()->stringifyList (false , true , false , true , false , nullptr , nullptr );
575+ return tokenizer.tokens ()->stringifyList (false , expand , false , true , false , nullptr , nullptr );
576576 }
577577
578578#define tokenizeAndStringifyWindows (...) tokenizeAndStringifyWindows_(__FILE__, __LINE__, __VA_ARGS__)
@@ -2032,7 +2032,7 @@ class TestTokenizer : public TestFixture {
20322032 const char code[] = " struct foo {\n "
20332033 " void operator delete(void *obj, size_t sz);\n "
20342034 " }\n " ;
2035- const std::string actual (tokenizeAndStringify (code, dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
2035+ const std::string actual (tokenizeAndStringify (code, settings2_win32a ));
20362036
20372037 const char expected[] = " struct foo {\n "
20382038 " void operatordelete ( void * obj , unsigned long sz ) ;\n "
@@ -2568,8 +2568,9 @@ class TestTokenizer : public TestFixture {
25682568 }
25692569
25702570 void vardecl14 () {
2571+ const Settings s = settingsBuilder (settings1).cpp (Standards::CPP03).build ();
25712572 const char code[] = " ::std::tr1::shared_ptr<int> pNum1, pNum2;\n " ;
2572- ASSERT_EQUALS (" :: std :: tr1 :: shared_ptr < int > pNum1 ; :: std :: tr1 :: shared_ptr < int > pNum2 ;" , tokenizeAndStringify (code, dinit (TokenizeOptions, $. expand = false , $. cppstd = Standards::CPP03) ));
2573+ ASSERT_EQUALS (" :: std :: tr1 :: shared_ptr < int > pNum1 ; :: std :: tr1 :: shared_ptr < int > pNum2 ;" , tokenizeAndStringify (code, s, true , false ));
25732574 }
25742575
25752576 void vardecl15 () {
@@ -5301,72 +5302,72 @@ class TestTokenizer : public TestFixture {
53015302
53025303 void microsoftMemory () {
53035304 const char code1a[] = " void foo() { int a[10], b[10]; CopyMemory(a, b, sizeof(a)); }" ;
5304- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcpy ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code1a,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5305+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcpy ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code1a,settings2_win32a ));
53055306
53065307 const char code1b[] = " void foo() { int a[10], b[10]; RtlCopyMemory(a, b, sizeof(a)); }" ;
5307- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcpy ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code1b,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5308+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcpy ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code1b,settings2_win32a ));
53085309
53095310 const char code1c[] = " void foo() { int a[10], b[10]; RtlCopyBytes(a, b, sizeof(a)); }" ;
5310- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcpy ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code1c,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5311+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcpy ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code1c,settings2_win32a ));
53115312
53125313 const char code2a[] = " void foo() { int a[10]; FillMemory(a, sizeof(a), 255); }" ;
5313- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 255 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code2a,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5314+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 255 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code2a,settings2_win32a ));
53145315 const char code2b[] = " void foo() { int a[10]; RtlFillMemory(a, sizeof(a), 255); }" ;
5315- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 255 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code2b,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5316+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 255 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code2b,settings2_win32a ));
53165317 const char code2c[] = " void foo() { int a[10]; RtlFillBytes(a, sizeof(a), 255); }" ;
5317- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 255 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code2c,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5318+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 255 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code2c,settings2_win32a ));
53185319
53195320 const char code3a[] = " void foo() { int a[10], b[10]; MoveMemory(a, b, sizeof(a)); }" ;
5320- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memmove ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code3a,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5321+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memmove ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code3a,settings2_win32a ));
53215322 const char code3b[] = " void foo() { int a[10], b[10]; RtlMoveMemory(a, b, sizeof(a)); }" ;
5322- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memmove ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code3b,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5323+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memmove ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code3b,settings2_win32a ));
53235324
53245325 const char code4a[] = " void foo() { int a[10]; ZeroMemory(a, sizeof(a)); }" ;
5325- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4a,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5326+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4a,settings2_win32a ));
53265327 const char code4b[] = " void foo() { int a[10]; RtlZeroMemory(a, sizeof(a)); }" ;
5327- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4b,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5328+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4b,settings2_win32a ));
53285329 const char code4c[] = " void foo() { int a[10]; RtlZeroBytes(a, sizeof(a)); }" ;
5329- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4c,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5330+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4c,settings2_win32a ));
53305331 const char code4d[] = " void foo() { int a[10]; RtlSecureZeroMemory(a, sizeof(a)); }" ;
5331- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4d,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5332+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; memset ( a , 0 , sizeof ( a ) ) ; }" , tokenizeAndStringify (code4d,settings2_win32a ));
53325333
53335334 const char code5[] = " void foo() { int a[10], b[10]; RtlCompareMemory(a, b, sizeof(a)); }" ;
5334- ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcmp ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code5,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5335+ ASSERT_EQUALS (" void foo ( ) { int a [ 10 ] ; int b [ 10 ] ; memcmp ( a , b , sizeof ( a ) ) ; }" , tokenizeAndStringify (code5,settings2_win32a ));
53355336
53365337 const char code6[] = " void foo() { ZeroMemory(f(1, g(a, b)), h(i, j(0, 1))); }" ;
5337- ASSERT_EQUALS (" void foo ( ) { memset ( f ( 1 , g ( a , b ) ) , 0 , h ( i , j ( 0 , 1 ) ) ) ; }" , tokenizeAndStringify (code6,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5338+ ASSERT_EQUALS (" void foo ( ) { memset ( f ( 1 , g ( a , b ) ) , 0 , h ( i , j ( 0 , 1 ) ) ) ; }" , tokenizeAndStringify (code6,settings2_win32a ));
53385339
53395340 const char code7[] = " void foo() { FillMemory(f(1, g(a, b)), h(i, j(0, 1)), 255); }" ;
5340- ASSERT_EQUALS (" void foo ( ) { memset ( f ( 1 , g ( a , b ) ) , 255 , h ( i , j ( 0 , 1 ) ) ) ; }" , tokenizeAndStringify (code7,dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5341+ ASSERT_EQUALS (" void foo ( ) { memset ( f ( 1 , g ( a , b ) ) , 255 , h ( i , j ( 0 , 1 ) ) ) ; }" , tokenizeAndStringify (code7,settings2_win32a ));
53415342 }
53425343
53435344 void microsoftString () {
53445345 const char code1a[] = " void foo() { _tprintf (_T(\" test\" ) _T(\" 1\" )); }" ;
5345- ASSERT_EQUALS (" void foo ( ) { printf ( \" test1\" ) ; }" , tokenizeAndStringify (code1a, dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5346+ ASSERT_EQUALS (" void foo ( ) { printf ( \" test1\" ) ; }" , tokenizeAndStringify (code1a, settings2_win32a ));
53465347 const char code1b[] = " void foo() { _tprintf (_TEXT(\" test\" ) _TEXT(\" 2\" )); }" ;
5347- ASSERT_EQUALS (" void foo ( ) { printf ( \" test2\" ) ; }" , tokenizeAndStringify (code1b, dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5348+ ASSERT_EQUALS (" void foo ( ) { printf ( \" test2\" ) ; }" , tokenizeAndStringify (code1b, settings2_win32a ));
53485349 const char code1c[] = " void foo() { _tprintf (TEXT(\" test\" ) TEXT(\" 3\" )); }" ;
5349- ASSERT_EQUALS (" void foo ( ) { printf ( \" test3\" ) ; }" , tokenizeAndStringify (code1c, dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5350+ ASSERT_EQUALS (" void foo ( ) { printf ( \" test3\" ) ; }" , tokenizeAndStringify (code1c, settings2_win32a ));
53505351
53515352 const char code2a[] = " void foo() { _tprintf (_T(\" test\" ) _T(\" 1\" )); }" ;
5352- ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test1\" ) ; }" , tokenizeAndStringify (code2a, dinit (TokenizeOptions, $. platform = Platform::Type::Win32W) ));
5353- ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test1\" ) ; }" , tokenizeAndStringify (code2a, dinit (TokenizeOptions, $. platform = Platform::Type::Win64) ));
5353+ ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test1\" ) ; }" , tokenizeAndStringify (code2a, settings2_win32w ));
5354+ ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test1\" ) ; }" , tokenizeAndStringify (code2a, settings2_win64 ));
53545355 const char code2b[] = " void foo() { _tprintf (_TEXT(\" test\" ) _TEXT(\" 2\" )); }" ;
5355- ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test2\" ) ; }" , tokenizeAndStringify (code2b, dinit (TokenizeOptions, $. platform = Platform::Type::Win32W) ));
5356- ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test2\" ) ; }" , tokenizeAndStringify (code2b, dinit (TokenizeOptions, $. platform = Platform::Type::Win64) ));
5356+ ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test2\" ) ; }" , tokenizeAndStringify (code2b, settings2_win32w ));
5357+ ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test2\" ) ; }" , tokenizeAndStringify (code2b, settings2_win64 ));
53575358 const char code2c[] = " void foo() { _tprintf (TEXT(\" test\" ) TEXT(\" 3\" )); }" ;
5358- ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test3\" ) ; }" , tokenizeAndStringify (code2c, dinit (TokenizeOptions, $. platform = Platform::Type::Win32W) ));
5359- ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test3\" ) ; }" , tokenizeAndStringify (code2c, dinit (TokenizeOptions, $. platform = Platform::Type::Win64) ));
5359+ ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test3\" ) ; }" , tokenizeAndStringify (code2c, settings2_win32w ));
5360+ ASSERT_EQUALS (" void foo ( ) { wprintf ( L\" test3\" ) ; }" , tokenizeAndStringify (code2c, settings2_win64 ));
53605361 }
53615362
53625363 void borland () {
53635364 // __closure
53645365 ASSERT_EQUALS (" int ( * a ) ( ) ;" , // TODO VarId
5365- tokenizeAndStringify (" int (__closure *a)();" , dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5366+ tokenizeAndStringify (" int (__closure *a)();" , settings2_win32a ));
53665367
53675368 // __property
53685369 ASSERT_EQUALS (" class Fred { ; __property ; } ;" ,
5369- tokenizeAndStringify (" class Fred { __property int x = { } };" , dinit (TokenizeOptions, $. platform = Platform::Type::Win32A) ));
5370+ tokenizeAndStringify (" class Fred { __property int x = { } };" , settings2_win32a ));
53705371 }
53715372
53725373 void simplifySQL () {
@@ -6417,8 +6418,9 @@ class TestTokenizer : public TestFixture {
64176418 ASSERT_EQUALS (" int func1 ( ) ;" ,
64186419 tokenizeAndStringify (" [[clang::optnone]] [[nodiscard]] int func1();" ));
64196420
6421+ const Settings s = settingsBuilder (settings1).c (Standards::C23).build ();
64206422 ASSERT_EQUALS (" void f ( int i ) { exit ( i ) ; }" ,
6421- tokenizeAndStringify (" [[noreturn]] void f(int i) { exit(i); }" , dinit (TokenizeOptions, $. cpp = false , $. cstd = Standards::C23) ));
6423+ tokenizeAndStringify (" [[noreturn]] void f(int i) { exit(i); }" , s, false ));
64226424 }
64236425
64246426 void simplifyCaseRange () {
@@ -7308,6 +7310,7 @@ class TestTokenizer : public TestFixture {
73087310 ASSERT_EQUALS (" " , errout_str ());
73097311
73107312 // #11128
7313+ const Settings s = settingsBuilder (settings1).cpp (Standards::CPP17).build ();
73117314 ASSERT_NO_THROW (tokenizeAndStringify (" template <typename T>\n "
73127315 " struct S;\n "
73137316 " struct R;\n "
@@ -7317,7 +7320,7 @@ class TestTokenizer : public TestFixture {
73177320 " return y;\n "
73187321 " else\n "
73197322 " return z;\n "
7320- " }\n " , dinit (TokenizeOptions, $. cppstd = Standards::CPP17) ));
7323+ " }\n " , s ));
73217324 ignore_errout ();
73227325
73237326 // #10079 - createInnerAST bug..
@@ -8926,18 +8929,18 @@ class TestTokenizer : public TestFixture {
89268929 void simplifyPlatformTypes () {
89278930 {
89288931 const char code[] = " size_t f();" ;
8929- ASSERT_EQUALS (" unsigned long f ( ) ;" , tokenizeAndStringify (code, dinit (TokenizeOptions, $. platform = Platform::Type::Unix32) ));
8930- ASSERT_EQUALS (" unsigned long f ( ) ;" , tokenizeAndStringify (code, dinit (TokenizeOptions, $. platform = Platform::Type::Unix64) ));
8932+ ASSERT_EQUALS (" unsigned long f ( ) ;" , tokenizeAndStringify (code, settings2_unix32 ));
8933+ ASSERT_EQUALS (" unsigned long f ( ) ;" , tokenizeAndStringify (code, settings2_unix64 ));
89318934 }
89328935 {
89338936 const char code[] = " ssize_t f();" ;
8934- ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, dinit (TokenizeOptions, $. platform = Platform::Type::Unix32) ));
8935- ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, dinit (TokenizeOptions, $. platform = Platform::Type::Unix64) ));
8937+ ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, settings2_unix32 ));
8938+ ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, settings2_unix64 ));
89368939 }
89378940 {
89388941 const char code[] = " std::ptrdiff_t f();" ;
8939- ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, dinit (TokenizeOptions, $. platform = Platform::Type::Unix32) ));
8940- ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, dinit (TokenizeOptions, $. platform = Platform::Type::Unix64) ));
8942+ ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, settings2_unix32 ));
8943+ ASSERT_EQUALS (" long f ( ) ;" , tokenizeAndStringify (code, settings2_unix64 ));
89418944 }
89428945 }
89438946
0 commit comments