diff --git a/crates/lang/src/ast.rs b/crates/lang/src/ast.rs index 93a70889..3afbdd82 100644 --- a/crates/lang/src/ast.rs +++ b/crates/lang/src/ast.rs @@ -138,6 +138,8 @@ pub enum Definition { Use(Use), ModuleConstant(ModuleConstant), + + Test(Function), } impl Definition { @@ -147,7 +149,8 @@ impl Definition { | Definition::Use(Use { location, .. }) | Definition::TypeAlias(TypeAlias { location, .. }) | Definition::DataType(DataType { location, .. }) - | Definition::ModuleConstant(ModuleConstant { location, .. }) => *location, + | Definition::ModuleConstant(ModuleConstant { location, .. }) + | Definition::Test(Function { location, .. }) => *location, } } @@ -157,7 +160,8 @@ impl Definition { Definition::Fn(Function { doc, .. }) | Definition::TypeAlias(TypeAlias { doc, .. }) | Definition::DataType(DataType { doc, .. }) - | Definition::ModuleConstant(ModuleConstant { doc, .. }) => { + | Definition::ModuleConstant(ModuleConstant { doc, .. }) + | Definition::Test(Function { doc, .. }) => { let _ = std::mem::replace(doc, Some(new_doc)); } } diff --git a/crates/lang/src/parser/lexer.rs b/crates/lang/src/parser/lexer.rs index 1d140384..d845b741 100644 --- a/crates/lang/src/parser/lexer.rs +++ b/crates/lang/src/parser/lexer.rs @@ -67,6 +67,7 @@ pub fn lexer() -> impl Parser, Error = ParseError> { "check" => Token::Assert, "const" => Token::Const, "fn" => Token::Fn, + "test" => Token::Test, "if" => Token::If, "else" => Token::Else, "is" => Token::Is, diff --git a/crates/lang/src/parser/token.rs b/crates/lang/src/parser/token.rs index 8faaa339..0811268a 100644 --- a/crates/lang/src/parser/token.rs +++ b/crates/lang/src/parser/token.rs @@ -68,6 +68,7 @@ pub enum Token { Opaque, Pub, Use, + Test, Todo, Trace, Type, @@ -145,6 +146,7 @@ impl fmt::Display for Token { Token::Todo => "todo", Token::Trace => "try", Token::Type => "type", + Token::Test => "test", }; write!(f, "\"{}\"", s) }