Checking in code to perform safety checks on repair dependency graph.
[repair.git] / Repair / RepairCompiler / MCC / IR / SimpleIRErrorReporter.java
1 package MCC.IR;
2
3 import java.util.Vector;
4
5 public class SimpleIRErrorReporter implements IRErrorReporter {
6     
7     public boolean error;
8
9     String filename;
10     Vector messages;
11     
12
13     public SimpleIRErrorReporter () {
14         messages = new Vector();
15         error = false;
16         filename = null;
17     }
18
19     public void setFilename(String filename) {
20         this.filename = new String(filename + ":");
21     } 
22
23     public void report(ParseNode v, String s) {
24
25         LinedMessage sem = new LinedMessage();
26         sem.error = true;
27         sem.pn = v;
28         sem.message = s;
29
30         add(sem);
31         
32         error = true;
33     }
34
35     public void warn(ParseNode v, String s) {
36         
37         LinedMessage sem = new LinedMessage();
38         sem.error = false;
39         sem.pn = v;
40         sem.message = s;
41         
42         add(sem);
43     }
44
45     private void add(LinedMessage sem) {
46
47         if (sem.pn == null) {
48             messages.addElement(sem);
49             return;
50         }
51
52         int i;
53         for (i = 0; i < messages.size(); i++) {
54
55             LinedMessage cur = (LinedMessage)messages.elementAt(i);
56
57             if (cur.pn.getLine() > sem.pn.getLine()) {
58                 break;
59             }
60         }
61
62         messages.insertElementAt(sem, i);
63     }
64
65     public String toString() {
66         String output = new String();
67
68         for (int i = 0; i < messages.size(); i++) {
69             LinedMessage sem = (LinedMessage)messages.elementAt(i);
70             if (sem.error) {
71                 output += "error";
72             } else {
73                 output += "warning";
74             }
75
76             if (sem.pn != null) {
77                 output += " (" + filename + sem.pn.getLine() + "): ";
78             } else {
79                 output += " : ";
80             }
81
82             output += sem.message;
83             output += "\n";
84         }
85         return output;
86     }
87 }
88
89 class LinedMessage {
90     boolean error;
91     public ParseNode pn;
92     public String message;
93 }