diff options
author | Iru Cai <mytbk920423@gmail.com> | 2014-10-08 22:07:00 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2014-10-08 22:07:00 +0800 |
commit | 72b3d46d08190d672a0ac5eae3a2e1e022662a6b (patch) | |
tree | 5565ad79235a4a18851b5fac304282e7408b3867 /src/minijava/symboltable/MMethod.java | |
parent | 748308e11e6791284b302f61e5bc0d99a0957b6a (diff) | |
download | minijava-72b3d46d08190d672a0ac5eae3a2e1e022662a6b.tar.xz |
Add check for method variables double declaration.
Diffstat (limited to 'src/minijava/symboltable/MMethod.java')
-rw-r--r-- | src/minijava/symboltable/MMethod.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/minijava/symboltable/MMethod.java b/src/minijava/symboltable/MMethod.java index 30159cf..f4b58fa 100644 --- a/src/minijava/symboltable/MMethod.java +++ b/src/minijava/symboltable/MMethod.java @@ -1,11 +1,27 @@ package minijava.symboltable; -public class MMethod extends MType { +public class MMethod extends MLocalVarType { MVarList params; String ret_type_name; + MClass method_class; + MVarList paramList; public MMethod(String m_name, int m_type, int m_column) { super(m_type, m_column); this.name = m_name; + ret_type_name = null; + paramList = new MVarList(); + } + + public String insertVar(MVariable var) { + String var_name = var.getName(); + if (paramList.findVar(var_name)!=-1) { + return "Variable \'" + var_name + "\' already in param list!"; + } + if (vars.findVar(var_name)!=-1) { + return "Variable double declaration " + "\"" + var_name + "\""; + } + vars.insertVar(var); + return null; } } |