Skip to content

Commit fc47008

Browse files
JCapuchokvark
authored andcommitted
[glsl-in] Allow expression statements to begin with ++ or --
This would otherwise cause the parser to enter an infinite loop. Fixes gfx-rs#1232
1 parent f14817e commit fc47008

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/front/glsl/parser/functions.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,8 @@ impl<'source> ParsingContext<'source> {
495495
| TokenValue::Bang
496496
| TokenValue::Tilde
497497
| TokenValue::LeftParen
498+
| TokenValue::Increment
499+
| TokenValue::Decrement
498500
| TokenValue::Identifier(_)
499501
| TokenValue::TypeName(_)
500502
| TokenValue::IntConstant(_)

src/front/glsl/parser_tests.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,9 +778,10 @@ fn swizzles() {
778778
}
779779

780780
#[test]
781-
fn vector_indexing() {
781+
fn expressions() {
782782
let mut parser = Parser::default();
783783

784+
// Vector indexing
784785
parser
785786
.parse(
786787
&Options::from(ShaderStage::Vertex),
@@ -795,4 +796,20 @@ fn vector_indexing() {
795796
"#,
796797
)
797798
.unwrap();
799+
800+
// Prefix increment/decrement
801+
parser
802+
.parse(
803+
&Options::from(ShaderStage::Vertex),
804+
r#"
805+
# version 450
806+
void main() {
807+
uint index = 0;
808+
809+
--index;
810+
++index;
811+
}
812+
"#,
813+
)
814+
.unwrap();
798815
}

0 commit comments

Comments
 (0)