From 4fdce864d388a7c0da13cf63b9eb152489a29017 Mon Sep 17 00:00:00 2001 From: Joscha Date: Fri, 18 Nov 2022 21:05:57 +0100 Subject: [PATCH] Forbid using keywords as identifiers --- src/parser/basic.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/parser/basic.rs b/src/parser/basic.rs index d3cb2f1..0fbad2e 100644 --- a/src/parser/basic.rs +++ b/src/parser/basic.rs @@ -41,6 +41,14 @@ pub fn space() -> impl Parser { } pub fn ident() -> impl Parser { - // TODO Forbid keywords - text::ident().map_with_span(|name, span| Ident { name, span }) + text::ident().try_map(|name, span| { + if matches!( + &name as &str, + "nil" | "true" | "false" | "local" | "not" | "and" | "or" + ) { + Err(Simple::custom(span, "identifier uses reserved name")) + } else { + Ok(Ident { name, span }) + } + }) }