From 0bdf2ff42892b6363f703fe8f00f865a96dde223 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 19 Apr 2022 11:03:19 -0300 Subject: Make distinction between sym parameter and variables --- src/semantic.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/semantic.c') diff --git a/src/semantic.c b/src/semantic.c index dd95d28..62c1e86 100644 --- a/src/semantic.c +++ b/src/semantic.c @@ -51,6 +51,7 @@ static Type default_types[] = { typedef enum SymbolType { SYMBOL_VAR, + SYMBOL_PAR, SYMBOL_FUN, } SymbolType; @@ -298,6 +299,7 @@ resolve_type(ParseTree *ast, Scope *scope, Node *node) { Type *type = NULL; switch (val->type) { + case SYMBOL_PAR: case SYMBOL_VAR: { type = find_type(scope, val->var.type); } break; @@ -321,7 +323,7 @@ resolve_type(ParseTree *ast, Scope *scope, Node *node) { for (size_t i = 0; i < array_size(node->fun.param_names); ++i) { Node *param = node->fun.param_names[i]; Node *type = node->fun.param_types[i]; - Symbol *var = alloc_symval(param, SYMBOL_VAR); + Symbol *var = alloc_symval(param, SYMBOL_PAR); var->var.type = type; if (!insert_symbol(scope, param, var)) { return false; -- cgit v1.2.1