From 2b6fa1488e2b16187fe32e713e65b8f59f647575 Mon Sep 17 00:00:00 2001 From: pycsham <shampuiyanchloe@gmail.com> Date: Sat, 29 Feb 2020 00:03:26 -0500 Subject: [PATCH] fixed some protected keyword and abtract keyword issues --- MemberNodes.py | 2 +- TypeNodes.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/MemberNodes.py b/MemberNodes.py index 591263b..b805141 100644 --- a/MemberNodes.py +++ b/MemberNodes.py @@ -70,7 +70,7 @@ class MethodNode(ASTNode): self.methodType = TypeNode(n) for node in parseTree.children: - if node.name == 'methodMod': + if node.name == 'methodMod' or node.name == "interfaceMod": for m in node.children: self.mods.append(m.lex) diff --git a/TypeNodes.py b/TypeNodes.py index 39d0f5d..18bf449 100644 --- a/TypeNodes.py +++ b/TypeNodes.py @@ -177,7 +177,7 @@ class ClassNode(ClassInterNode): superContains = self.superClass.getContains(hierarchy + [canonName]) for con in superContains: conOverwritten = False - for method in contains: + for index, method in enumerate(contains): if (method == con): # cannot have same signiture but different return types if (method.methodType != con.methodType): @@ -192,6 +192,9 @@ class ClassNode(ClassInterNode): if 'protected' in method.mods and 'public' in con.mods: raise Exception("ERROR: Protected method '{}' in class '{}' replaces public method '{}' in class {}".format(method.name, self.name, con.name, self.superClass.name)) conOverwritten = True + if not method.body: + contains[index] = con + conOverwritten = False break if not conOverwritten: addToContains.append(con) -- GitLab