Repository navigation
Conversation
The increment part of a for statement can be a comma-separated list of expressions, e.g. "for (int i = 0; i < 10; i++, j++)". The parser only read a single expression and then expected ')', so such shaders failed to translate. Parse the additional expressions and chain them through nextExpression, write them back as a list in the GLSL generator and visit all of them in HLSLTreeVisitor. Fixes projectM-visualizer#1043
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1043.
HLSL allows several expressions in the increment part of a for loop, like
for (int i = 0; i < 10; i++, j++), but the parser stopped after the first one and complained about the comma.With this change the parser keeps going while it sees commas and links the extra expressions through nextExpression, the same way function arguments are stored. The GLSL generator writes them back as a list, and the tree visitor walks all of them instead of just the first. Single increment loops come out exactly as before.
I added two cases to HLSLParserTest, one for parsing and one that checks the generated GLSL for a loop with three increments. The libprojectM and playlist unit tests pass on Linux with GCC. I didn't test it with an actual preset in a running visualizer.