aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2024-06-20 14:58:33 +0200
committerBad Diode <bd@badd10de.dev>2024-06-20 14:58:33 +0200
commit27930f546c4e7f216b6cb687bde26b68741b44f8 (patch)
tree6dba28dd443f7e256e4eed6c2c365cd8a786bee1 /src
parentd8bdb8be74904ee7b12d3f61dc3afe222aec82ff (diff)
downloadbdl-27930f546c4e7f216b6cb687bde26b68741b44f8.tar.gz
bdl-27930f546c4e7f216b6cb687bde26b68741b44f8.zip
Make sure symbol chains continue as expected.
Diffstat (limited to 'src')
-rw-r--r--src/parser.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/parser.c b/src/parser.c
index a8b9c47..8732a25 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -961,6 +961,13 @@ parse_symbol(Parser *parser) {
961 array_push(node->arguments, array_pop(parser->nodes), 961 array_push(node->arguments, array_pop(parser->nodes),
962 parser->storage); 962 parser->storage);
963 } 963 }
964 if (parse_match(parser, TOK_DOT)) {
965 // Symbol chain.
966 parse_consume(parser, TOK_SYMBOL,
967 cstr("expected symbol after '.' operator"));
968 parse_symbol(parser);
969 node->next = array_pop(parser->nodes);
970 }
964 } else { 971 } else {
965 node = node_alloc(parser, NODE_SYMBOL, prev); 972 node = node_alloc(parser, NODE_SYMBOL, prev);
966 if (!node) return; 973 if (!node) return;