Skip to content

Commit 2cd898a

Browse files
committed
support multi object type with comma
1 parent f7738a5 commit 2cd898a

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

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

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2026,4 +2026,66 @@ Syntax(Chunk)@0..51
20262026

20272027
assert_ast_eq!(code, result);
20282028
}
2029+
2030+
#[test]
2031+
fn test_multi_line_type() {
2032+
let code = r#"
2033+
---@type {
2034+
--- x: number,
2035+
--- y: number,
2036+
--- z: number,
2037+
---}
2038+
"#;
2039+
let result = r#"
2040+
Syntax(Chunk)@0..110
2041+
Syntax(Block)@0..110
2042+
Token(TkEndOfLine)@0..1 "\n"
2043+
Token(TkWhitespace)@1..9 " "
2044+
Syntax(Comment)@9..101
2045+
Token(TkDocStart)@9..13 "---@"
2046+
Syntax(DocTagType)@13..101
2047+
Token(TkTagType)@13..17 "type"
2048+
Token(TkWhitespace)@17..18 " "
2049+
Syntax(TypeObject)@18..101
2050+
Token(TkLeftBrace)@18..19 "{"
2051+
Token(TkEndOfLine)@19..20 "\n"
2052+
Token(TkWhitespace)@20..28 " "
2053+
Token(TkDocContinue)@28..32 "--- "
2054+
Syntax(DocObjectField)@32..41
2055+
Token(TkName)@32..33 "x"
2056+
Token(TkColon)@33..34 ":"
2057+
Token(TkWhitespace)@34..35 " "
2058+
Syntax(TypeName)@35..41
2059+
Token(TkName)@35..41 "number"
2060+
Token(TkComma)@41..42 ","
2061+
Token(TkEndOfLine)@42..43 "\n"
2062+
Token(TkWhitespace)@43..51 " "
2063+
Token(TkDocContinue)@51..55 "--- "
2064+
Syntax(DocObjectField)@55..64
2065+
Token(TkName)@55..56 "y"
2066+
Token(TkColon)@56..57 ":"
2067+
Token(TkWhitespace)@57..58 " "
2068+
Syntax(TypeName)@58..64
2069+
Token(TkName)@58..64 "number"
2070+
Token(TkComma)@64..65 ","
2071+
Token(TkEndOfLine)@65..66 "\n"
2072+
Token(TkWhitespace)@66..74 " "
2073+
Token(TkDocContinue)@74..78 "--- "
2074+
Syntax(DocObjectField)@78..87
2075+
Token(TkName)@78..79 "z"
2076+
Token(TkColon)@79..80 ":"
2077+
Token(TkWhitespace)@80..81 " "
2078+
Syntax(TypeName)@81..87
2079+
Token(TkName)@81..87 "number"
2080+
Token(TkComma)@87..88 ","
2081+
Token(TkEndOfLine)@88..89 "\n"
2082+
Token(TkWhitespace)@89..97 " "
2083+
Token(TkDocContinue)@97..100 "---"
2084+
Token(TkRightBrace)@100..101 "}"
2085+
Token(TkEndOfLine)@101..102 "\n"
2086+
Token(TkWhitespace)@102..110 " "
2087+
"#;
2088+
2089+
assert_ast_eq!(code, result);
2090+
}
20292091
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ fn parse_object_or_mapped_type(p: &mut LuaDocParser) -> ParseResult {
127127
parse_typed_field(p)?;
128128
while p.current_token() == LuaTokenKind::TkComma {
129129
p.bump();
130+
if p.current_token() == LuaTokenKind::TkRightBrace {
131+
break;
132+
}
130133
parse_typed_field(p)?;
131134
}
132135
}

0 commit comments

Comments
 (0)