langtools/test/tools/javac/api/7086261/T7086261.java
author jjh
Wed, 15 Aug 2012 13:48:46 -0700
changeset 13631 dc1212c348f9
parent 12215 25d9238c9b75
child 27319 030080f03e4f
permissions -rw-r--r--
7191449: update copyright year to match last edit in jdk8 langtools repository Reviewed-by: jjh Contributed-by: steve.sides@oracle.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10458
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     1
/*
13631
dc1212c348f9 7191449: update copyright year to match last edit in jdk8 langtools repository
jjh
parents: 12215
diff changeset
     2
 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
10458
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     4
 *
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     7
 * published by the Free Software Foundation.
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     8
 *
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    13
 * accompanied this code).
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    14
 *
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    18
 *
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    21
 * questions.
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    22
 */
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    23
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    24
/*
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    25
 * @test
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    26
 * @bug 7086261
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    27
 * @summary javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    28
 */
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    29
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    30
import javax.tools.*;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    31
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    32
import com.sun.tools.javac.api.ClientCodeWrapper.DiagnosticSourceUnwrapper;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    33
import com.sun.tools.javac.util.JCDiagnostic;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    34
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    35
import java.net.URI;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    36
import java.util.Arrays;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    37
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    38
import static javax.tools.StandardLocation.*;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    39
import static javax.tools.JavaFileObject.Kind.*;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    40
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    41
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    42
public class T7086261 {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    43
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    44
    static class ErroneousSource extends SimpleJavaFileObject {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    45
        public ErroneousSource() {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    46
            super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE);
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    47
        }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    48
        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    49
            return "class Test { NonexistentClass c = null; }";
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    50
        }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    51
    }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    52
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    53
    static class DiagnosticChecker implements DiagnosticListener<javax.tools.JavaFileObject> {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    54
        public void report(Diagnostic message) {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    55
            if (!(message instanceof DiagnosticSourceUnwrapper)) {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    56
                throw new AssertionError("Wrapped diagnostic expected!");
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    57
            }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    58
            String actual = message.toString();
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    59
            JCDiagnostic jd = (JCDiagnostic)((DiagnosticSourceUnwrapper)message).d;
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    60
            String expected = jd.toString();
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    61
            if (!actual.equals(expected)) {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    62
                throw new AssertionError("expected = " + expected + "\nfound = " + actual);
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    63
            }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    64
        }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    65
    };
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    66
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    67
    void test() throws Throwable {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    68
        JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    69
        JavaFileManager jfm = javac.getStandardFileManager(null, null, null);
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    70
        JavaCompiler.CompilationTask task =
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    71
                javac.getTask(null, jfm, new DiagnosticChecker(), null, null, Arrays.asList(new ErroneousSource()));
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    72
        task.call();
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    73
    }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    74
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    75
    public static void main(String[] args) throws Throwable {
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    76
        new T7086261().test();
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    77
    }
fa69cf8c069a 7086261: javac doesn't report error as expected, it only reports ClientCodeWrapper$DiagnosticSourceUnwrapper
mcimadamore
parents:
diff changeset
    78
}