fix: allow multiline grouped sum types
This commit is contained in:
@@ -429,7 +429,8 @@ parse_type_atom :: proc(parser: ^Parser) -> ast.Type_Syntax {
|
||||
return types.BOOL
|
||||
case .Left_Paren:
|
||||
advance(parser)
|
||||
grouped := parse_type(parser)
|
||||
skip_newlines(parser)
|
||||
grouped := parse_type_pipe_tail(parser, parse_type_atom(parser), true)
|
||||
if _, ok := allow(parser, .Right_Paren); !ok {
|
||||
source.add(parser.diagnostics, current(parser).span, "expected ')' after grouped type")
|
||||
}
|
||||
@@ -533,10 +534,19 @@ sum_syntax_requires_resolution :: proc(parser: ^Parser, value: types.Type, depth
|
||||
return false
|
||||
}
|
||||
|
||||
parse_type_pipe_tail :: proc(parser: ^Parser, left: ast.Type_Syntax) -> ast.Type_Syntax {
|
||||
parse_type_pipe_tail :: proc(parser: ^Parser, left: ast.Type_Syntax, multiline := false) -> ast.Type_Syntax {
|
||||
result := left
|
||||
for current(parser).kind == .Pipe {
|
||||
for {
|
||||
if multiline {
|
||||
skip_newlines(parser)
|
||||
}
|
||||
if current(parser).kind != .Pipe {
|
||||
break
|
||||
}
|
||||
operator := advance(parser)
|
||||
if multiline {
|
||||
skip_newlines(parser)
|
||||
}
|
||||
right := parse_type_atom(parser)
|
||||
composed, compose_error := types.compose_sum(&parser.module.type_store, result, right)
|
||||
if compose_error == .Unsupported {
|
||||
|
||||
Reference in New Issue
Block a user