@@ -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}
0 commit comments