From e16722f0d0acc77d8aaa9a59339056b63ff84c03 2020-02-10 15:48:57 From: Hans-Dieter Hiep Date: 2020-02-10 15:48:57 Subject: [PATCH] Lift parser restriction on assignable expressions --- diff --git a/src/protocol/parser.rs b/src/protocol/parser.rs index da7f78c16934df9f13e2bce24528a3e1459a8502..ab1611acf6699235c4208c300f26d606283ddeb7 100644 --- a/src/protocol/parser.rs +++ b/src/protocol/parser.rs @@ -1575,9 +1575,7 @@ struct IndexableExpressions { } impl IndexableExpressions { - fn new() -> Self { - IndexableExpressions { indexable: false } - } + fn new() -> Self { IndexableExpressions { indexable: false } } fn error(&self, position: InputPosition) -> VisitorResult { Err(ParseError::new(position, "Unindexable expression")) } @@ -1627,10 +1625,12 @@ impl Visitor for IndexableExpressions { expr: IndexingExpressionId, ) -> VisitorResult { let old = self.indexable; - self.indexable = false; + self.indexable = true; self.visit_expression(h, h[expr].subject)?; + self.indexable = false; + self.visit_expression(h, h[expr].index)?; self.indexable = old; - self.visit_expression(h, h[expr].index) + Ok(()) } fn visit_slicing_expression( &mut self, diff --git a/testdata/parser/negative/20.txt b/testdata/parser/negative/20.txt deleted file mode 100644 index 41f6d4d1d7e99f9f2719619dab57624c85068f43..0000000000000000000000000000000000000000 --- a/testdata/parser/negative/20.txt +++ /dev/null @@ -1,3 +0,0 @@ -Parse error at 20.pdl:6:10: Unindexable expression - x[1] = x[1][0:1]; - ^ diff --git a/testdata/parser/negative/20.pdl b/testdata/parser/positive/20.pdl similarity index 100% rename from testdata/parser/negative/20.pdl rename to testdata/parser/positive/20.pdl