From 1587cfb90835854f18c222257b057cb62d466443 Mon Sep 17 00:00:00 2001 From: cristic Date: Thu, 15 Apr 2004 22:11:48 +0000 Subject: [PATCH] Nicer semantic error messages, removed duplicates. --- .../MCC/IR/SimpleIRErrorReporter.java | 26 +++++++++++++++---- Repair/RepairCompiler/MCC/IR/VarExpr.java | 2 +- Repair/RepairCompiler/compiler-steps.txt | 19 +++++++++----- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/Repair/RepairCompiler/MCC/IR/SimpleIRErrorReporter.java b/Repair/RepairCompiler/MCC/IR/SimpleIRErrorReporter.java index 3c64101..11e8db3 100755 --- a/Repair/RepairCompiler/MCC/IR/SimpleIRErrorReporter.java +++ b/Repair/RepairCompiler/MCC/IR/SimpleIRErrorReporter.java @@ -25,7 +25,7 @@ public class SimpleIRErrorReporter implements IRErrorReporter { LinedMessage sem = new LinedMessage(); sem.error = true; sem.pn = v; - sem.message = s; + sem.message = s; add(sem); @@ -42,8 +42,24 @@ public class SimpleIRErrorReporter implements IRErrorReporter { add(sem); } + + private boolean messageExists(LinedMessage sem) { + for (int i = 0; i < messages.size(); i++) { + + LinedMessage cur = (LinedMessage) messages.elementAt(i); + + if (cur.message.equals(sem.message)) + return true; + } + return false; + } + + private void add(LinedMessage sem) { + if (messageExists(sem)) + return; + if (sem.pn == null) { messages.addElement(sem); return; @@ -68,15 +84,15 @@ public class SimpleIRErrorReporter implements IRErrorReporter { for (int i = 0; i < messages.size(); i++) { LinedMessage sem = (LinedMessage)messages.elementAt(i); if (sem.error) { - output += "error"; + output += "Semantic Error"; } else { - output += "warning"; + output += "Semantic Warning"; } if (sem.pn != null) { - output += " (" + filename + sem.pn.getLine() + "): "; + output += ": " + filename + ": "+sem.pn.getLine() + ": "; } else { - output += " : "; + output += ": "; } output += sem.message; diff --git a/Repair/RepairCompiler/MCC/IR/VarExpr.java b/Repair/RepairCompiler/MCC/IR/VarExpr.java index fcec02c..76ab416 100755 --- a/Repair/RepairCompiler/MCC/IR/VarExpr.java +++ b/Repair/RepairCompiler/MCC/IR/VarExpr.java @@ -112,7 +112,7 @@ public class VarExpr extends Expr { vd = (VarDescriptor) sa.getSymbolTable().get(varname); if (vd == null) { - System.out.println(varname); + //System.out.println(varname); sa.getErrorReporter().report(null, "Undefined variable '" + varname + "'"); return null; } diff --git a/Repair/RepairCompiler/compiler-steps.txt b/Repair/RepairCompiler/compiler-steps.txt index 336662f..09254b3 100755 --- a/Repair/RepairCompiler/compiler-steps.txt +++ b/Repair/RepairCompiler/compiler-steps.txt @@ -12,7 +12,7 @@ For the specifs in ex.constraints, ex.struct, ex.space, ex.abstract, ex.model in directory Repair/Ex: A) cd Ex -B) java -classpath MCC.Compiler ex +B) java -classpath MCC.Compiler -checkonly ex which builds: ex.cc @@ -25,9 +25,14 @@ which builds: Step 3: Compile checker ----------------------- -A) copy generated files into Runtime directory -B) remove old object files rm *.o -C) run ./buildruntime -D) build checking object: g++ -g -c ex_aux.cc -E) g++ -g ex_test.cc *.o -F) run ./a.out +A) copy the Runtime directory in Repair/Ex: + cp -r /MCC/Runtime . +B) copy generated files into the Runtime directory + cp ex.cc ex_aux.* size.* Runtime +B) remove old object files + cd Runtime; rm *.o +C) ./buildruntime +D) build checking object: + g++ -g -c ex_aux.cc +E) g++ -g ex_test.cc *.o -o ex +F) ./ex -- 2.34.1