diff options
Diffstat (limited to 'src/mem/slicc/ast/FuncCallExprAST.py')
-rw-r--r-- | src/mem/slicc/ast/FuncCallExprAST.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/mem/slicc/ast/FuncCallExprAST.py b/src/mem/slicc/ast/FuncCallExprAST.py index 0c9880d6d..9336a2297 100644 --- a/src/mem/slicc/ast/FuncCallExprAST.py +++ b/src/mem/slicc/ast/FuncCallExprAST.py @@ -93,7 +93,22 @@ class FuncCallExprAST(ExprAST): if func is None: self.error("Unrecognized function name: '%s'", func_name_args) - cvec, type_vec = func.checkArguments(self.exprs) + if len(self.exprs) != len(func.param_types): + self.error("Wrong number of arguments passed to function : '%s'" +\ + " Expected %d, got %d", self.proc_name, + len(func.param_types), len(self.exprs)) + + cvec = [] + type_vec = [] + for expr,expected_type in zip(self.exprs, func.param_types): + # Check the types of the parameter + actual_type,param_code = expr.inline(True) + if str(actual_type) != 'OOD' and \ + str(actual_type) != str(expected_type): + expr.error("Type mismatch: expected: %s actual: %s" % \ + (expected_type, actual_type)) + cvec.append(param_code) + type_vec.append(expected_type) # OK, the semantics of "trigger" here is that, ports in the # machine have different priorities. We always check the first |