Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl.y:
}
loop_statement:
KW_WHILE '(' expr ')' statement
attribute_list_optional KW_WHILE '(' expr ')' statement {
$$ = create_loop(ctx, LOOP_WHILE, NULL, $3, NULL, $5, @1);
if (!($$ = create_loop(ctx, LOOP_WHILE, &$1, NULL, $4, NULL, $6, &@1)))
YYABORT;
I think there is the general sentiment that you should try to avoid aborting unless you really need. In this case it seems that you can just call `hlsl_error()` and return an empty list, so parsing can continue and other errors can be found in the same run.