From a755d814eec72b76e375bae6b8ba5d90809ab40b Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Wed, 29 Oct 2014 20:17:43 +0800 Subject: resolve the extend class message send bug --- src/minijava/minijava2piglet/Main.java | 5 +++ src/minijava/symboltable/MClass.java | 59 +++++++++++++++++++++++-------- src/minijava/symboltable/MMethodList.java | 4 +++ 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/src/minijava/minijava2piglet/Main.java b/src/minijava/minijava2piglet/Main.java index 9e8607a..3af3e26 100644 --- a/src/minijava/minijava2piglet/Main.java +++ b/src/minijava/minijava2piglet/Main.java @@ -27,6 +27,11 @@ public class Main { // 建立类的继承关系,寻找循环继承 my_classes.buildClassRelation(); + // 对每个类,建立其可用方法列表 + for (int i=0; i=0; i--) { --nMethods; @@ -127,7 +158,7 @@ public class MClass extends MLocalVarType { + c.methods.methods.elementAt(i).getName() + "\n"; } - } + }*/ result += "HSTORE " + t_vars + " 0 " + t_methods + "\n"; result += "RETURN " + t_vars + "\nEND"; return result; diff --git a/src/minijava/symboltable/MMethodList.java b/src/minijava/symboltable/MMethodList.java index 01bef3c..12d97cf 100644 --- a/src/minijava/symboltable/MMethodList.java +++ b/src/minijava/symboltable/MMethodList.java @@ -25,4 +25,8 @@ public class MMethodList extends MType { public int size() { return methods.size(); } + + public MMethod At(int i) { + return methods.elementAt(i); + } } -- cgit v1.2.3