test/tools/javac/Diagnostics/7010608/Test.java

Mon, 21 Jan 2013 20:13:56 +0000

author
mcimadamore
date
Mon, 21 Jan 2013 20:13:56 +0000
changeset 1510
7873d37f5b37
parent 0
959103a6100f
permissions
-rw-r--r--

8005244: Implement overload resolution as per latest spec EDR
Summary: Add support for stuck expressions and provisional applicability
Reviewed-by: jjg

     1 /*
     2  * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  */
    24 /*
    25  * @test
    26  * @bug 7010608
    27  * @summary the string 'error' should appear in error messages
    28  */
    30 import java.io.*;
    31 import java.net.URI;
    32 import java.util.*;
    33 import javax.tools.*;
    34 import javax.tools.JavaCompiler.CompilationTask;
    36 public class Test {
    37     public static void main(String... args) throws Exception {
    38         new Test().run();
    39     }
    41     void run() throws Exception {
    42         Locale prev = Locale.getDefault();
    43         Locale.setDefault(Locale.ENGLISH);
    44         try {
    45             test(Arrays.<String>asList(),
    46                     "myfo://test:1: error: cannot find symbol");
    47             test(Arrays.asList("-XDdiagsFormat=OLD"),
    48                     "myfo://test:1: cannot find symbol");
    49             test(Arrays.asList("-XDoldDiags"),
    50                     "myfo://test:1: cannot find symbol");
    51         } finally {
    52             Locale.setDefault(prev);
    53         }
    54     }
    56     void test(List<String> options, String expect) throws Exception {
    57         System.err.println("test: " + options);
    58         JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
    59         StringWriter sw = new StringWriter();
    60         PrintWriter pw = new PrintWriter(sw);
    61         JavaFileObject f = new MyFileObject("myfo://test", "class Bad { Missing x; }");
    62         List<? extends JavaFileObject> files = Arrays.asList(f);
    63         CompilationTask task = javac.getTask(pw, null, null, options, null, files);
    64         boolean ok = task.call();
    65         pw.close();
    66         String out = sw.toString();
    67         if (!out.isEmpty())
    68             System.err.println(out);
    69         if (ok)
    70             throw new Exception("Compilation succeeded unexpectedly");
    71         if (!out.contains(expect))
    72             throw new Exception("expected text not found: " + expect);
    73     }
    75     class MyFileObject extends SimpleJavaFileObject {
    76         MyFileObject(String uri, String text) {
    77             super(URI.create(uri), JavaFileObject.Kind.SOURCE);
    78             this.text = text;
    79         }
    80         @Override
    81         public String getName() {
    82             return uri.toString();
    83         }
    84         @Override
    85         public String getCharContent(boolean ignoreEncodingErrors) {
    86             return text;
    87         }
    88         final String text;
    89     }
    90 }

mercurial