From 8f60f586bea83eb12ee0aae690b67df27dbdde79 Mon Sep 17 00:00:00 2001 From: Grant Wuerker Date: Mon, 20 Sep 2021 13:10:38 -0600 Subject: [PATCH 1/5] Use statement parsing. --- crates/parser/src/ast.rs | 26 ++ crates/parser/src/grammar/module.rs | 139 +++++++++- crates/parser/src/lexer/token.rs | 7 +- crates/parser/src/parser.rs | 37 ++- crates/parser/tests/cases/parse_ast.rs | 10 + .../snapshots/cases__parse_ast__use_glob.snap | 46 ++++ .../cases__parse_ast__use_nested1.snap | 229 ++++++++++++++++ .../cases__parse_ast__use_nested2.snap | 255 ++++++++++++++++++ .../cases__parse_ast__use_simple1.snap | 47 ++++ .../cases__parse_ast__use_simple2.snap | 53 ++++ 10 files changed, 834 insertions(+), 15 deletions(-) create mode 100644 crates/parser/tests/cases/snapshots/cases__parse_ast__use_glob.snap create mode 100644 crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested1.snap create mode 100644 crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested2.snap create mode 100644 crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple1.snap create mode 100644 crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple2.snap diff --git a/crates/parser/src/ast.rs b/crates/parser/src/ast.rs index e1a3df676f..a93a03767b 100644 --- a/crates/parser/src/ast.rs +++ b/crates/parser/src/ast.rs @@ -37,6 +37,32 @@ pub enum Import { }, } +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] +pub struct Path { + pub names: Vec>, + pub trailing_delim: bool, +} + +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] +pub struct Use { + pub tree: Node, +} + +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] +pub enum UseTree { + Glob { + prefix: Node, + }, + Nested { + prefix: Node, + children: Vec>, + }, + Simple { + path: Node, + rename: Option>, + }, +} + #[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] pub struct TypeAlias { pub name: Node, diff --git a/crates/parser/src/grammar/module.rs b/crates/parser/src/grammar/module.rs index 0b0f754d83..cede14f1ff 100644 --- a/crates/parser/src/grammar/module.rs +++ b/crates/parser/src/grammar/module.rs @@ -1,6 +1,6 @@ use super::contracts::parse_contract_def; use super::types::{parse_struct_def, parse_type_alias}; -use crate::ast::{Import, Module, ModuleStmt, Pragma, SimpleImportName}; +use crate::ast::{Import, Module, ModuleStmt, Path, Pragma, SimpleImportName, Use, UseTree}; use crate::node::{Node, Span}; use crate::{Label, ParseFailed, ParseResult, Parser, TokenKind}; @@ -116,6 +116,143 @@ pub fn parse_from_import(par: &mut Parser) -> ParseResult> { todo!("parse from .. import (not supported in rest of compiler yet)") } +/// Parse a `::` delimited path. +pub fn parse_path(par: &mut Parser) -> ParseResult> { + let mut names = vec![]; + + let name = par.expect_with_notes(TokenKind::Name, "failed to parse path", |_| { + vec![ + "Note: paths must start with a name".into(), + "Example: `foo::bar`".into(), + ] + })?; + + names.push(Node::new(name.text.to_string(), name.span)); + + loop { + if par.peek() == Some(TokenKind::ColonColon) { + let delim_tok = par.next()?; + + if par.peek() == Some(TokenKind::Name) { + let name = par.next()?; + + names.push(Node::new(name.text.to_string(), name.span)); + } else { + let span = + names.first().expect("`names` should not be empty").span + delim_tok.span; + + return Ok(Node::new( + Path { + names, + trailing_delim: true, + }, + span, + )); + } + } else { + let span = names.first().expect("`names` should not be empty").span + + names.last().expect("").span; + + return Ok(Node::new( + Path { + names, + trailing_delim: false, + }, + span, + )); + } + } +} + +/// Parse a `use` statement. +/// # Panics +/// Panics if the next token isn't `use`. +pub fn parse_use(par: &mut Parser) -> ParseResult> { + let use_tok = par.assert(TokenKind::Use); + + let tree = parse_use_tree(par)?; + let tree_span = tree.span; + + Ok(Node::new(Use { tree }, use_tok.span + tree_span)) +} + +/// Parse a `use` tree. +pub fn parse_use_tree(par: &mut Parser) -> ParseResult> { + let path = parse_path(par)?; + let path_span = path.span; + + if path.kind.trailing_delim { + match par.peek() { + Some(TokenKind::BraceOpen) => { + par.next()?; + + let mut children = vec![]; + let close_brace_span; + + loop { + children.push(parse_use_tree(par)?); + + match par.peek() { + Some(TokenKind::Comma) => { + par.next()?; + continue; + } + Some(TokenKind::BraceClose) => { + let tok = par.next()?; + close_brace_span = tok.span; + break; + } + _ => { + let tok = par.next()?; + par.unexpected_token_error( + tok.span, + "failed to parse `use` tree", + vec!["Note: expected a `,` or `}` token".to_string()], + ); + return Err(ParseFailed); + } + } + } + + Ok(Node::new( + UseTree::Nested { + prefix: path, + children, + }, + close_brace_span, + )) + } + Some(TokenKind::Star) => { + par.next()?; + Ok(Node::new(UseTree::Glob { prefix: path }, path_span)) + } + _ => { + let tok = par.next()?; + par.unexpected_token_error( + tok.span, + "failed to parse `use` tree", + vec!["Note: expected a `*`, `{` or name token".to_string()], + ); + return Err(ParseFailed); + } + } + } else { + if par.peek() == Some(TokenKind::As) { + par.next()?; + + let rename_tok = par.expect(TokenKind::Name, "failed to parse `use` tree")?; + let rename = Some(Node::new(rename_tok.text.to_string(), rename_tok.span)); + + Ok(Node::new( + UseTree::Simple { path, rename }, + path_span + rename_tok.span, + )) + } else { + Ok(Node::new(UseTree::Simple { path, rename: None }, path_span)) + } + } +} + /// Parse a `pragma ` statement. pub fn parse_pragma(par: &mut Parser) -> ParseResult> { let tok = par.assert(TokenKind::Pragma); diff --git a/crates/parser/src/lexer/token.rs b/crates/parser/src/lexer/token.rs index 6de634114b..b266f18bca 100644 --- a/crates/parser/src/lexer/token.rs +++ b/crates/parser/src/lexer/token.rs @@ -114,6 +114,10 @@ pub enum TokenKind { Not, #[token("or")] Or, + #[token("let")] + Let, + #[token("use")] + Use, // Symbols #[token("(")] ParenOpen, @@ -199,8 +203,6 @@ pub enum TokenKind { GtGtEq, #[token("->")] Arrow, - #[token("let")] - Let, } impl TokenKind { @@ -258,6 +260,7 @@ impl TokenKind { In => "in", Not => "not", Or => "or", + Use => "use", ParenOpen => "(", ParenClose => ")", BracketOpen => "[", diff --git a/crates/parser/src/parser.rs b/crates/parser/src/parser.rs index 6c1316191f..7ea3f8a00e 100644 --- a/crates/parser/src/parser.rs +++ b/crates/parser/src/parser.rs @@ -33,7 +33,7 @@ pub struct Parser<'a> { /// generic type parameter list (eg. `Map>`). buffered: Vec>, - paren_stack: Vec, + enclosure_stack: Vec, indent_stack: Vec>, indent_style: Option, @@ -47,7 +47,7 @@ impl<'a> Parser<'a> { Parser { lexer: Lexer::new(content), buffered: vec![], - paren_stack: vec![], + enclosure_stack: vec![], indent_stack: vec![BlockIndent { context_span: Span::zero(), context_name: "module".into(), @@ -70,13 +70,26 @@ impl<'a> Parser<'a> { // TODO: allow newlines inside square brackets // TODO: allow newlines inside angle brackets? // eg `fn f(x: map\n <\n u8\n, ...` - if !self.paren_stack.is_empty() { + if !self.enclosure_stack.is_empty() { self.eat_newlines(); } if let Some(tok) = self.next_raw() { - if tok.kind == TokenKind::ParenOpen { - self.paren_stack.push(tok.span); - } else if tok.kind == TokenKind::ParenClose && self.paren_stack.pop().is_none() { + if [ + TokenKind::ParenOpen, + TokenKind::BraceOpen, + TokenKind::BracketOpen, + ] + .contains(&tok.kind) + { + self.enclosure_stack.push(tok.span); + } else if [ + TokenKind::ParenClose, + TokenKind::BraceClose, + TokenKind::BracketClose, + ] + .contains(&tok.kind) + && self.enclosure_stack.pop().is_none() + { self.error(tok.span, "Unmatched right parenthesis"); if self.peek_raw() == Some(TokenKind::ParenClose) { // another unmatched closing paren; fail. @@ -100,7 +113,7 @@ impl<'a> Parser<'a> { /// Take a peek at the next token kind without consuming it, or return an /// error if we've reached the end of the file. pub fn peek_or_err(&mut self) -> ParseResult { - if !self.paren_stack.is_empty() { + if !self.enclosure_stack.is_empty() { self.eat_newlines(); } if let Some(tk) = self.peek_raw() { @@ -115,7 +128,7 @@ impl<'a> Parser<'a> { /// Take a peek at the next token kind. Returns `None` if we've reached the /// end of the file. pub fn peek(&mut self) -> Option { - if !self.paren_stack.is_empty() { + if !self.enclosure_stack.is_empty() { self.eat_newlines(); } self.peek_raw() @@ -267,7 +280,7 @@ impl<'a> Parser<'a> { /// # Panics /// Panics if called while the parser is inside a set of parentheses. pub fn enter_block(&mut self, context_span: Span, context_name: &str) -> ParseResult<()> { - assert!(self.paren_stack.is_empty()); + assert!(self.enclosure_stack.is_empty()); let colon = if self.peek_raw() == Some(TokenKind::Colon) { self.next_raw() @@ -337,7 +350,7 @@ impl<'a> Parser<'a> { fn handle_newline_indent(&mut self, context_name: &str) -> ParseResult<()> { assert!( - self.paren_stack.is_empty(), + self.enclosure_stack.is_empty(), "Parser::handle_newline_indent called within parens" ); @@ -462,7 +475,7 @@ impl<'a, 'b> BTParser<'a, 'b> { let parser = Parser { lexer: snapshot.lexer.clone(), buffered: snapshot.buffered.clone(), - paren_stack: snapshot.paren_stack.clone(), + enclosure_stack: snapshot.enclosure_stack.clone(), indent_stack: snapshot.indent_stack.clone(), indent_style: snapshot.indent_style, diagnostics: Vec::new(), @@ -473,7 +486,7 @@ impl<'a, 'b> BTParser<'a, 'b> { pub fn accept(self) { self.snapshot.lexer = self.parser.lexer; self.snapshot.buffered = self.parser.buffered; - self.snapshot.paren_stack = self.parser.paren_stack; + self.snapshot.enclosure_stack = self.parser.enclosure_stack; self.snapshot.indent_stack = self.parser.indent_stack; self.snapshot.indent_style = self.parser.indent_style; self.snapshot.diagnostics.extend(self.parser.diagnostics); diff --git a/crates/parser/tests/cases/parse_ast.rs b/crates/parser/tests/cases/parse_ast.rs index e1fc6227d5..16dd2e4fa7 100644 --- a/crates/parser/tests/cases/parse_ast.rs +++ b/crates/parser/tests/cases/parse_ast.rs @@ -140,6 +140,16 @@ test_parse! { pragma2, module::parse_pragma, "pragma 0.1.0-alpha" } test_parse! { pragma3, module::parse_pragma, "pragma >= 1.2, < 1.5" } test_parse! { import_simple, module::parse_simple_import, "import foo as bar, baz, bing as bop" } +test_parse! { use_simple1, module::parse_use, "use foo::bar" } +test_parse! { use_simple2, module::parse_use, "use foo::bar as baz" } +test_parse! { use_glob, module::parse_use, "use foo::bar::*" } +test_parse! { use_nested1, module::parse_use, "use foo::bar::{bing::*, bang::big, bass as fish, bong::{hello as hi, goodbye}}" } +test_parse! { use_nested2, module::parse_use, r#"use std::bar::{ + bing::*, + bad::{food as burger, barge::*, bill::bob::{jkl::*}}, + evm as mve +}"# +} test_parse! { struct_def, types::parse_struct_def, r#"struct S: x: address pub y: u8 diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__use_glob.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_glob.snap new file mode 100644 index 0000000000..dab7f82b06 --- /dev/null +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_glob.snap @@ -0,0 +1,46 @@ +--- +source: crates/parser/tests/cases/parse_ast.rs +expression: "ast_string(stringify!(use_glob), module::parse_use, \"use foo::bar::*\")" + +--- +Node( + kind: Use( + tree: Node( + kind: Glob( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "foo", + span: Span( + start: 4, + end: 7, + ), + ), + Node( + kind: "bar", + span: Span( + start: 9, + end: 12, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 4, + end: 14, + ), + ), + ), + span: Span( + start: 4, + end: 14, + ), + ), + ), + span: Span( + start: 0, + end: 14, + ), +) diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested1.snap new file mode 100644 index 0000000000..40ae2232f3 --- /dev/null +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested1.snap @@ -0,0 +1,229 @@ +--- +source: crates/parser/tests/cases/parse_ast.rs +expression: "ast_string(stringify!(use_nested1), module::parse_use,\n \"use foo::bar::{bing::*, bang::big, bass as fish, bong::{hello as hi, goodbye}}\")" + +--- +Node( + kind: Use( + tree: Node( + kind: Nested( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "foo", + span: Span( + start: 4, + end: 7, + ), + ), + Node( + kind: "bar", + span: Span( + start: 9, + end: 12, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 4, + end: 14, + ), + ), + children: [ + Node( + kind: Glob( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "bing", + span: Span( + start: 15, + end: 19, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 15, + end: 21, + ), + ), + ), + span: Span( + start: 15, + end: 21, + ), + ), + Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "bang", + span: Span( + start: 24, + end: 28, + ), + ), + Node( + kind: "big", + span: Span( + start: 30, + end: 33, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 24, + end: 33, + ), + ), + rename: None, + ), + span: Span( + start: 24, + end: 33, + ), + ), + Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "bass", + span: Span( + start: 35, + end: 39, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 35, + end: 39, + ), + ), + rename: Some(Node( + kind: "fish", + span: Span( + start: 43, + end: 47, + ), + )), + ), + span: Span( + start: 35, + end: 47, + ), + ), + Node( + kind: Nested( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "bong", + span: Span( + start: 49, + end: 53, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 49, + end: 55, + ), + ), + children: [ + Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "hello", + span: Span( + start: 56, + end: 61, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 56, + end: 61, + ), + ), + rename: Some(Node( + kind: "hi", + span: Span( + start: 65, + end: 67, + ), + )), + ), + span: Span( + start: 56, + end: 67, + ), + ), + Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "goodbye", + span: Span( + start: 69, + end: 76, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 69, + end: 76, + ), + ), + rename: None, + ), + span: Span( + start: 69, + end: 76, + ), + ), + ], + ), + span: Span( + start: 76, + end: 77, + ), + ), + ], + ), + span: Span( + start: 77, + end: 78, + ), + ), + ), + span: Span( + start: 0, + end: 78, + ), +) diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested2.snap new file mode 100644 index 0000000000..d65ce517e4 --- /dev/null +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_nested2.snap @@ -0,0 +1,255 @@ +--- +source: crates/parser/tests/cases/parse_ast.rs +expression: "ast_string(stringify!(use_nested2), module::parse_use,\n r#\"use std::bar::{\n bing::*,\n bad::{food as burger, barge::*, bill::bob::{jkl::*}},\n evm as mve\n}\"#)" + +--- +Node( + kind: Use( + tree: Node( + kind: Nested( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "std", + span: Span( + start: 4, + end: 7, + ), + ), + Node( + kind: "bar", + span: Span( + start: 9, + end: 12, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 4, + end: 14, + ), + ), + children: [ + Node( + kind: Glob( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "bing", + span: Span( + start: 20, + end: 24, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 20, + end: 26, + ), + ), + ), + span: Span( + start: 20, + end: 26, + ), + ), + Node( + kind: Nested( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "bad", + span: Span( + start: 33, + end: 36, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 33, + end: 38, + ), + ), + children: [ + Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "food", + span: Span( + start: 39, + end: 43, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 39, + end: 43, + ), + ), + rename: Some(Node( + kind: "burger", + span: Span( + start: 47, + end: 53, + ), + )), + ), + span: Span( + start: 39, + end: 53, + ), + ), + Node( + kind: Glob( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "barge", + span: Span( + start: 55, + end: 60, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 55, + end: 62, + ), + ), + ), + span: Span( + start: 55, + end: 62, + ), + ), + Node( + kind: Nested( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "bill", + span: Span( + start: 65, + end: 69, + ), + ), + Node( + kind: "bob", + span: Span( + start: 71, + end: 74, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 65, + end: 76, + ), + ), + children: [ + Node( + kind: Glob( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "jkl", + span: Span( + start: 77, + end: 80, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 77, + end: 82, + ), + ), + ), + span: Span( + start: 77, + end: 82, + ), + ), + ], + ), + span: Span( + start: 83, + end: 84, + ), + ), + ], + ), + span: Span( + start: 84, + end: 85, + ), + ), + Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "evm", + span: Span( + start: 91, + end: 94, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 91, + end: 94, + ), + ), + rename: Some(Node( + kind: "mve", + span: Span( + start: 98, + end: 101, + ), + )), + ), + span: Span( + start: 91, + end: 101, + ), + ), + ], + ), + span: Span( + start: 102, + end: 103, + ), + ), + ), + span: Span( + start: 0, + end: 103, + ), +) diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple1.snap new file mode 100644 index 0000000000..9f3032e06b --- /dev/null +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple1.snap @@ -0,0 +1,47 @@ +--- +source: crates/parser/tests/cases/parse_ast.rs +expression: "ast_string(stringify!(use_simple1), module::parse_use, \"use foo::bar\")" + +--- +Node( + kind: Use( + tree: Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "foo", + span: Span( + start: 4, + end: 7, + ), + ), + Node( + kind: "bar", + span: Span( + start: 9, + end: 12, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 4, + end: 12, + ), + ), + rename: None, + ), + span: Span( + start: 4, + end: 12, + ), + ), + ), + span: Span( + start: 0, + end: 12, + ), +) diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple2.snap new file mode 100644 index 0000000000..eb83f80633 --- /dev/null +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__use_simple2.snap @@ -0,0 +1,53 @@ +--- +source: crates/parser/tests/cases/parse_ast.rs +expression: "ast_string(stringify!(use_simple2), module::parse_use, \"use foo::bar as baz\")" + +--- +Node( + kind: Use( + tree: Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "foo", + span: Span( + start: 4, + end: 7, + ), + ), + Node( + kind: "bar", + span: Span( + start: 9, + end: 12, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 4, + end: 12, + ), + ), + rename: Some(Node( + kind: "baz", + span: Span( + start: 16, + end: 19, + ), + )), + ), + span: Span( + start: 4, + end: 19, + ), + ), + ), + span: Span( + start: 0, + end: 19, + ), +) From a5804e29d5174a0d1acc4143c5fae05974d26158 Mon Sep 17 00:00:00 2001 From: Grant Wuerker Date: Fri, 1 Oct 2021 11:24:39 -0600 Subject: [PATCH 2/5] Parser snapshot cleanup. --- .../cases/snapshots/cases__errors__contract_bad_name.snap | 2 +- .../cases/snapshots/cases__errors__contract_const_fn.snap | 2 +- .../cases/snapshots/cases__errors__contract_const_pub.snap | 2 +- .../cases/snapshots/cases__errors__contract_empty_body.snap | 2 +- .../snapshots/cases__errors__contract_field_after_def.snap | 2 +- .../cases__errors__contract_invalid_version_requirement.snap | 2 +- .../cases__errors__contract_missing_version_requirement.snap | 2 +- .../cases/snapshots/cases__errors__contract_pub_event.snap | 2 +- .../tests/cases/snapshots/cases__errors__emit_bad_call.snap | 2 +- .../tests/cases/snapshots/cases__errors__emit_expr.snap | 2 +- .../tests/cases/snapshots/cases__errors__emit_no_args.snap | 2 +- .../tests/cases/snapshots/cases__errors__expr_bad_prefix.snap | 2 +- .../tests/cases/snapshots/cases__errors__for_no_in.snap | 2 +- .../tests/cases/snapshots/cases__errors__if_no_body.snap | 2 +- .../tests/cases/snapshots/cases__errors__import_bad_name.snap | 2 +- .../tests/cases/snapshots/cases__errors__module_bad_stmt.snap | 2 +- .../tests/cases/snapshots/cases__errors__module_nonsense.snap | 2 +- .../cases/snapshots/cases__errors__string_invalid_escape.snap | 2 +- .../cases/snapshots/cases__parse_ast__empty_contract_def.snap | 2 +- .../cases/snapshots/cases__parse_ast__empty_event_def.snap | 2 +- .../cases/snapshots/cases__parse_ast__empty_struct_def.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__event_def.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_attr1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_attr2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_call1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_call2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_group.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_hex1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_hex2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_list.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_list2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_num1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_num2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_string.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_ternary.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_tuple1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_tuple2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_tuple3.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__expr_unit.snap | 2 +- .../cases/snapshots/cases__parse_ast__import_simple.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__module_stmts.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_bit1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_bit2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_bit3.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_bnot.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_bool.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_math.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_neg.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_not.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__ops_shift.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__pragma1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__pragma2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__pragma3.snap | 2 +- .../cases/snapshots/cases__parse_ast__stmt_assert_msg.snap | 2 +- .../cases/snapshots/cases__parse_ast__stmt_assert_no_msg.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_add.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_and.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_div.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_exp.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_lsh.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_mod.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_mul.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_or.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_rsh.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_sub.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_aug_xor.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_emit1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_emit2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_for.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_if.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_if2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_return1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_return2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_return3.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_revert1.snap | 4 ++-- .../tests/cases/snapshots/cases__parse_ast__stmt_revert2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__stmt_while.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__struct_def.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_3d.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_array.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_def.snap | 4 ++-- .../tests/cases/snapshots/cases__parse_ast__type_generic.snap | 2 +- .../cases/snapshots/cases__parse_ast__type_generic_int.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_map1.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_map2.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_map3.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_map4.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_name.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_string.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_tuple.snap | 2 +- .../tests/cases/snapshots/cases__parse_ast__type_unit.snap | 2 +- 91 files changed, 93 insertions(+), 93 deletions(-) diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_bad_name.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_bad_name.snap index 1e0db35dde..49b2e664fb 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_bad_name.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_bad_name.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_bad_name), contracts::parse_contract_def, true,\n \"contract 1X:\\n x: u8\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_const_fn.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_const_fn.snap index ab4eba943d..a0548cd796 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_const_fn.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_const_fn.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_const_fn), contracts::parse_contract_def,\n false, \"contract C:\\n const fn f():\\n pass\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_const_pub.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_const_pub.snap index aa1867689b..201d462758 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_const_pub.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_const_pub.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_const_pub), contracts::parse_contract_def,\n false, \"contract C:\\n const pub x: u8\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_empty_body.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_empty_body.snap index 4c3b63ec4a..057ad7963e 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_empty_body.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_empty_body.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_empty_body), module::parse_module, true,\n \"contract X:\\n \\n \\ncontract Y:\\n x: u8\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_field_after_def.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_field_after_def.snap index 4eb6a50124..cfba743a63 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_field_after_def.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_field_after_def.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_field_after_def), module::parse_module, false,\n r#\"\ncontract C:\n fn f():\n pass\n x: u8\n\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_invalid_version_requirement.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_invalid_version_requirement.snap index 46387de10b..9038bb5058 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_invalid_version_requirement.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_invalid_version_requirement.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_invalid_version_requirement),\n module::parse_module, true, r#\"\npragma 0.o\ncontract C:\n pass\n\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_missing_version_requirement.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_missing_version_requirement.snap index cf41d5e12a..1bf821c62b 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_missing_version_requirement.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_missing_version_requirement.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_missing_version_requirement),\n module::parse_module, true, r#\"\npragma\ncontract C:\n pass\n\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__contract_pub_event.snap b/crates/parser/tests/cases/snapshots/cases__errors__contract_pub_event.snap index d49785a61d..bc718295c4 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__contract_pub_event.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__contract_pub_event.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(contract_pub_event), contracts::parse_contract_def,\n false, \"contract C:\\n pub event E:\\n x: u8\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__emit_bad_call.snap b/crates/parser/tests/cases/snapshots/cases__errors__emit_bad_call.snap index 4418348ef2..280f0080c8 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__emit_bad_call.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__emit_bad_call.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(emit_bad_call), functions::parse_stmt, true,\n \"emit MyEvent(1)()\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__emit_expr.snap b/crates/parser/tests/cases/snapshots/cases__errors__emit_expr.snap index e052b790ba..a77156ed8b 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__emit_expr.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__emit_expr.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(emit_expr), functions::parse_stmt, true, \"emit x + 1\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__emit_no_args.snap b/crates/parser/tests/cases/snapshots/cases__errors__emit_no_args.snap index b62dba6dc6..855ae81e75 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__emit_no_args.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__emit_no_args.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(emit_no_args), functions::parse_stmt, true, \"emit x\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__expr_bad_prefix.snap b/crates/parser/tests/cases/snapshots/cases__errors__expr_bad_prefix.snap index db646033dd..140809fa1c 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__expr_bad_prefix.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__expr_bad_prefix.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(expr_bad_prefix), expressions::parse_expr, true,\n \"*x + 1\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__for_no_in.snap b/crates/parser/tests/cases/snapshots/cases__errors__for_no_in.snap index 37184a2bc6..7599613421 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__for_no_in.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__for_no_in.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(for_no_in), functions::parse_stmt, true,\n \"for x:\\n pass\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__if_no_body.snap b/crates/parser/tests/cases/snapshots/cases__errors__if_no_body.snap index 531184c647..895fe252d4 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__if_no_body.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__if_no_body.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(if_no_body), functions::parse_stmt, true,\n \"if x:\\nelse:\\n x\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap b/crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap index c179f9ea4a..0da266b6d0 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(import_bad_name), module::parse_simple_import, true,\n \"import x as 123\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__module_bad_stmt.snap b/crates/parser/tests/cases/snapshots/cases__errors__module_bad_stmt.snap index 8f6a294bae..151ddc1ecd 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__module_bad_stmt.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__module_bad_stmt.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(module_bad_stmt), module::parse_module, true,\n \"if x:\\n y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__module_nonsense.snap b/crates/parser/tests/cases/snapshots/cases__errors__module_nonsense.snap index fd5a706001..e45ed04f74 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__module_nonsense.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__module_nonsense.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: "err_string(stringify!(module_nonsense), module::parse_module, true, \"))\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__errors__string_invalid_escape.snap b/crates/parser/tests/cases/snapshots/cases__errors__string_invalid_escape.snap index 2602c5dd34..a6277c918c 100644 --- a/crates/parser/tests/cases/snapshots/cases__errors__string_invalid_escape.snap +++ b/crates/parser/tests/cases/snapshots/cases__errors__string_invalid_escape.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/errors.rs +source: crates/parser/tests/cases/errors.rs expression: err --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_contract_def.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_contract_def.snap index 314d67a08f..5539a532c4 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_contract_def.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_contract_def.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(empty_contract_def), contracts::parse_contract_def,\n r#\"contract Foo:\n pass\n\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_event_def.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_event_def.snap index f2f3312cf9..343072ed89 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_event_def.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_event_def.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(empty_event_def), types::parse_event_def,\n \"event Foo:\\n pass\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_struct_def.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_struct_def.snap index 49ebda1e34..194f2bd48f 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_struct_def.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__empty_struct_def.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(empty_struct_def), types::parse_struct_def,\n r#\"struct S:\n pass\n\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__event_def.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__event_def.snap index c5e8600705..88843bc9d0 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__event_def.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__event_def.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(event_def), types::parse_event_def,\n \"event Foo:\\n x: address\\n idx y: u8\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr1.snap index da8f2b19f3..667d2a159d 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_attr1), expressions::parse_expr, \"foo.bar[0][y]\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr2.snap index 636b4e3ac1..9f10fadb75 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_attr2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_attr2), expressions::parse_expr, \"a[x].b[y](1)\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call1.snap index b88f2eb494..34f51aeee8 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_call1), expressions::parse_expr, \"foo()\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call2.snap index 1d39f79798..0c09f9f923 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_call2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_call2), expressions::parse_expr, \"foo(1,2,x=3)\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_group.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_group.snap index e5027e1beb..218ca9b746 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_group.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_group.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_group), expressions::parse_expr, \"(1 + 2) * 3\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex1.snap index bfda90af3f..a52af2f6f8 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_hex1), expressions::parse_expr, \"0xbeefbeef\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex2.snap index f0c9387486..7ea687995c 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_hex2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_hex2), expressions::parse_expr, \"0xFEED1234\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list.snap index f9fa14c67c..27b5c8346a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_list), expressions::parse_expr, \"[]\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list2.snap index 6483773bcc..b4bf1376e0 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_list2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_list2), expressions::parse_expr, \"[x, y, z,]\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num1.snap index 312264c607..7c7613d606 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_num1), expressions::parse_expr, \"12345\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num2.snap index d99d4bc76f..aba093402b 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_num2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_num2), expressions::parse_expr, \"00001\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_string.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_string.snap index ca7b605d71..d8fa8740d4 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_string.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_string.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_string), expressions::parse_expr,\n r#\"\"hi \\tmom\\n\"\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_ternary.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_ternary.snap index 9a2e3d818b..ae1af6938b 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_ternary.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_ternary.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_ternary), expressions::parse_expr,\n \"x + 1 if y + 2 else z + 3\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple1.snap index 4cf38d0837..3bcc8f9e67 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_tuple1), expressions::parse_expr, \"(1,)\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple2.snap index 10c7648e26..bb75fefda6 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_tuple2), expressions::parse_expr, \"(1, 2, \\n 3)\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple3.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple3.snap index 3317f0179f..c711965483 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple3.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_tuple3.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_tuple3), expressions::parse_expr,\n \"(1, (2 + 3), (3 * 4, 5))\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_unit.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_unit.snap index 7f4b66871b..3d4f7dd888 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_unit.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__expr_unit.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(expr_unit), expressions::parse_expr, \"()\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap index cdfe65eb6d..c788453ce8 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(import_simple), module::parse_simple_import,\n \"import foo as bar, baz, bing as bop\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap index f3eff74bb0..ae1f4c2254 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(module_stmts), module::parse_module,\n r#\"\npragma 0.5.0\n\nimport foo as bar, baz as bum\n\ntype X = Map\n\ncontract A:\n pub const x: u256 = 10\n\ncontract B:\n pub x: X\n\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit1.snap index 4fbe3d5599..ebd78bbbb0 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_bit1), expressions::parse_expr, \"a & b >> c\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit2.snap index 02eab786a9..8398672d08 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_bit2), expressions::parse_expr, \"a ^ b & c\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit3.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit3.snap index 2ef96abe99..12bfc954df 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit3.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bit3.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_bit3), expressions::parse_expr, \"a | b ^ c\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bnot.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bnot.snap index 978b7658db..7e6dc1cbb6 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bnot.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bnot.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_bnot), expressions::parse_expr, \"~x\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bool.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bool.snap index 610fd5131d..0f1240767a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bool.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_bool.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_bool), expressions::parse_expr, \"a or b and c\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_math.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_math.snap index 687a400b4d..cb54e8144a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_math.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_math.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_math), expressions::parse_expr,\n \"a + b * -c ** d / e % f\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_neg.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_neg.snap index 1455bedca7..f979bfac80 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_neg.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_neg.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_neg), expressions::parse_expr, \"-x\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_not.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_not.snap index aa869a8b1c..2ea1bb1fa2 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_not.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_not.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_not), expressions::parse_expr, \"x and not y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_shift.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_shift.snap index f2ebdcf8b7..4684e6dc4d 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_shift.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__ops_shift.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(ops_shift), expressions::parse_expr, \"a << b >> c\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma1.snap index 7c94ac281e..f683d67bcc 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(pragma1), module::parse_pragma, \"pragma 0.1.0\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma2.snap index 673b6d9f28..7780c56591 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(pragma2), module::parse_pragma, \"pragma 0.1.0-alpha\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma3.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma3.snap index 14df92323e..b584149eb6 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma3.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__pragma3.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(pragma3), module::parse_pragma, \"pragma >= 1.2, < 1.5\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_msg.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_msg.snap index ab24f6809f..32a29fab3a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_msg.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_msg.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_assert_msg), functions::parse_stmt,\n \"assert x == y, z\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_no_msg.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_no_msg.snap index f06947be07..26be17b075 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_no_msg.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_assert_no_msg.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_assert_no_msg), functions::parse_stmt,\n \"assert x == y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_add.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_add.snap index d1c187dcb4..fb845fea9a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_add.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_add.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_add), functions::parse_stmt, \"x += y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_and.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_and.snap index 43ff555b5e..68ff299472 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_and.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_and.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_and), functions::parse_stmt, \"x &= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_div.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_div.snap index efea485151..d881cf0134 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_div.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_div.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_div), functions::parse_stmt, \"x /= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_exp.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_exp.snap index 643fc20924..8e28f944ee 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_exp.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_exp.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_exp), functions::parse_stmt, \"x **= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_lsh.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_lsh.snap index ac0100eccb..3f910a5bb8 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_lsh.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_lsh.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_lsh), functions::parse_stmt, \"x <<= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mod.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mod.snap index bef5296e98..8619b25db3 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mod.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mod.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_mod), functions::parse_stmt, \"x %= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mul.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mul.snap index 14c61be8e3..7a30a738e2 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mul.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_mul.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_mul), functions::parse_stmt, \"x *= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_or.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_or.snap index f1a4745d5f..7612c4356b 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_or.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_or.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_or), functions::parse_stmt, \"x |= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_rsh.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_rsh.snap index 5de707e4a7..8102eba23e 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_rsh.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_rsh.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_rsh), functions::parse_stmt, \"x >>= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_sub.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_sub.snap index 70091523d2..b969742233 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_sub.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_sub.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_sub), functions::parse_stmt, \"x -= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_xor.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_xor.snap index 4f8cb5c175..96de71bb27 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_xor.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_aug_xor.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_aug_xor), functions::parse_stmt, \"x ^= y\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit1.snap index 9461872a91..d6c920e494 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_emit1), functions::parse_stmt, \"emit Foo()\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit2.snap index 8a2029c3f8..ba554d42d0 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_emit2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_emit2), functions::parse_stmt,\n \"emit Foo(1, 2, x=y)\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_for.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_for.snap index c6eec6a5b6..724d2abe5a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_for.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_for.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_for), functions::parse_stmt,\n \"for a in b[0]:\\n pass\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if.snap index 255917d623..abcfa3111a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_if), functions::parse_stmt, \"if a:\\n b\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if2.snap index 88a8671853..026feb86a6 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_if2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_if2), functions::parse_stmt,\n \"if a:\\n b \\nelif c:\\n d \\nelif e: \\n f \\nelse:\\n g\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return1.snap index 6781cb32b2..b5da77c7f4 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_return1), functions::parse_stmt, \"return\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return2.snap index db59645d2d..73f8e0901c 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_return2), functions::parse_stmt, \"return x\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return3.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return3.snap index f4580fbdca..82c4ac6801 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return3.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_return3.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_return3), functions::parse_stmt, \"return not x\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert1.snap index f034bb4e86..14bbd948f1 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert1.snap @@ -1,6 +1,6 @@ --- -source: parser/tests/cases/parse_ast.rs -expression: "ast_string(stringify!(stmt_revert), functions::parse_stmt, \"revert\")" +source: crates/parser/tests/cases/parse_ast.rs +expression: "ast_string(stringify!(stmt_revert1), functions::parse_stmt, \"revert\")" --- Node( diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert2.snap index dd608533ef..df79440a8e 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_revert2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_revert2), functions::parse_stmt,\n \"revert something\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_while.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_while.snap index 7b6318cf9b..db01ccd96a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_while.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__stmt_while.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(stmt_while), functions::parse_stmt,\n \"while a > 5:\\n a -= 1\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__struct_def.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__struct_def.snap index 492cd4d281..a6178db6b7 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__struct_def.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__struct_def.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(struct_def), types::parse_struct_def,\n r#\"struct S:\n x: address\n pub y: u8\n const z: u8\n pub const a: Map\n\"#)" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_3d.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_3d.snap index c2ef471c3d..703aabe955 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_3d.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_3d.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_3d), types::parse_type_desc, \"u256[4][4][4]\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_array.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_array.snap index 7256e5fd8a..49810be38e 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_array.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_array.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_array), types::parse_type_desc, \"address[25]\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_def.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_def.snap index 96f3d90132..df4fdb1532 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_def.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_def.snap @@ -1,6 +1,6 @@ --- -source: parser/tests/cases/parse_ast.rs -expression: "ast_string(stringify!(type_def), types::parse_type_def,\n \"type X = Map\")" +source: crates/parser/tests/cases/parse_ast.rs +expression: "ast_string(stringify!(type_def), types::parse_type_alias,\n \"type X = Map\")" --- Node( diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic.snap index b97085f85d..289a87b335 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_generic), types::parse_type_desc,\n \"foo, d[10]>\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic_int.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic_int.snap index 185e05cfd6..6dd20b9835 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic_int.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_generic_int.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_generic_int), types::parse_type_desc, \"foo<1, 2>\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map1.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map1.snap index 5601dba6d6..a9adee9e64 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map1.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map1.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_map1), types::parse_type_desc,\n \"Map\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map2.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map2.snap index 33c95acfba..a92ae6826b 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map2.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map2.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_map2), types::parse_type_desc,\n \"Map>\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map3.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map3.snap index f6d1981816..fd14b0c60e 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map3.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map3.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_map3), types::parse_type_desc,\n \"Map>>\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map4.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map4.snap index ffcfb8b099..6b838b9b78 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map4.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_map4.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_map4), types::parse_type_desc,\n \"map < address , map < u8, u256 > >\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_name.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_name.snap index 96db8b3a6e..2b4db698ac 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_name.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_name.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_name), types::parse_type_desc, \"MyType\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_string.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_string.snap index bd53d3b1fe..2aaed58dcd 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_string.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_string.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_string), types::parse_type_desc, \"string<100>\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_tuple.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_tuple.snap index baca3920f5..174fe061d0 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_tuple.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_tuple.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_tuple), types::parse_type_desc,\n \"(u8, u16, address, Map)\")" --- diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_unit.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_unit.snap index da1b09c940..9175dd1d0e 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__type_unit.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__type_unit.snap @@ -1,5 +1,5 @@ --- -source: parser/tests/cases/parse_ast.rs +source: crates/parser/tests/cases/parse_ast.rs expression: "ast_string(stringify!(type_unit), types::parse_type_desc, \"()\")" --- From e06d1d895dd70e887046a5c99cf774ec0eb3436a Mon Sep 17 00:00:00 2001 From: Grant Wuerker Date: Fri, 1 Oct 2021 14:17:16 -0600 Subject: [PATCH 3/5] Replaced import syntax with use syntax. --- crates/analyzer/src/namespace/items.rs | 4 +- crates/lowering/src/mappers/module.rs | 2 +- crates/parser/src/ast.rs | 112 ++++------ crates/parser/src/grammar/Fe.grammar | 21 +- crates/parser/src/grammar/module.rs | 82 +------ crates/parser/tests/cases/errors.rs | 2 +- crates/parser/tests/cases/parse_ast.rs | 6 +- .../cases__errors__import_bad_name.snap | 12 - .../cases__errors__use_bad_name.snap | 12 + .../cases__parse_ast__import_simple.snap | 81 ------- .../cases__parse_ast__module_stmts.snap | 208 +++++++++++------- crates/test-files/fixtures/printing/defs.fe | 8 + 12 files changed, 214 insertions(+), 336 deletions(-) delete mode 100644 crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap create mode 100644 crates/parser/tests/cases/snapshots/cases__errors__use_bad_name.snap delete mode 100644 crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap diff --git a/crates/analyzer/src/namespace/items.rs b/crates/analyzer/src/namespace/items.rs index f794047242..e6c56a661f 100644 --- a/crates/analyzer/src/namespace/items.rs +++ b/crates/analyzer/src/namespace/items.rs @@ -86,8 +86,8 @@ impl ModuleId { sink.push(&diag) } } - ast::ModuleStmt::Import(inner) => { - sink.push(&errors::not_yet_implemented("import", inner.span)); + ast::ModuleStmt::Use(inner) => { + sink.push(&errors::not_yet_implemented("use", inner.span)); } _ => {} // everything else is a type def, handled below. } diff --git a/crates/lowering/src/mappers/module.rs b/crates/lowering/src/mappers/module.rs index 2d1d6ab414..dd6be2e935 100644 --- a/crates/lowering/src/mappers/module.rs +++ b/crates/lowering/src/mappers/module.rs @@ -19,7 +19,7 @@ pub fn module(db: &dyn AnalyzerDb, module: ModuleId) -> ast::Module { .iter() .filter_map(|stmt| match stmt { ast::ModuleStmt::Pragma(_) => Some(stmt.clone()), - ast::ModuleStmt::Import(_) => Some(stmt.clone()), + ast::ModuleStmt::Use(_) => Some(stmt.clone()), _ => None, }) .collect::>(); diff --git a/crates/parser/src/ast.rs b/crates/parser/src/ast.rs index a93a03767b..ff80b0d789 100644 --- a/crates/parser/src/ast.rs +++ b/crates/parser/src/ast.rs @@ -15,7 +15,7 @@ pub struct Module { #[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] pub enum ModuleStmt { Pragma(Node), - Import(Node), + Use(Node), TypeAlias(Node), Contract(Node), Struct(Node), @@ -26,17 +26,6 @@ pub struct Pragma { pub version_requirement: Node, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] -pub enum Import { - Simple { - names: Vec>, - }, - From { - path: Node, - names: Node, - }, -} - #[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] pub struct Path { pub names: Vec>, @@ -116,35 +105,6 @@ impl Spanned for GenericArg { } } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] -pub struct SimpleImportName { - pub path: Vec>, - pub alias: Option>, -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] -pub enum FromImportPath { - Absolute { - path: Vec>, - }, - Relative { - parent_level: usize, - path: Vec>, - }, -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] -pub enum FromImportNames { - Star, - List(Vec>), -} - -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] -pub struct FromImportName { - pub name: Node, - pub alias: Option>, -} - /// struct or contract field, with optional 'pub' and 'const' qualifiers #[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] pub struct Field { @@ -399,7 +359,7 @@ impl Spanned for ModuleStmt { fn span(&self) -> Span { match self { ModuleStmt::Pragma(inner) => inner.span, - ModuleStmt::Import(inner) => inner.span, + ModuleStmt::Use(inner) => inner.span, ModuleStmt::TypeAlias(inner) => inner.span, ModuleStmt::Contract(inner) => inner.span, ModuleStmt::Struct(inner) => inner.span, @@ -426,7 +386,7 @@ impl fmt::Display for ModuleStmt { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { match self { ModuleStmt::Pragma(node) => write!(f, "{}", node.kind), - ModuleStmt::Import(node) => write!(f, "{}", node.kind), + ModuleStmt::Use(node) => write!(f, "{}", node.kind), ModuleStmt::TypeAlias(node) => write!(f, "{}", node.kind), ModuleStmt::Contract(node) => write!(f, "{}", node.kind), ModuleStmt::Struct(node) => write!(f, "{}", node.kind), @@ -440,9 +400,45 @@ impl fmt::Display for Pragma { } } -impl fmt::Display for Import { - fn fmt(&self, _f: &mut Formatter<'_>) -> fmt::Result { - todo!() +impl fmt::Display for Use { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "use {}", self.tree.kind) + } +} + +impl fmt::Display for UseTree { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + match self { + UseTree::Glob { prefix } => write!(f, "{}*", prefix.kind), + UseTree::Simple { path, rename } => { + if let Some(rename) = rename { + write!(f, "{} as {}", path.kind, rename.kind) + } else { + write!(f, "{}", path.kind) + } + } + UseTree::Nested { prefix, children } => { + write!(f, "{}{{{}}}", prefix.kind, node_comma_joined(children)) + } + } + } +} + +impl fmt::Display for Path { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + let joined_names = self + .names + .iter() + .map(|name| format!("{}", name.kind)) + .collect::>() + .join("::"); + write!(f, "{}", joined_names)?; + + if self.trailing_delim { + write!(f, "::")?; + } + + Ok(()) } } @@ -500,30 +496,6 @@ impl fmt::Display for GenericArg { } } -impl fmt::Display for SimpleImportName { - fn fmt(&self, _f: &mut Formatter<'_>) -> fmt::Result { - todo!() - } -} - -impl fmt::Display for FromImportPath { - fn fmt(&self, _f: &mut Formatter<'_>) -> fmt::Result { - todo!() - } -} - -impl fmt::Display for FromImportNames { - fn fmt(&self, _f: &mut Formatter<'_>) -> fmt::Result { - todo!() - } -} - -impl fmt::Display for FromImportName { - fn fmt(&self, _f: &mut Formatter<'_>) -> fmt::Result { - todo!() - } -} - impl fmt::Display for Field { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { if self.is_pub { diff --git a/crates/parser/src/grammar/Fe.grammar b/crates/parser/src/grammar/Fe.grammar index 364b1517c1..68d042fae9 100644 --- a/crates/parser/src/grammar/Fe.grammar +++ b/crates/parser/src/grammar/Fe.grammar @@ -2,24 +2,21 @@ file_input: NEWLINE ENDMARKER | module_stmt+ ENDMARKER module_stmt: import_stmt | type_def | contract_def -########################### import_stmt ############################## +########################### path ###################################### -import_stmt: (simple_import | from_import) NEWLINE +path: NAME ('::' NAME)* -simple_import: 'import' (simple_import_name (',' simple_import_name)*) -simple_import_name: dotted_name ['as' NAME] +trailing_delim_path: path '::' -from_import: from_import_parent_alt | from_import_sub_alt +########################### use_stmt ################################## -from_import_parent_alt: 'from' '.'+ 'import' from_import_names -from_import_sub_alt: 'from' from_import_sub_path 'import' from_import_names +use_stmt: 'use' use_tree NEWLINE -from_import_sub_path: '.'* dotted_name -from_import_names: '*' | '(' from_import_names_list ')' | from_import_names_list -from_import_names_list: from_import_name (',' from_import_name)* [','] -from_import_name: NAME ['as' NAME] +use_tree: (simple_use_tree | glob_use_tree | nested_use_tree) -dotted_name: NAME ('.' NAME)* +simple_use_tree: path ['as' NAME] +glob_use_tree: trailing_delim_path '*' +nested_use_tree: trailing_delim_path '{' [use_tree (',' use_tree)* [',']] '}' ########################### type_def ################################# diff --git a/crates/parser/src/grammar/module.rs b/crates/parser/src/grammar/module.rs index cede14f1ff..61d274d4e3 100644 --- a/crates/parser/src/grammar/module.rs +++ b/crates/parser/src/grammar/module.rs @@ -1,6 +1,6 @@ use super::contracts::parse_contract_def; use super::types::{parse_struct_def, parse_type_alias}; -use crate::ast::{Import, Module, ModuleStmt, Path, Pragma, SimpleImportName, Use, UseTree}; +use crate::ast::{Module, ModuleStmt, Path, Pragma, Use, UseTree}; use crate::node::{Node, Span}; use crate::{Label, ParseFailed, ParseResult, Parser, TokenKind}; @@ -31,7 +31,7 @@ pub fn parse_module(par: &mut Parser) -> ParseResult> { pub fn parse_module_stmt(par: &mut Parser) -> ParseResult { let stmt = match par.peek_or_err()? { TokenKind::Pragma => ModuleStmt::Pragma(parse_pragma(par)?), - TokenKind::Import => ModuleStmt::Import(parse_simple_import(par)?), + TokenKind::Use => ModuleStmt::Use(parse_use(par)?), TokenKind::Contract => ModuleStmt::Contract(parse_contract_def(par)?), TokenKind::Struct => ModuleStmt::Struct(parse_struct_def(par)?), TokenKind::Type => ModuleStmt::TypeAlias(parse_type_alias(par)?), @@ -52,68 +52,16 @@ pub fn parse_module_stmt(par: &mut Parser) -> ParseResult { Ok(stmt) } -/// Parse an `import` statement. This does not yet support paths, just module -/// names. Note that `from x import y` style imports are handled in -/// [`parse_from_import`]. +/// Parse a `use` statement. /// # Panics -/// Panics if the next token isn't `import`. -pub fn parse_simple_import(par: &mut Parser) -> ParseResult> { - let import_tok = par.assert(TokenKind::Import); - - // TODO: only handles `import foo, bar as baz` - - let mut names = vec![]; - loop { - let name = - par.expect_with_notes(TokenKind::Name, "failed to parse import statement", |_| { - vec![ - "Note: `import` must be followed by a module name or path".into(), - "Example: `import mymodule".into(), - ] - })?; - - let alias = if par.peek() == Some(TokenKind::As) { - par.next()?; - let tok = par.expect(TokenKind::Name, "failed to parse import statement")?; - Some(tok.into()) - } else { - None - }; - - let span = name.span + alias.as_ref(); - names.push(Node::new( - SimpleImportName { - path: vec![Node::new(name.text.to_string(), name.span)], - alias, - }, - span, - )); - - match par.peek() { - Some(TokenKind::Comma) => { - par.next()?; - continue; - } - Some(TokenKind::Newline) | None => break, - Some(_) => { - let tok = par.next()?; - par.unexpected_token_error(tok.span, "failed to parse `import` statement", vec![]); - return Err(ParseFailed); - } - } - } +/// Panics if the next token isn't `use`. +pub fn parse_use(par: &mut Parser) -> ParseResult> { + let use_tok = par.assert(TokenKind::Use); - let span = import_tok.span + names.last(); - Ok(Node::new(Import::Simple { names }, span)) -} + let tree = parse_use_tree(par)?; + let tree_span = tree.span; -/// Parse a `from x import y` style import statement. -/// # Panics -/// Always panics. Unimplemented. -pub fn parse_from_import(par: &mut Parser) -> ParseResult> { - let tok = par.assert(TokenKind::Name); - assert_eq!(tok.text, "from"); - todo!("parse from .. import (not supported in rest of compiler yet)") + Ok(Node::new(Use { tree }, use_tok.span + tree_span)) } /// Parse a `::` delimited path. @@ -164,18 +112,6 @@ pub fn parse_path(par: &mut Parser) -> ParseResult> { } } -/// Parse a `use` statement. -/// # Panics -/// Panics if the next token isn't `use`. -pub fn parse_use(par: &mut Parser) -> ParseResult> { - let use_tok = par.assert(TokenKind::Use); - - let tree = parse_use_tree(par)?; - let tree_span = tree.span; - - Ok(Node::new(Use { tree }, use_tok.span + tree_span)) -} - /// Parse a `use` tree. pub fn parse_use_tree(par: &mut Parser) -> ParseResult> { let path = parse_path(par)?; diff --git a/crates/parser/tests/cases/errors.rs b/crates/parser/tests/cases/errors.rs index dc61b056fc..bba568d44d 100644 --- a/crates/parser/tests/cases/errors.rs +++ b/crates/parser/tests/cases/errors.rs @@ -83,7 +83,7 @@ test_parse_err! { for_no_in, functions::parse_stmt, true, "for x:\n pass" } test_parse_err! { fn_no_args, |par| functions::parse_fn_def(par, None), false, "fn f:\n return 5" } test_parse_err! { fn_def_kw, contracts::parse_contract_def, true, "contract C:\n pub def f(x: u8):\n return x" } test_parse_err! { if_no_body, functions::parse_stmt, true, "if x:\nelse:\n x" } -test_parse_err! { import_bad_name, module::parse_simple_import, true, "import x as 123" } +test_parse_err! { use_bad_name, module::parse_use, true, "use x as 123" } test_parse_err! { module_bad_stmt, module::parse_module, true, "if x:\n y" } test_parse_err! { module_nonsense, module::parse_module, true, "))" } test_parse_err! { struct_bad_field_name, types::parse_struct_def, true, "struct f:\n pub fn" } diff --git a/crates/parser/tests/cases/parse_ast.rs b/crates/parser/tests/cases/parse_ast.rs index 16dd2e4fa7..50a63cc5d8 100644 --- a/crates/parser/tests/cases/parse_ast.rs +++ b/crates/parser/tests/cases/parse_ast.rs @@ -139,7 +139,6 @@ test_parse! { pragma1, module::parse_pragma, "pragma 0.1.0" } test_parse! { pragma2, module::parse_pragma, "pragma 0.1.0-alpha" } test_parse! { pragma3, module::parse_pragma, "pragma >= 1.2, < 1.5" } -test_parse! { import_simple, module::parse_simple_import, "import foo as bar, baz, bing as bop" } test_parse! { use_simple1, module::parse_use, "use foo::bar" } test_parse! { use_simple2, module::parse_use, "use foo::bar as baz" } test_parse! { use_glob, module::parse_use, "use foo::bar::*" } @@ -177,7 +176,10 @@ test_parse! { empty_contract_def, contracts::parse_contract_def, r#"contract Foo test_parse! { module_stmts, module::parse_module, r#" pragma 0.5.0 -import foo as bar, baz as bum +use foo::bar::{ + bing as bong, + food::* +} type X = Map diff --git a/crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap b/crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap deleted file mode 100644 index 0da266b6d0..0000000000 --- a/crates/parser/tests/cases/snapshots/cases__errors__import_bad_name.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: crates/parser/tests/cases/errors.rs -expression: "err_string(stringify!(import_bad_name), module::parse_simple_import, true,\n \"import x as 123\")" - ---- -error: failed to parse import statement - ┌─ import_bad_name:1:13 - │ -1 │ import x as 123 - │ ^^^ Unexpected token. Expected a name - - diff --git a/crates/parser/tests/cases/snapshots/cases__errors__use_bad_name.snap b/crates/parser/tests/cases/snapshots/cases__errors__use_bad_name.snap new file mode 100644 index 0000000000..36bc148e0b --- /dev/null +++ b/crates/parser/tests/cases/snapshots/cases__errors__use_bad_name.snap @@ -0,0 +1,12 @@ +--- +source: crates/parser/tests/cases/errors.rs +expression: "err_string(stringify!(use_bad_name), module::parse_use, true, \"use x as 123\")" + +--- +error: failed to parse `use` tree + ┌─ use_bad_name:1:10 + │ +1 │ use x as 123 + │ ^^^ Unexpected token. Expected a name + + diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap deleted file mode 100644 index c788453ce8..0000000000 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__import_simple.snap +++ /dev/null @@ -1,81 +0,0 @@ ---- -source: crates/parser/tests/cases/parse_ast.rs -expression: "ast_string(stringify!(import_simple), module::parse_simple_import,\n \"import foo as bar, baz, bing as bop\")" - ---- -Node( - kind: Simple( - names: [ - Node( - kind: SimpleImportName( - path: [ - Node( - kind: "foo", - span: Span( - start: 7, - end: 10, - ), - ), - ], - alias: Some(Node( - kind: "bar", - span: Span( - start: 14, - end: 17, - ), - )), - ), - span: Span( - start: 7, - end: 17, - ), - ), - Node( - kind: SimpleImportName( - path: [ - Node( - kind: "baz", - span: Span( - start: 19, - end: 22, - ), - ), - ], - alias: None, - ), - span: Span( - start: 19, - end: 22, - ), - ), - Node( - kind: SimpleImportName( - path: [ - Node( - kind: "bing", - span: Span( - start: 24, - end: 28, - ), - ), - ], - alias: Some(Node( - kind: "bop", - span: Span( - start: 32, - end: 35, - ), - )), - ), - span: Span( - start: 24, - end: 35, - ), - ), - ], - ), - span: Span( - start: 0, - end: 35, - ), -) diff --git a/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap b/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap index ae1f4c2254..98d4155d5a 100644 --- a/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap +++ b/crates/parser/tests/cases/snapshots/cases__parse_ast__module_stmts.snap @@ -1,6 +1,6 @@ --- source: crates/parser/tests/cases/parse_ast.rs -expression: "ast_string(stringify!(module_stmts), module::parse_module,\n r#\"\npragma 0.5.0\n\nimport foo as bar, baz as bum\n\ntype X = Map\n\ncontract A:\n pub const x: u256 = 10\n\ncontract B:\n pub x: X\n\"#)" +expression: "ast_string(stringify!(module_stmts), module::parse_module,\n r#\"\npragma 0.5.0\n\nuse foo::bar::{\n bing as bong,\n food::*\n}\n\ntype X = Map\n\ncontract A:\n pub const x: u256 = 10\n\ncontract B:\n pub x: X\n\"#)" --- Node( @@ -21,62 +21,106 @@ Node( end: 13, ), )), - Import(Node( - kind: Simple( - names: [ - Node( - kind: SimpleImportName( - path: [ - Node( - kind: "foo", - span: Span( - start: 22, - end: 25, + Use(Node( + kind: Use( + tree: Node( + kind: Nested( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "foo", + span: Span( + start: 19, + end: 22, + ), + ), + Node( + kind: "bar", + span: Span( + start: 24, + end: 27, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 19, + end: 29, + ), + ), + children: [ + Node( + kind: Simple( + path: Node( + kind: Path( + names: [ + Node( + kind: "bing", + span: Span( + start: 35, + end: 39, + ), + ), + ], + trailing_delim: false, + ), + span: Span( + start: 35, + end: 39, + ), ), + rename: Some(Node( + kind: "bong", + span: Span( + start: 43, + end: 47, + ), + )), ), - ], - alias: Some(Node( - kind: "bar", span: Span( - start: 29, - end: 32, + start: 35, + end: 47, ), - )), - ), - span: Span( - start: 22, - end: 32, - ), - ), - Node( - kind: SimpleImportName( - path: [ - Node( - kind: "baz", - span: Span( - start: 34, - end: 37, + ), + Node( + kind: Glob( + prefix: Node( + kind: Path( + names: [ + Node( + kind: "food", + span: Span( + start: 53, + end: 57, + ), + ), + ], + trailing_delim: true, + ), + span: Span( + start: 53, + end: 59, + ), ), ), - ], - alias: Some(Node( - kind: "bum", span: Span( - start: 41, - end: 44, + start: 53, + end: 59, ), - )), - ), - span: Span( - start: 34, - end: 44, - ), + ), + ], ), - ], + span: Span( + start: 61, + end: 62, + ), + ), ), span: Span( start: 15, - end: 44, + end: 62, ), )), TypeAlias(Node( @@ -84,8 +128,8 @@ Node( name: Node( kind: "X", span: Span( - start: 51, - end: 52, + start: 69, + end: 70, ), ), typ: Node( @@ -93,8 +137,8 @@ Node( base: Node( kind: "Map", span: Span( - start: 55, - end: 58, + start: 73, + end: 76, ), ), args: Node( @@ -104,8 +148,8 @@ Node( base: "u8", ), span: Span( - start: 59, - end: 61, + start: 77, + end: 79, ), )), TypeDesc(Node( @@ -113,26 +157,26 @@ Node( base: "u16", ), span: Span( - start: 63, - end: 66, + start: 81, + end: 84, ), )), ], span: Span( - start: 58, - end: 67, + start: 76, + end: 85, ), ), ), span: Span( - start: 55, - end: 67, + start: 73, + end: 85, ), ), ), span: Span( - start: 46, - end: 67, + start: 64, + end: 85, ), )), Contract(Node( @@ -140,8 +184,8 @@ Node( name: Node( kind: "A", span: Span( - start: 78, - end: 79, + start: 96, + end: 97, ), ), fields: [ @@ -152,8 +196,8 @@ Node( name: Node( kind: "x", span: Span( - start: 95, - end: 96, + start: 113, + end: 114, ), ), typ: Node( @@ -161,29 +205,29 @@ Node( base: "u256", ), span: Span( - start: 98, - end: 102, + start: 116, + end: 120, ), ), value: Some(Node( kind: Num("10"), span: Span( - start: 105, - end: 107, + start: 123, + end: 125, ), )), ), span: Span( - start: 85, - end: 102, + start: 103, + end: 120, ), ), ], body: [], ), span: Span( - start: 69, - end: 102, + start: 87, + end: 120, ), )), Contract(Node( @@ -191,8 +235,8 @@ Node( name: Node( kind: "B", span: Span( - start: 118, - end: 119, + start: 136, + end: 137, ), ), fields: [ @@ -203,8 +247,8 @@ Node( name: Node( kind: "x", span: Span( - start: 129, - end: 130, + start: 147, + end: 148, ), ), typ: Node( @@ -212,29 +256,29 @@ Node( base: "X", ), span: Span( - start: 132, - end: 133, + start: 150, + end: 151, ), ), value: None, ), span: Span( - start: 125, - end: 133, + start: 143, + end: 151, ), ), ], body: [], ), span: Span( - start: 109, - end: 133, + start: 127, + end: 151, ), )), ], ), span: Span( start: 0, - end: 133, + end: 151, ), ) diff --git a/crates/test-files/fixtures/printing/defs.fe b/crates/test-files/fixtures/printing/defs.fe index 80a76e41e7..dfe3548f93 100644 --- a/crates/test-files/fixtures/printing/defs.fe +++ b/crates/test-files/fixtures/printing/defs.fe @@ -1,3 +1,11 @@ +use foo::bar as baz + +use foo::food + +use bing::bong::* + +use test1::{test1_1, test1_2::{test_1_2_1::*}} + type MyType = String<42> struct MyStruct: From 4d5bc24cb8c7c780ad6f57fc6dcd1b8e245cbfed Mon Sep 17 00:00:00 2001 From: Grant Wuerker Date: Fri, 1 Oct 2021 16:43:26 -0600 Subject: [PATCH 4/5] Release notes. --- newsfragments/547.feature.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 newsfragments/547.feature.md diff --git a/newsfragments/547.feature.md b/newsfragments/547.feature.md new file mode 100644 index 0000000000..c0038f5c7d --- /dev/null +++ b/newsfragments/547.feature.md @@ -0,0 +1,9 @@ +Replaced `import` statements with `use` statements. + +Example: + +``` +use foo::{bar::*, baz as baz26} +``` + +Note: this only adds support for parsing `use` statements. From 7b05ac4f28d88049a7d5e92e70a6ae7fa3bc67ed Mon Sep 17 00:00:00 2001 From: Grant Wuerker Date: Fri, 1 Oct 2021 16:50:14 -0600 Subject: [PATCH 5/5] Clippy fix. --- crates/parser/src/ast.rs | 2 +- crates/parser/src/grammar/module.rs | 24 +++++++++++------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/crates/parser/src/ast.rs b/crates/parser/src/ast.rs index ff80b0d789..a9670b3b30 100644 --- a/crates/parser/src/ast.rs +++ b/crates/parser/src/ast.rs @@ -429,7 +429,7 @@ impl fmt::Display for Path { let joined_names = self .names .iter() - .map(|name| format!("{}", name.kind)) + .map(|name| name.kind.to_string()) .collect::>() .join("::"); write!(f, "{}", joined_names)?; diff --git a/crates/parser/src/grammar/module.rs b/crates/parser/src/grammar/module.rs index 61d274d4e3..9bc1f63ff6 100644 --- a/crates/parser/src/grammar/module.rs +++ b/crates/parser/src/grammar/module.rs @@ -169,23 +169,21 @@ pub fn parse_use_tree(par: &mut Parser) -> ParseResult> { "failed to parse `use` tree", vec!["Note: expected a `*`, `{` or name token".to_string()], ); - return Err(ParseFailed); + Err(ParseFailed) } } - } else { - if par.peek() == Some(TokenKind::As) { - par.next()?; + } else if par.peek() == Some(TokenKind::As) { + par.next()?; - let rename_tok = par.expect(TokenKind::Name, "failed to parse `use` tree")?; - let rename = Some(Node::new(rename_tok.text.to_string(), rename_tok.span)); + let rename_tok = par.expect(TokenKind::Name, "failed to parse `use` tree")?; + let rename = Some(Node::new(rename_tok.text.to_string(), rename_tok.span)); - Ok(Node::new( - UseTree::Simple { path, rename }, - path_span + rename_tok.span, - )) - } else { - Ok(Node::new(UseTree::Simple { path, rename: None }, path_span)) - } + Ok(Node::new( + UseTree::Simple { path, rename }, + path_span + rename_tok.span, + )) + } else { + Ok(Node::new(UseTree::Simple { path, rename: None }, path_span)) } }