From bee66b30ee8c4f805ae7ef7cbd2fc35508adf076 Mon Sep 17 00:00:00 2001 From: Nicholas Robinson <nwrobins@edu.uwaterloo.ca> Date: Fri, 6 Mar 2020 23:40:15 -0500 Subject: [PATCH] J1_ProtectedAccess1&2 --- ExprPrimaryNodes.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ExprPrimaryNodes.py b/ExprPrimaryNodes.py index a5194ae..687be3d 100644 --- a/ExprPrimaryNodes.py +++ b/ExprPrimaryNodes.py @@ -1,6 +1,7 @@ from AST import ASTNode, getParseTreeNodes from Environment import Env from UnitNodes import LiteralNode +import MemberNodes from TheTypeNode import TypeNode, TypeStruct from NameNode import NameNode, checkProtected @@ -494,9 +495,10 @@ class MethodInvNode(ASTNode): m = getMethod(self.ID.prefixLink.values(), self.ID.methodName, self.args) else: self.primary.checkType() - m = getMethod(self.primary.myType.typePointer.methods, self.ID.methodName, self.args) - - from pprint import pprint + methods = [] + methods.extend(self.primary.myType.typePointer.methods) + methods.extend([meth for meth in self.primary.myType.typePointer.inherits if isinstance(meth, MemberNodes.MethodNode)]) # need to check inherited methods as well + m = getMethod(methods, self.ID.name, self.args) if m: # check static @@ -514,7 +516,7 @@ class MethodInvNode(ASTNode): return else: - raise Exception("ERROR: Class {} doesn't have a method {} with given argument types.".format(self.typeName, self.ID.methodName)) + raise Exception("ERROR: Class {} doesn't have a method {} with given argument types.".format(self.typeName, self.ID.name)) ################# Helper ####################### -- GitLab