Skip to content

Commit e954734

Browse files
committed
compact luals return
1 parent 89d68d8 commit e954734

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1989,4 +1989,41 @@ Syntax(Chunk)@0..31
19891989

19901990
assert_ast_eq!(code, result);
19911991
}
1992+
1993+
#[test]
1994+
fn test_luals_multi_return() {
1995+
let code = r#"
1996+
---@type fun(): (integer, number)
1997+
"#;
1998+
let result = r#"
1999+
Syntax(Chunk)@0..51
2000+
Syntax(Block)@0..51
2001+
Token(TkEndOfLine)@0..1 "\n"
2002+
Token(TkWhitespace)@1..9 " "
2003+
Syntax(Comment)@9..42
2004+
Token(TkDocStart)@9..13 "---@"
2005+
Syntax(DocTagType)@13..42
2006+
Token(TkTagType)@13..17 "type"
2007+
Token(TkWhitespace)@17..18 " "
2008+
Syntax(TypeFun)@18..42
2009+
Token(TkName)@18..21 "fun"
2010+
Token(TkLeftParen)@21..22 "("
2011+
Token(TkRightParen)@22..23 ")"
2012+
Token(TkColon)@23..24 ":"
2013+
Token(TkWhitespace)@24..25 " "
2014+
Token(TkLeftParen)@25..26 "("
2015+
Syntax(DocTypeList)@26..41
2016+
Syntax(TypeName)@26..33
2017+
Token(TkName)@26..33 "integer"
2018+
Token(TkComma)@33..34 ","
2019+
Token(TkWhitespace)@34..35 " "
2020+
Syntax(TypeName)@35..41
2021+
Token(TkName)@35..41 "number"
2022+
Token(TkRightParen)@41..42 ")"
2023+
Token(TkEndOfLine)@42..43 "\n"
2024+
Token(TkWhitespace)@43..51 " "
2025+
"#;
2026+
2027+
assert_ast_eq!(code, result);
2028+
}
19922029
}

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,15 @@ pub fn parse_fun_type(p: &mut LuaDocParser) -> ParseResult {
245245

246246
if p.current_token() == LuaTokenKind::TkColon {
247247
p.bump();
248-
parse_type_list(p)?;
248+
249+
// compact luals return type (number, integer)
250+
if p.current_token() == LuaTokenKind::TkLeftParen {
251+
p.bump();
252+
parse_type_list(p)?;
253+
expect_token(p, LuaTokenKind::TkRightParen)?;
254+
} else {
255+
parse_type_list(p)?;
256+
};
249257
}
250258

251259
Ok(m.complete(p))

0 commit comments

Comments
 (0)