In a declaration with multiple variables, the variables must be created before the initializer of the next variable is parsed. This is required for initializers such as:
``` float a = 1, b = a, c = b + 1; ```
The solution is to parse the type information in the same rule as the first variable ('a' in this case) so that it can be declared before the parser reaches the initializer for the following variables.
To initialize the following variables, the type information is passed along from the first variable's struct parse_variable_def to the next and so on.
---
Solves https://bugs.winehq.org/show_bug.cgi?id=54484, pointed out by @nsivov.
-- v3: vkd3d-shader/hlsl: Declare vars individually when parsing struct declarations. vkd3d-shader/hlsl: Declare vars individually when parsing regular declarations. vkd3d-shader/hlsl: Split declare_vars().