diff --git a/TypeNodes.py b/TypeNodes.py index d5152a89f9509e74ac533971ff456350be7fcc47..69a1a345b2c7faf58f05392ec7ad7ee663d4bb85 100644 --- a/TypeNodes.py +++ b/TypeNodes.py @@ -162,8 +162,8 @@ class ClassNode(ClassInterNode): for con in contains: if 'abstract' in con.mods and (not('abstract' in self.mods)): raise Exception("ERROR: Non-abstract Class '{}' contains an abstract method".format(self.name)) - if (not con.body) and (not ('native' in con.mods)) and (not ('abstract' in self.mods)): - raise Exception("ERROR: Non-abstract Class '{}' contains an abstract method".format(self.name)) + if (not con.body) and (not ('native' in con.mods)) and (not ('abstract' in self.mods)) and (not (con in self.constructors)): + raise Exception("ERROR: Non-abstract Class '{}' contains an abstract method {}".format(self.name, con.name)) # hierarchy: string[] def getContains(self, hierarchy): @@ -178,6 +178,8 @@ class ClassNode(ClassInterNode): for con in superContains: conOverwritten = False for method in contains: + print(method) + print(con) if (method == con): # cannot have same signiture but different return types if (method.methodType != con.methodType):