Dont allow top level names start with '//'

This commit is contained in:
imaqtkatt 2024-05-23 10:34:48 -03:00
parent 200ff1558f
commit af8d6e3e0b
4 changed files with 20 additions and 1 deletions

View File

@ -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)
}

View File

@ -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)?

View File

@ -0,0 +1,8 @@
def random//constant():
return 3.14
def //thisshouldfail():
return random//constant()
def main:
return //thisshouldfail()

View File

@ -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():