mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
[wgsl-in] ability to take a pointer to something
This commit is contained in:
committed by
Dzmitry Malyshau
parent
baccfc68f5
commit
c41f050312
@@ -1271,37 +1271,43 @@ impl Parser {
|
||||
self.scopes.push(Scope::SingularExpr);
|
||||
//TODO: refactor this to avoid backing up
|
||||
let backup = lexer.clone();
|
||||
let handle = match lexer.next().0 {
|
||||
let (allow_deref, handle) = match lexer.next().0 {
|
||||
Token::Operation('-') => {
|
||||
let expr = crate::Expression::Unary {
|
||||
op: crate::UnaryOperator::Negate,
|
||||
expr: self.parse_singular_expression(lexer, ctx.reborrow())?,
|
||||
};
|
||||
ctx.expressions.append(expr)
|
||||
(true, ctx.expressions.append(expr))
|
||||
}
|
||||
Token::Operation('!') => {
|
||||
let expr = crate::Expression::Unary {
|
||||
op: crate::UnaryOperator::Not,
|
||||
expr: self.parse_singular_expression(lexer, ctx.reborrow())?,
|
||||
};
|
||||
ctx.expressions.append(expr)
|
||||
(true, ctx.expressions.append(expr))
|
||||
}
|
||||
Token::Operation('&') => {
|
||||
let handle = self.parse_primary_expression(lexer, ctx.reborrow())?;
|
||||
(false, handle)
|
||||
}
|
||||
Token::Word(word) => {
|
||||
match self.parse_function_call_inner(lexer, word, ctx.reborrow())? {
|
||||
let handle = match self.parse_function_call_inner(lexer, word, ctx.reborrow())? {
|
||||
Some(handle) => handle,
|
||||
None => {
|
||||
*lexer = backup;
|
||||
self.parse_primary_expression(lexer, ctx.reborrow())?
|
||||
}
|
||||
}
|
||||
};
|
||||
(true, handle)
|
||||
}
|
||||
_ => {
|
||||
*lexer = backup;
|
||||
self.parse_primary_expression(lexer, ctx.reborrow())?
|
||||
let handle = self.parse_primary_expression(lexer, ctx.reborrow())?;
|
||||
(true, handle)
|
||||
}
|
||||
};
|
||||
|
||||
let post_handle = self.parse_postfix(lexer, ctx, handle, true)?;
|
||||
let post_handle = self.parse_postfix(lexer, ctx, handle, allow_deref)?;
|
||||
self.scopes.pop();
|
||||
Ok(post_handle)
|
||||
}
|
||||
|
||||
@@ -274,3 +274,15 @@ fn parse_expressions() {
|
||||
const z: bool = !(0.0 == 1.0);
|
||||
}").unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_pointers() {
|
||||
parse_str(
|
||||
"fn foo() {
|
||||
var x: f32 = 1.0;
|
||||
const px = &x;
|
||||
const py = frexp(0.5, px);
|
||||
}",
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user