diff --git a/Cargo.lock b/Cargo.lock index 7827d3af6..66138ebd7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,7 +68,7 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "bend-lang" -version = "0.2.16" +version = "0.2.17" dependencies = [ "TSPL", "arrayvec", diff --git a/Cargo.toml b/Cargo.toml index 590e9b220..e6a72df10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "bend-lang" description = "A high-level, massively parallel programming language" license = "Apache-2.0" -version = "0.2.16" +version = "0.2.17" edition = "2021" exclude = ["tests/snapshots/"] diff --git a/src/fun/parser.rs b/src/fun/parser.rs index 08eae4354..807220515 100644 --- a/src/fun/parser.rs +++ b/src/fun/parser.rs @@ -812,6 +812,9 @@ pub trait ParserCommons<'a>: Parser<'a> { if nam.contains("__") { let msg = "Top-level names are not allowed to contain \"__\".".to_string(); self.with_ctx(Err(msg), ini_idx, end_idx) + } else if nam.starts_with("//") { + let msg = "Top-level names are not allowed to start with \"//\".".to_string(); + self.with_ctx(Err(msg), ini_idx, end_idx) } else { Ok(nam) } diff --git a/src/imp/parser.rs b/src/imp/parser.rs index 6c31b6b7b..90cb797c7 100644 --- a/src/imp/parser.rs +++ b/src/imp/parser.rs @@ -912,7 +912,7 @@ impl<'a> PyParser<'a> { } self.skip_trivia_inline(); - let name = self.parse_bend_name()?; + let name = self.parse_top_level_name()?; self.skip_trivia_inline(); let params = if self.starts_with("(") { self.list_like(|p| p.parse_bend_name(), "(", ")", ",", true, 0)? diff --git a/tests/golden_tests/compile_file/top_level_name_slashslash.bend b/tests/golden_tests/compile_file/top_level_name_slashslash.bend new file mode 100644 index 000000000..221e9fa0c --- /dev/null +++ b/tests/golden_tests/compile_file/top_level_name_slashslash.bend @@ -0,0 +1,8 @@ +def random//constant(): + return 3.14 + +def //thisshouldfail(): + return random//constant() + +def main: + return //thisshouldfail() diff --git a/tests/snapshots/compile_file__top_level_name_slashslash.bend.snap b/tests/snapshots/compile_file__top_level_name_slashslash.bend.snap new file mode 100644 index 000000000..058840a03 --- /dev/null +++ b/tests/snapshots/compile_file__top_level_name_slashslash.bend.snap @@ -0,0 +1,8 @@ +--- +source: tests/golden_tests.rs +input_file: tests/golden_tests/compile_file/top_level_name_slashslash.bend +--- +Errors: +In tests/golden_tests/compile_file/top_level_name_slashslash.bend : +Top-level names are not allowed to start with "//". + 4 | def //thisshouldfail():