Merge pull request #458 from HigherOrderCO/top-level-names-with-double-slash

Dont allow top level names start with '//'
This commit is contained in:
Nicolas Abril 2024-05-23 20:55:24 +02:00 committed by GitHub
commit 5036534d9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 22 additions and 3 deletions

2
Cargo.lock generated
View File

@ -68,7 +68,7 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
[[package]]
name = "bend-lang"
version = "0.2.16"
version = "0.2.17"
dependencies = [
"TSPL",
"arrayvec",

View File

@ -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/"]

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