diff --git a/crates/nu-parser/src/errors.rs b/crates/nu-parser/src/errors.rs index 58123aac0d..f55fed2da7 100644 --- a/crates/nu-parser/src/errors.rs +++ b/crates/nu-parser/src/errors.rs @@ -57,6 +57,14 @@ pub enum ParseError { #[diagnostic(code(nu::parser::expected_keyword), url(docsrs))] ExpectedKeyword(String, #[label("expected {0}")] Span), + #[error("Unexpected keyword.")] + #[diagnostic( + code(nu::parser::unexpected_keyword), + url(docsrs), + help("'export' keyword is allowed only in a module.") + )] + UnexpectedKeyword(String, #[label("unexpected {0}")] Span), + #[error("Multiple rest params.")] #[diagnostic(code(nu::parser::multiple_rest_params), url(docsrs))] MultipleRestParams(#[label = "multiple rest params"] Span), diff --git a/crates/nu-parser/src/parser.rs b/crates/nu-parser/src/parser.rs index 59508cdfe2..daff7c6054 100644 --- a/crates/nu-parser/src/parser.rs +++ b/crates/nu-parser/src/parser.rs @@ -2585,6 +2585,10 @@ pub fn parse_statement( b"alias" => parse_alias(working_set, spans), b"module" => parse_module(working_set, spans), b"use" => parse_use(working_set, spans), + b"export" => ( + garbage_statement(spans), + Some(ParseError::UnexpectedKeyword("export".into(), spans[0])), + ), _ => { let (expr, err) = parse_expression(working_set, spans); (Statement::Pipeline(Pipeline::from_vec(vec![expr])), err)