test/langtools/tools/javac/processing/6994946/TestProcessor.java
author jlahoda
Fri, 15 Feb 2019 12:09:53 +0100
changeset 53773 454d54d8af1c
parent 47216 71c04702a3d5
permissions -rw-r--r--
8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round Summary: When an annotation processor reports and error, defer reporting recoverable errors from the erroneous round to the last round, to avoid reporting errors that were resolved in the erroneous round. Reviewed-by: jjg
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7076
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     1
/*
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     2
 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     4
 *
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     7
 * published by the Free Software Foundation.
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     8
 *
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    13
 * accompanied this code).
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    14
 *
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    18
 *
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    21
 * questions.
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    22
 */
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    23
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    24
import java.util.*;
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    25
import javax.annotation.processing.*;
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    26
import javax.lang.model.*;
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    27
import javax.lang.model.element.*;
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    28
import static javax.tools.Diagnostic.Kind.*;
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    29
53773
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    30
import com.sun.source.util.TreePath;
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    31
import com.sun.source.util.Trees;
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    32
7076
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    33
public class TestProcessor extends JavacTestingAbstractProcessor {
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    34
   private int round = 0;
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    35
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    36
   public boolean process(Set<? extends TypeElement> annotations,
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    37
                  RoundEnvironment roundEnv) {
53773
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    38
        if (++round == 1) {
7076
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    39
            messager.printMessage(ERROR, "Deliberate Error");
53773
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    40
            Trees trees = Trees.instance(processingEnv);
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    41
            TreePath elPath = trees.getPath(roundEnv.getRootElements().iterator().next());
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    42
            trees.printMessage(ERROR, "Deliberate Error on Trees",
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    43
                               elPath.getLeaf(), elPath.getCompilationUnit());
454d54d8af1c 8217381: Incovenient errors reported when annotation processor generates source file and errors in the same round
jlahoda
parents: 47216
diff changeset
    44
        }
7076
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    45
        return false;
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    46
   }
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    47
}
c96fa26247c8 6994946: option to specify only syntax errors as unrecoverable
jjg
parents:
diff changeset
    48