summaryrefslogtreecommitdiff
path: root/src/mem/slicc/ast/MethodCallExprAST.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/slicc/ast/MethodCallExprAST.py')
-rw-r--r--src/mem/slicc/ast/MethodCallExprAST.py21
1 files changed, 4 insertions, 17 deletions
diff --git a/src/mem/slicc/ast/MethodCallExprAST.py b/src/mem/slicc/ast/MethodCallExprAST.py
index 8be319a40..104d6f8df 100644
--- a/src/mem/slicc/ast/MethodCallExprAST.py
+++ b/src/mem/slicc/ast/MethodCallExprAST.py
@@ -56,20 +56,8 @@ class MethodCallExprAST(ExprAST):
self.error("Invalid method call: Type '%s' does not have a method '%s'",
obj_type, methodId)
- if len(self.expr_ast_vec) != \
- len(obj_type.methods[methodId].param_types):
- # Right number of parameters
- self.error("Wrong number of parameters for function name: '%s', " + \
- "expected: , actual: ", proc_name,
- len(obj_type.methods[methodId].param_types),
- len(self.expr_ast_vec))
-
- for actual_type, expected_type in \
- zip(paramTypes, obj_type.methods[methodId].param_types):
- if actual_type != expected_type and \
- str(actual_type["interface"]) != str(expected_type):
- self.error("Type mismatch: expected: %s actual: %s",
- expected_type, actual_type)
+ func = obj_type.methods[methodId]
+ func.checkArguments(self.expr_ast_vec)
# Return the return type of the method
return obj_type.methods[methodId].return_type
@@ -78,10 +66,9 @@ class MethodCallExprAST(ExprAST):
pass
class MemberMethodCallExprAST(MethodCallExprAST):
- def __init__(self, slicc, obj_expr_ast, proc_name, expr_ast_vec):
+ def __init__(self, slicc, obj_expr_ast, func_call):
s = super(MemberMethodCallExprAST, self)
- s.__init__(slicc, proc_name, expr_ast_vec)
-
+ s.__init__(slicc, func_call.proc_name, func_call.exprs)
self.obj_expr_ast = obj_expr_ast
def __repr__(self):