Skip to content

Commit 33f2e4c

Browse files
committed
fix param and return union
1 parent fe4d3a9 commit 33f2e4c

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

crates/emmylua_parser/src/grammar/doc/tag.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@ fn parse_tag_param(p: &mut LuaDocParser) -> ParseResult {
352352

353353
fn parse_param_or_type_list(p: &mut LuaDocParser) -> ParseResult {
354354
let mut cm = parse_type(p)?;
355+
if_token_bump(p, LuaTokenKind::TkDocDetail);
355356
while p.current_token() == LuaTokenKind::TkDocContinueOr {
356357
let m = cm.precede(p, LuaSyntaxKind::TypeBinary);
357358
p.bump();

crates/emmylua_parser/src/grammar/doc/test.rs

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2088,4 +2088,86 @@ Syntax(Chunk)@0..110
20882088

20892089
assert_ast_eq!(code, result);
20902090
}
2091+
2092+
#[test]
2093+
fn test_param_union() {
2094+
let code = r#"
2095+
---@param a
2096+
---| number # nihao
2097+
---| string # wohao
2098+
"#;
2099+
let result = r##"
2100+
Syntax(Chunk)@0..86
2101+
Syntax(Block)@0..86
2102+
Token(TkEndOfLine)@0..1 "\n"
2103+
Token(TkWhitespace)@1..9 " "
2104+
Syntax(Comment)@9..77
2105+
Token(TkDocStart)@9..13 "---@"
2106+
Syntax(DocTagParam)@13..77
2107+
Token(TkTagParam)@13..18 "param"
2108+
Token(TkWhitespace)@18..19 " "
2109+
Token(TkName)@19..20 "a"
2110+
Token(TkEndOfLine)@20..21 "\n"
2111+
Token(TkWhitespace)@21..29 " "
2112+
Token(TkDocContinueOr)@29..33 "---|"
2113+
Token(TkWhitespace)@33..34 " "
2114+
Syntax(TypeBinary)@34..77
2115+
Syntax(TypeName)@34..40
2116+
Token(TkName)@34..40 "number"
2117+
Token(TkWhitespace)@40..41 " "
2118+
Token(TkDocDetail)@41..49 "# nihao "
2119+
Token(TkEndOfLine)@49..50 "\n"
2120+
Token(TkWhitespace)@50..58 " "
2121+
Token(TkDocContinueOr)@58..62 "---|"
2122+
Token(TkWhitespace)@62..63 " "
2123+
Syntax(TypeName)@63..69
2124+
Token(TkName)@63..69 "string"
2125+
Token(TkWhitespace)@69..70 " "
2126+
Token(TkDocDetail)@70..77 "# wohao"
2127+
Token(TkEndOfLine)@77..78 "\n"
2128+
Token(TkWhitespace)@78..86 " "
2129+
"##;
2130+
2131+
assert_ast_eq!(code, result);
2132+
}
2133+
2134+
#[test]
2135+
fn test_return_union() {
2136+
let code = r#"
2137+
---@return
2138+
---| number # nihao
2139+
---| string # wohao
2140+
"#;
2141+
let result = r##"
2142+
Syntax(Chunk)@0..85
2143+
Syntax(Block)@0..85
2144+
Token(TkEndOfLine)@0..1 "\n"
2145+
Token(TkWhitespace)@1..9 " "
2146+
Syntax(Comment)@9..76
2147+
Token(TkDocStart)@9..13 "---@"
2148+
Syntax(DocTagReturn)@13..76
2149+
Token(TkTagReturn)@13..19 "return"
2150+
Token(TkEndOfLine)@19..20 "\n"
2151+
Token(TkWhitespace)@20..28 " "
2152+
Token(TkDocContinueOr)@28..32 "---|"
2153+
Token(TkWhitespace)@32..33 " "
2154+
Syntax(TypeBinary)@33..76
2155+
Syntax(TypeName)@33..39
2156+
Token(TkName)@33..39 "number"
2157+
Token(TkWhitespace)@39..40 " "
2158+
Token(TkDocDetail)@40..48 "# nihao "
2159+
Token(TkEndOfLine)@48..49 "\n"
2160+
Token(TkWhitespace)@49..57 " "
2161+
Token(TkDocContinueOr)@57..61 "---|"
2162+
Token(TkWhitespace)@61..62 " "
2163+
Syntax(TypeName)@62..68
2164+
Token(TkName)@62..68 "string"
2165+
Token(TkWhitespace)@68..69 " "
2166+
Token(TkDocDetail)@69..76 "# wohao"
2167+
Token(TkEndOfLine)@76..77 "\n"
2168+
Token(TkWhitespace)@77..85 " "
2169+
"##;
2170+
2171+
assert_ast_eq!(code, result);
2172+
}
20912173
}

0 commit comments

Comments
 (0)