summaryrefslogtreecommitdiffstats
path: root/crates/rebel-parse/src/ast.rs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2024-04-23 20:31:27 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2024-04-23 20:35:14 +0200
commitd4e537b87496298e2fbb83d70bdb3dfaae6807c9 (patch)
tree92d63cb322e9c570a894d6eb0fac909ef9421f83 /crates/rebel-parse/src/ast.rs
parenta0853a06d3e729ddfd93caa05f9581d00f5d30bf (diff)
downloadrebel-d4e537b87496298e2fbb83d70bdb3dfaae6807c9.tar
rebel-d4e537b87496298e2fbb83d70bdb3dfaae6807c9.zip
rebel-parse: introduce method calls as an Expr variant
Methods and fields exist in separate namespaces.
Diffstat (limited to 'crates/rebel-parse/src/ast.rs')
-rw-r--r--crates/rebel-parse/src/ast.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/rebel-parse/src/ast.rs b/crates/rebel-parse/src/ast.rs
index 1f98f15..ae5d61f 100644
--- a/crates/rebel-parse/src/ast.rs
+++ b/crates/rebel-parse/src/ast.rs
@@ -50,6 +50,11 @@ pub enum Expr<'a> {
expr: Box<Expr<'a>>,
args: Vec<Arg<'a>>,
},
+ Method {
+ expr: Box<Expr<'a>>,
+ method: Ident<'a>,
+ args: Vec<Arg<'a>>,
+ },
Index {
expr: Box<Expr<'a>>,
index: Box<Expr<'a>>,
@@ -86,6 +91,14 @@ impl<'a> Expr<'a> {
}
}
+ pub(crate) fn method(expr: Expr<'a>, method: Ident<'a>, args: Args<'a>) -> Self {
+ Expr::Method {
+ expr: Box::new(expr),
+ method,
+ args,
+ }
+ }
+
pub(crate) fn index(expr: Expr<'a>, index: Expr<'a>) -> Self {
Expr::Index {
expr: Box::new(expr),