summaryrefslogtreecommitdiff
path: root/dev-haskell/gtk2hs-buildtools/files/gtk2hs-buildtools-0.13.8.0-gcc-11.patch
blob: 123c1359ff1b5e34ca162d12446a68d43ef15781 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Same fix as https://github.com/visq/language-c/issues/74

"""
Lexer: allow zeros as line numbers in preprocessed directives

Starting from `gcc-11` initial line numbers not related to
actual files are marked as zeros. See the "preprocessor:
Better line info for <builtin> & <command-line>"
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=6bf2ff0d52a9

language-c's grammar did not allow it (by accident)

```
Prelude> Language.C.parseC (Data.ByteString.Char8.pack "# 0 \"/dev/null\"\n") Language.C.nopos
Left <no file>:: [ERROR]  >>> Syntax Error !
  Lexical error !
  The character '#' does not fit here.
```

The change allows '0' in line numbers as well.
"""
--- a/c2hs/c/CLexer.x
+++ b/c2hs/c/CLexer.x
@@ -130,7 +130,7 @@ $white+					;
 --  * allows further ints after the file name a la GCC; as the GCC CPP docu
 --   doesn't say how many ints there can be, we allow an unbound number
 --
-\#$space*@int$space*(\"($infname|@charesc)*\"$space*)?(@int$space*)*$eol
+\#$space*@digits$space*(\"($infname|@charesc)*\"$space*)?(@int$space*)*$eol
   { \pos len str -> setPos (adjustPos (take len str) pos) >> lexToken }
 
 -- #pragma directive (K&R A12.8)