test/tools/javac/failover/CheckAttributedTree.java

changeset 1482
954541f13717
parent 1348
573ceb23beeb
child 1520
5c956be64b9e
     1.1 --- a/test/tools/javac/failover/CheckAttributedTree.java	Tue Jan 08 10:17:29 2013 +0100
     1.2 +++ b/test/tools/javac/failover/CheckAttributedTree.java	Tue Jan 08 13:47:57 2013 +0000
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -21,7 +21,15 @@
    1.11   * questions.
    1.12   */
    1.13  
    1.14 -import com.sun.source.util.TaskEvent;
    1.15 +/*
    1.16 + * @test
    1.17 + * @bug 6970584
    1.18 + * @summary assorted position errors in compiler syntax trees
    1.19 + * @library ../lib
    1.20 + * @build JavacTestingAbstractThreadedTest
    1.21 + * @run main CheckAttributedTree -q -r -et ERRONEOUS .
    1.22 + */
    1.23 +
    1.24  import java.awt.BorderLayout;
    1.25  import java.awt.Color;
    1.26  import java.awt.Dimension;
    1.27 @@ -34,6 +42,20 @@
    1.28  import java.awt.event.ActionListener;
    1.29  import java.awt.event.MouseAdapter;
    1.30  import java.awt.event.MouseEvent;
    1.31 +import java.io.File;
    1.32 +import java.io.IOException;
    1.33 +import java.io.PrintStream;
    1.34 +import java.io.PrintWriter;
    1.35 +import java.io.StringWriter;
    1.36 +import java.lang.reflect.Field;
    1.37 +import java.util.ArrayList;
    1.38 +import java.util.Arrays;
    1.39 +import java.util.concurrent.atomic.AtomicInteger;
    1.40 +import java.util.HashSet;
    1.41 +import java.util.List;
    1.42 +import java.util.Set;
    1.43 +
    1.44 +import javax.lang.model.element.Element;
    1.45  import javax.swing.DefaultComboBoxModel;
    1.46  import javax.swing.JComboBox;
    1.47  import javax.swing.JComponent;
    1.48 @@ -49,23 +71,14 @@
    1.49  import javax.swing.text.BadLocationException;
    1.50  import javax.swing.text.DefaultHighlighter;
    1.51  import javax.swing.text.Highlighter;
    1.52 -import java.io.File;
    1.53 -import java.io.IOException;
    1.54 -import java.io.PrintStream;
    1.55 -import java.io.PrintWriter;
    1.56 -import java.io.StringWriter;
    1.57 -import java.lang.reflect.Field;
    1.58 -import java.util.ArrayList;
    1.59 -import java.util.List;
    1.60  import javax.tools.Diagnostic;
    1.61  import javax.tools.DiagnosticListener;
    1.62  import javax.tools.JavaFileObject;
    1.63 -import javax.tools.StandardJavaFileManager;
    1.64  
    1.65  import com.sun.source.tree.CompilationUnitTree;
    1.66 +import com.sun.source.util.TaskEvent;
    1.67  import com.sun.source.util.JavacTask;
    1.68  import com.sun.source.util.TaskListener;
    1.69 -import com.sun.tools.javac.api.JavacTool;
    1.70  import com.sun.tools.javac.code.Symbol;
    1.71  import com.sun.tools.javac.code.Type;
    1.72  import com.sun.tools.javac.tree.EndPosTable;
    1.73 @@ -76,11 +89,6 @@
    1.74  import com.sun.tools.javac.tree.TreeScanner;
    1.75  import com.sun.tools.javac.util.Pair;
    1.76  
    1.77 -import java.util.Arrays;
    1.78 -import java.util.HashSet;
    1.79 -import java.util.Set;
    1.80 -import javax.lang.model.element.Element;
    1.81 -
    1.82  import static com.sun.tools.javac.tree.JCTree.Tag.*;
    1.83  
    1.84  /**
    1.85 @@ -95,13 +103,7 @@
    1.86   * covering any new language features that may be tested in this test suite.
    1.87   */
    1.88  
    1.89 -/*
    1.90 - * @test
    1.91 - * @bug 6970584
    1.92 - * @summary assorted position errors in compiler syntax trees
    1.93 - * @run main CheckAttributedTree -q -r -et ERRONEOUS .
    1.94 - */
    1.95 -public class CheckAttributedTree {
    1.96 +public class CheckAttributedTree extends JavacTestingAbstractThreadedTest {
    1.97      /**
    1.98       * Main entry point.
    1.99       * If test.src is set, program runs in jtreg mode, and will throw an Error
   1.100 @@ -110,9 +112,10 @@
   1.101       * args is the value of ${test.src}. In jtreg mode, the -r option can be
   1.102       * given to change the default base directory to the root test directory.
   1.103       */
   1.104 -    public static void main(String... args) {
   1.105 +    public static void main(String... args) throws Exception {
   1.106          String testSrc = System.getProperty("test.src");
   1.107          File baseDir = (testSrc == null) ? null : new File(testSrc);
   1.108 +        throwAssertionOnError = false;
   1.109          boolean ok = new CheckAttributedTree().run(baseDir, args);
   1.110          if (!ok) {
   1.111              if (testSrc != null)  // jtreg mode
   1.112 @@ -130,7 +133,7 @@
   1.113       * @param args command line args
   1.114       * @return true if successful or in gui mode
   1.115       */
   1.116 -    boolean run(File baseDir, String... args) {
   1.117 +    boolean run(File baseDir, String... args) throws Exception {
   1.118          if (args.length == 0) {
   1.119              usage(System.out);
   1.120              return true;
   1.121 @@ -145,8 +148,10 @@
   1.122                  gui = true;
   1.123              else if (arg.equals("-q"))
   1.124                  quiet = true;
   1.125 -            else if (arg.equals("-v"))
   1.126 +            else if (arg.equals("-v")) {
   1.127                  verbose = true;
   1.128 +                printAll = true;
   1.129 +            }
   1.130              else if (arg.equals("-t") && i + 1 < args.length)
   1.131                  tags.add(args[++i]);
   1.132              else if (arg.equals("-ef") && i + 1 < args.length)
   1.133 @@ -179,12 +184,11 @@
   1.134                  error("File not found: " + file);
   1.135          }
   1.136  
   1.137 -        if (fileCount != 1)
   1.138 -            System.err.println(fileCount + " files read");
   1.139 -        if (errors > 0)
   1.140 -            System.err.println(errors + " errors");
   1.141 +        if (fileCount.get() != 1)
   1.142 +            errWriter.println(fileCount + " files read");
   1.143 +        checkAfterExec(false);
   1.144  
   1.145 -        return (gui || errors == 0);
   1.146 +        return (gui || errCount.get() == 0);
   1.147      }
   1.148  
   1.149      /**
   1.150 @@ -215,7 +219,7 @@
   1.151       * for java files.
   1.152       * @param file the file or directory to test
   1.153       */
   1.154 -    void test(File file) {
   1.155 +    void test(final File file) {
   1.156          if (excludeFiles.contains(file)) {
   1.157              if (!quiet)
   1.158                  error("File " + file + " excluded");
   1.159 @@ -230,20 +234,24 @@
   1.160          }
   1.161  
   1.162          if (file.isFile() && file.getName().endsWith(".java")) {
   1.163 -            try {
   1.164 -                if (verbose)
   1.165 -                    System.err.println(file);
   1.166 -                fileCount++;
   1.167 -                NPETester p = new NPETester();
   1.168 -                p.test(read(file));
   1.169 -            } catch (AttributionException e) {
   1.170 -                if (!quiet) {
   1.171 -                    error("Error attributing " + file + "\n" + e.getMessage());
   1.172 +            pool.execute(new Runnable() {
   1.173 +                @Override
   1.174 +                public void run() {
   1.175 +                    try {
   1.176 +                        if (verbose)
   1.177 +                            errWriter.println(file);
   1.178 +                        fileCount.incrementAndGet();
   1.179 +                        NPETester p = new NPETester();
   1.180 +                        p.test(read(file));
   1.181 +                    } catch (AttributionException e) {
   1.182 +                        if (!quiet) {
   1.183 +                            error("Error attributing " + file + "\n" + e.getMessage());
   1.184 +                        }
   1.185 +                    } catch (IOException e) {
   1.186 +                        error("Error reading " + file + ": " + e);
   1.187 +                    }
   1.188                  }
   1.189 -            } catch (IOException e) {
   1.190 -                error("Error reading " + file + ": " + e);
   1.191 -            }
   1.192 -            return;
   1.193 +            });
   1.194          }
   1.195  
   1.196          if (!quiet)
   1.197 @@ -254,8 +262,6 @@
   1.198      StringWriter sw = new StringWriter();
   1.199      PrintWriter pw = new PrintWriter(sw);
   1.200      Reporter r = new Reporter(pw);
   1.201 -    JavacTool tool = JavacTool.create();
   1.202 -    StandardJavaFileManager fm = tool.getStandardFileManager(r, null, null);
   1.203  
   1.204      /**
   1.205       * Read a file.
   1.206 @@ -265,11 +271,10 @@
   1.207       * @throws TreePosTest.ParseException if any errors occur while parsing the file
   1.208       */
   1.209      List<Pair<JCCompilationUnit, JCTree>> read(File file) throws IOException, AttributionException {
   1.210 -        JavacTool tool = JavacTool.create();
   1.211          r.errors = 0;
   1.212 -        Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(file);
   1.213 +        Iterable<? extends JavaFileObject> files = fm.get().getJavaFileObjects(file);
   1.214          String[] opts = { "-XDshouldStopPolicy=ATTR", "-XDverboseCompilePolicy" };
   1.215 -        JavacTask task = tool.getTask(pw, fm, r, Arrays.asList(opts), null, files);
   1.216 +        JavacTask task = (JavacTask)comp.getTask(pw, fm.get(), r, Arrays.asList(opts), null, files);
   1.217          final List<Element> analyzedElems = new ArrayList<>();
   1.218          task.setTaskListener(new TaskListener() {
   1.219              public void started(TaskEvent e) {
   1.220 @@ -308,13 +313,9 @@
   1.221       */
   1.222      void error(String msg) {
   1.223          System.err.println(msg);
   1.224 -        errors++;
   1.225 +        errCount.incrementAndGet();
   1.226      }
   1.227  
   1.228 -    /** Number of files that have been analyzed. */
   1.229 -    int fileCount;
   1.230 -    /** Number of errors reported. */
   1.231 -    int errors;
   1.232      /** Flag: don't report irrelevant files. */
   1.233      boolean quiet;
   1.234      /** Flag: show errors in GUI viewer. */
   1.235 @@ -385,7 +386,8 @@
   1.236                          viewer = new Viewer();
   1.237                      viewer.addEntry(sourcefile, label, encl, self);
   1.238                  }
   1.239 -                error(label + self.toString() + " encl: " + encl.toString() + " in file: " + sourcefile + "  " + self.tree);
   1.240 +                error(label + self.toString() + " encl: " + encl.toString() +
   1.241 +                        " in file: " + sourcefile + "  " + self.tree);
   1.242              }
   1.243          }
   1.244  
   1.245 @@ -754,4 +756,8 @@
   1.246              final Info self;
   1.247          }
   1.248      }
   1.249 +
   1.250 +    /** Number of files that have been analyzed. */
   1.251 +    static AtomicInteger fileCount = new AtomicInteger();
   1.252 +
   1.253  }

mercurial