sentinel pointers and c strings
This commit is contained in:
@@ -166,6 +166,17 @@ parse_type :: proc(parser: ^Parser) -> ast.Type_Syntax {
|
||||
node := types.Node{}
|
||||
if _, ok := allow(parser, .Right_Bracket); ok {
|
||||
node.kind = .Slice
|
||||
} else if _, ok := allow(parser, .Star); ok {
|
||||
node.kind = .Pointer
|
||||
node.many = true
|
||||
node.has_sentinel = true
|
||||
if _, ok = allow(parser, .Semicolon); !ok {
|
||||
source.add(parser.diagnostics, current(parser).span, "expected ';' after '*' in sentinel pointer type")
|
||||
}
|
||||
node.sentinel, _ = parse_type_constant(parser)
|
||||
if _, ok = allow(parser, .Right_Bracket); !ok {
|
||||
source.add(parser.diagnostics, current(parser).span, "expected ']' after sentinel pointer type")
|
||||
}
|
||||
} else if _, ok := allow(parser, .Semicolon); ok {
|
||||
node.kind = .Slice
|
||||
node.has_sentinel = true
|
||||
|
||||
Reference in New Issue
Block a user