Jacek Caban (@jacek) commented about tools/widl/parser.l:
+ } + winrt[^\n]* { + yy_pop_state(); + winrt_enable( FALSE ); + } + [^\n]* { + yy_pop_state(); + return token_str( aPRAGMA, yytext, yylval ); + } +} +<PP_LINE>[0-9]+{ws}* { + line_number = strtoul( yytext, NULL, 10 ) - 1; /* We didn't read the newline */ + yy_pop_state(); + yy_push_state(PP_FILE); + } +<PP_FILE>\"(\\[^n]|[^"\\])*\"{ws}* { That too, but I meant something like `<PP_FILE>\"(\\[^n]|[^"\\\n])*\"{ws}*`, so that it doesn't match unterminated string with a quote from another line.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/2444#note_27318