t4034: add tests showing problematic cpp tokenizations
The word regex is too loose and matches long streaks of characters that should actually be separate tokens. Add these problematic test cases. Separate the lines with text that will remain identical in the pre- and post-image so that the diff algorithm will not lump removals and additions of consecutive lines together. This makes the expected output easier to read. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Sixt committed
Oct 8, 2021 at 19:09 UTC
3e063de46e6270606e058b96bfcc0baebc4aea81
3 files changed
+49
-7
t/t4034/cpp/expect
+18
-4
@@ -1,11 +1,25 @@
1
<BOLD>diff --git a/pre b/post<RESET>
2
-<BOLD>index c5672a2..4229868 100644<RESET>
2
+<BOLD>index 1229cdb..3feae6f 100644<RESET>
3
<BOLD>--- a/pre<RESET>
4
<BOLD>+++ b/post<RESET>
5
-<CYAN>@@ -1,16 +1,16 @@<RESET>
6
-Foo() : x(0<RED>&&1<RESET><GREEN>&42<RESET>) { <GREEN>bar(x);<RESET> }
5
+<CYAN>@@ -1,30 +1,30 @@<RESET>
6
+Foo() : x(0<RED>&&1<RESET><GREEN>&42<RESET>) { <RED>foo0<RESET><GREEN>bar<RESET>(x<RED>.f<RESET><GREEN>.F<RESET>ind); }
7
cout<<"Hello World<RED>!<RESET><GREEN>?<RESET>\n"<<endl;
8
-<GREEN>(<RESET>1<GREEN>) (<RESET>-1e10<GREEN>) (<RESET>0xabcdef<GREEN>)<RESET> '<RED>x<RESET><GREEN>y<RESET>'
8
+<GREEN>(<RESET>1 <RED>-1e10<RESET><GREEN>+1e10<RESET> 0xabcdef<GREEN>)<RESET> '<RED>x<RESET><GREEN>y<RESET>'
9
+// long double<RESET>
10
+<RED>3.141592653e-10l<RESET><GREEN>3.141592654e+10l<RESET>
11
+// float<RESET>
12
+120<RED>E5f<RESET><GREEN>E6f<RESET>
13
+// hex<RESET>
14
+<RED>0xdeadbeaf+8<RESET><GREEN>0xdeadBeaf+7<RESET>ULL
15
+// octal<RESET>
16
+<RED>01234567<RESET><GREEN>01234560<RESET>
17
+// binary<RESET>
18
+<RED>0b1000<RESET><GREEN>0b1100<RESET>+e1
19
+// expression<RESET>
20
+<RED>1.5-e+2+f<RESET><GREEN>1.5-e+3+f<RESET>
21
+// another one<RESET>
22
+str<RED>.e+65<RESET><GREEN>.e+75<RESET>
23
[a] b<RED>-><RESET><GREEN>->*<RESET>v d<RED>.e<RESET><GREEN>.*e<RESET>
24
<GREEN>~<RESET>!a <GREEN>!<RESET>~b c<RED>++<RESET><GREEN>+<RESET> d<RED>--<RESET><GREEN>-<RESET> e*<GREEN>*<RESET>f g<RED>&<RESET><GREEN>&&<RESET>h
25
a<RED>*<RESET><GREEN>*=<RESET>b c<RED>/<RESET><GREEN>/=<RESET>d e<RED>%<RESET><GREEN>%=<RESET>f
t/t4034/cpp/post
+16
-2
@@ -1,6 +1,20 @@
1
-Foo() : x(0&42) { bar(x); }
1
+Foo() : x(0&42) { bar(x.Find); }
2
cout<<"Hello World?\n"<<endl;
3
-(1) (-1e10) (0xabcdef) 'y'
3
+(1 +1e10 0xabcdef) 'y'
4
+// long double
5
+3.141592654e+10l
6
+// float
7
+120E6f
8
+// hex
9
+0xdeadBeaf+7ULL
10
+// octal
11
+01234560
12
+// binary
13
+0b1100+e1
14
+// expression
15
+1.5-e+3+f
16
+// another one
17
+str.e+75
18
[a] b->*v d.*e
19
~!a !~b c+ d- e**f g&&h
20
a*=b c/=d e%=f
t/t4034/cpp/pre
+15
-1
@@ -1,6 +1,20 @@
1
-Foo():x(0&&1){}
1
+Foo():x(0&&1){ foo0( x.find); }
2
cout<<"Hello World!\n"<<endl;
3
1 -1e10 0xabcdef 'x'
4
+// long double
5
+3.141592653e-10l
6
+// float
7
+120E5f
8
+// hex
9
+0xdeadbeaf+8ULL
10
+// octal
11
+01234567
12
+// binary
13
+0b1000+e1
14
+// expression
15
+1.5-e+2+f
16
+// another one
17
+str.e+65
18
[a] b->v d.e
19
!a ~b c++ d-- e*f g&h
20
a*b c/d e%f