test/tools/javac/diags/MessageFile.java

Print this page




  48 
  49         boolean isEmptyOrComment() {
  50             return emptyOrCommentPattern.matcher(text).matches();
  51         }
  52 
  53         boolean isInfo() {
  54             return infoPattern.matcher(text).matches();
  55         }
  56 
  57         boolean hasContinuation() {
  58             return (next != null) && text.endsWith("\\");
  59         }
  60 
  61         Line insertAfter(String text) {
  62             Line l = new Line(text);
  63             insertAfter(l);
  64             return l;
  65         }
  66 
  67         void insertAfter(Line l) {
  68             assert prev == null && next == null;
  69             l.prev = this;
  70             l.next = next;
  71             if (next == null)
  72                 lastLine = l;
  73             else
  74                 next.prev = l;
  75             next = l;
  76         }
  77 
  78         Line insertBefore(String text) {
  79             Line l = new Line(text);
  80             insertBefore(l);
  81             return l;
  82         }
  83 
  84         void insertBefore(Line l) {
  85             assert prev == null && next == null;
  86             l.prev = prev;
  87             l.next = this;
  88             if (prev == null)
  89                 firstLine = l;
  90             else
  91                 prev.next = l;
  92             prev = l;
  93         }
  94 
  95         void remove() {
  96             if (prev == null)
  97                 firstLine = next;
  98             else
  99                 prev.next = next;
 100             if (next == null)
 101                 lastLine = prev;
 102             else
 103                 next.prev = prev;
 104             prev = null;
 105             next = null;


 393                 sb.append(sep);
 394                 sb.append(i++);
 395                 sb.append(": ");
 396                 sep = "";
 397                 for (String s: f.values) {
 398                     sb.append(sep);
 399                     sb.append(s);
 400                     sep = " or ";
 401                 }
 402                 sep = ", ";
 403             }
 404             return sb.toString();
 405         }
 406     }
 407 
 408     Line firstLine;
 409     Line lastLine;
 410     Map<String, Message> messages = new TreeMap<String, Message>();
 411 
 412     MessageFile(File file) throws IOException {
 413         Reader in = new FileReader(file);
 414         try {
 415             read(in);
 416         } finally {
 417             in.close();
 418         }
 419     }
 420 
 421     MessageFile(Reader in) throws IOException {
 422         read(in);
 423     }
 424 
 425     final void read(Reader in) throws IOException {
 426         BufferedReader br = (in instanceof BufferedReader)
 427                 ? (BufferedReader) in
 428                 : new BufferedReader(in);
 429         String line;
 430         while ((line = br.readLine()) != null) {
 431             Line l;
 432             if (firstLine == null)
 433                 l = firstLine = lastLine = new Line(line);
 434             else
 435                 l = lastLine.insertAfter(line);
 436             if (line.startsWith("compiler.")) {
 437                 int eq = line.indexOf("=");
 438                 if (eq > 0)
 439                     messages.put(line.substring(0, eq), new Message(l));
 440             }
 441         }
 442     }
 443 
 444     void write(File file) throws IOException {
 445         Writer out = new FileWriter(file);
 446         try {
 447             write(out);
 448         } finally {
 449             out.close();
 450         }
 451     }
 452 
 453     void write(Writer out) throws IOException {
 454         BufferedWriter bw = (out instanceof BufferedWriter)
 455                 ? (BufferedWriter) out
 456                 : new BufferedWriter(out);
 457         for (Line l = firstLine; l != null; l = l.next) {
 458             bw.write(l.text);
 459             bw.write("\n"); // always use Unix line endings
 460         }
 461         bw.flush();
 462     }
 463 }


  48 
  49         boolean isEmptyOrComment() {
  50             return emptyOrCommentPattern.matcher(text).matches();
  51         }
  52 
  53         boolean isInfo() {
  54             return infoPattern.matcher(text).matches();
  55         }
  56 
  57         boolean hasContinuation() {
  58             return (next != null) && text.endsWith("\\");
  59         }
  60 
  61         Line insertAfter(String text) {
  62             Line l = new Line(text);
  63             insertAfter(l);
  64             return l;
  65         }
  66 
  67         void insertAfter(Line l) {

  68             l.prev = this;
  69             l.next = next;
  70             if (next == null)
  71                 lastLine = l;
  72             else
  73                 next.prev = l;
  74             next = l;
  75         }
  76 
  77         Line insertBefore(String text) {
  78             Line l = new Line(text);
  79             insertBefore(l);
  80             return l;
  81         }
  82 
  83         void insertBefore(Line l) {

  84             l.prev = prev;
  85             l.next = this;
  86             if (prev == null)
  87                 firstLine = l;
  88             else
  89                 prev.next = l;
  90             prev = l;
  91         }
  92 
  93         void remove() {
  94             if (prev == null)
  95                 firstLine = next;
  96             else
  97                 prev.next = next;
  98             if (next == null)
  99                 lastLine = prev;
 100             else
 101                 next.prev = prev;
 102             prev = null;
 103             next = null;


 391                 sb.append(sep);
 392                 sb.append(i++);
 393                 sb.append(": ");
 394                 sep = "";
 395                 for (String s: f.values) {
 396                     sb.append(sep);
 397                     sb.append(s);
 398                     sep = " or ";
 399                 }
 400                 sep = ", ";
 401             }
 402             return sb.toString();
 403         }
 404     }
 405 
 406     Line firstLine;
 407     Line lastLine;
 408     Map<String, Message> messages = new TreeMap<String, Message>();
 409 
 410     MessageFile(File file) throws IOException {
 411         try(Reader in = new FileReader(file)) {

 412             read(in);


 413         }
 414     }
 415 
 416     MessageFile(Reader in) throws IOException {
 417         read(in);
 418     }
 419 
 420     final void read(Reader in) throws IOException {
 421         BufferedReader br = (in instanceof BufferedReader)
 422                 ? (BufferedReader) in
 423                 : new BufferedReader(in);
 424         String line;
 425         while ((line = br.readLine()) != null) {
 426             Line l;
 427             if (firstLine == null)
 428                 l = firstLine = lastLine = new Line(line);
 429             else
 430                 l = lastLine.insertAfter(line);
 431             if (line.startsWith("compiler.")) {
 432                 int eq = line.indexOf("=");
 433                 if (eq > 0)
 434                     messages.put(line.substring(0, eq), new Message(l));
 435             }
 436         }
 437     }
 438 
 439     void write(File file) throws IOException {
 440         try(Writer out = new FileWriter(file)) {

 441             write(out);


 442         }
 443     }
 444 
 445     void write(Writer out) throws IOException {
 446         BufferedWriter bw = (out instanceof BufferedWriter)
 447                 ? (BufferedWriter) out
 448                 : new BufferedWriter(out);
 449         for (Line l = firstLine; l != null; l = l.next) {
 450             bw.write(l.text);
 451             bw.write("\n"); // always use Unix line endings
 452         }
 453         bw.flush();
 454     }
 455 }