diff --git a/crates/emmylua_code_analysis/src/compilation/test/generic_test.rs b/crates/emmylua_code_analysis/src/compilation/test/generic_test.rs index 7ab212826..4019b5e37 100644 --- a/crates/emmylua_code_analysis/src/compilation/test/generic_test.rs +++ b/crates/emmylua_code_analysis/src/compilation/test/generic_test.rs @@ -816,4 +816,17 @@ mod test { let result_ty = ws.expr_ty("result"); assert_eq!(ws.humanize_type(result_ty), "integer"); } + + #[test] + fn test_extends_true() { + let mut ws = VirtualWorkspace::new(); + assert!(ws.check_code_for( + DiagnosticCode::TypeNotFound, + r#" + ---@alias TestA T extends "test" and number or string + ---@alias TestB T extends true and number or string + ---@alias TestC T extends 111 and number or string + "#, + )); + } } diff --git a/crates/emmylua_parser/src/lexer/lua_doc_lexer.rs b/crates/emmylua_parser/src/lexer/lua_doc_lexer.rs index 7accb73cc..02a59688e 100644 --- a/crates/emmylua_parser/src/lexer/lua_doc_lexer.rs +++ b/crates/emmylua_parser/src/lexer/lua_doc_lexer.rs @@ -688,6 +688,9 @@ impl LuaDocLexer<'_> { ch if is_name_start(ch) => { let (text, _) = read_doc_name(reader); match text { + "true" => LuaTokenKind::TkTrue, + "false" => LuaTokenKind::TkFalse, + "nil" => LuaTokenKind::TkNil, "new" => LuaTokenKind::TkDocNew, _ => LuaTokenKind::TkName, }