test/tools/javac/enum/6350057/T6350057.java

Fri, 21 Dec 2012 08:45:43 -0800

author
darcy
date
Fri, 21 Dec 2012 08:45:43 -0800
changeset 1466
b52a38d4536c
parent 1054
111bbf1ad913
child 2525
2eb010b6cb22
permissions
-rw-r--r--

8005282: Use @library tag with non-relative path for javac tests
Reviewed-by: jjg

     1 /*
     2  * Copyright (c) 2006, 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 6350057 7025809
    27  * @summary Test that parameters on implicit enum methods have the right kind
    28  * @author  Joseph D. Darcy
    29  * @library /tools/javac/lib
    30  * @build   JavacTestingAbstractProcessor T6350057
    31  * @compile -processor T6350057 -proc:only TestEnum.java
    32  */
    34 import java.util.Set;
    35 import javax.annotation.processing.AbstractProcessor;
    36 import javax.annotation.processing.RoundEnvironment;
    37 import javax.annotation.processing.SupportedAnnotationTypes;
    38 import javax.lang.model.element.*;
    39 import javax.lang.model.util.*;
    40 import static javax.tools.Diagnostic.Kind.*;
    42 public class T6350057 extends JavacTestingAbstractProcessor {
    43     static class LocalVarAllergy extends ElementKindVisitor<Boolean, Void> {
    44         @Override
    45         public Boolean visitTypeAsEnum(TypeElement e, Void v) {
    46             System.out.println("visitTypeAsEnum: " + e.getSimpleName().toString());
    47             for(Element el: e.getEnclosedElements() )
    48                 this.visit(el);
    49             return true;
    50         }
    52         @Override
    53         public Boolean visitVariableAsLocalVariable(VariableElement e, Void v){
    54             throw new IllegalStateException("Should not see any local variables!");
    55         }
    57         @Override
    58         public Boolean visitVariableAsParameter(VariableElement e, Void v){
    59             String senclm=e.getEnclosingElement().getEnclosingElement().getSimpleName().toString();
    60             String sEncl = senclm+"."+e.getEnclosingElement().getSimpleName().toString();
    61             String stype = e.asType().toString();
    62             String name =  e.getSimpleName().toString();
    63             System.out.println("visitVariableAsParameter: " +sEncl+"." + stype + " " + name);
    64             return true;
    65         }
    67         @Override
    68         public Boolean visitExecutableAsMethod(ExecutableElement e, Void v){
    69             String name=e.getEnclosingElement().getSimpleName().toString();
    70             name = name + "."+e.getSimpleName().toString();
    71             System.out.println("visitExecutableAsMethod: " + name);
    72             for (VariableElement ve: e.getParameters())
    73                 this.visit(ve);
    74             return true;
    75         }
    76     }
    78     public boolean process(Set<? extends TypeElement> annotations,
    79                            RoundEnvironment roundEnvironment) {
    80         if (!roundEnvironment.processingOver())
    81             for(Element element : roundEnvironment.getRootElements())
    82                 element.accept(new LocalVarAllergy(), null);
    83         return true;
    84     }
    85 }

mercurial