T6413690.java revision 2933:49d207bf704d
119304Speter/* 219304Speter * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved. 319304Speter * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 419304Speter * 519304Speter * This code is free software; you can redistribute it and/or modify it 619304Speter * under the terms of the GNU General Public License version 2 only, as 719304Speter * published by the Free Software Foundation. 819304Speter * 919304Speter * This code is distributed in the hope that it will be useful, but WITHOUT 1019304Speter * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1119304Speter * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1219304Speter * version 2 for more details (a copy is included in the LICENSE file that 13254225Speter * accompanied this code). 1419304Speter * 1519304Speter * You should have received a copy of the GNU General Public License version 1619304Speter * 2 along with this work; if not, write to the Free Software Foundation, 1719304Speter * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1819304Speter * 1919304Speter * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2019304Speter * or visit www.oracle.com if you need additional information or have any 2119304Speter * questions. 2219304Speter */ 2319304Speter 2419304Speter/* 2519304Speter * @test 2619304Speter * @bug 6413690 6380018 27254225Speter * @summary JavacProcessingEnvironment does not enter trees from preceding rounds 2819304Speter * @author Peter von der Ah\u00e9 2919304Speter * @library /tools/javac/lib 3019304Speter * @modules java.compiler 3119304Speter * jdk.compiler 3219304Speter * @build JavacTestingAbstractProcessor 3319304Speter * @compile T6413690.java 3419304Speter * @compile -XDfatalEnterError -verbose -processor T6413690 src/Super.java TestMe.java 3519304Speter */ 3619304Speter 3719304Speterimport java.io.IOException; 3819304Speterimport java.io.Writer; 3919304Speterimport java.util.Set; 4019304Speterimport javax.annotation.processing.AbstractProcessor; 4119304Speterimport javax.annotation.processing.Filer; 4219304Speterimport javax.annotation.processing.RoundEnvironment; 4319304Speterimport javax.annotation.processing.SupportedAnnotationTypes; 4419304Speterimport javax.lang.model.element.Element; 4519304Speterimport javax.lang.model.element.TypeElement; 4619304Speterimport javax.lang.model.util.Elements; 4719304Speter 4819304Speter@SupportedAnnotationTypes("TestMe") 4919304Speterpublic class T6413690 extends JavacTestingAbstractProcessor { 5019304Speter public boolean process(Set<? extends TypeElement> annotations, 5119304Speter RoundEnvironment roundEnvironment) { 5219304Speter TypeElement testMe = elements.getTypeElement(TestMe.class.getName()); 5319304Speter Set<? extends Element> supers = roundEnvironment.getElementsAnnotatedWith(testMe); 5419304Speter try { 5519304Speter for (Element sup : supers) { 5619304Speter Writer sub = filer.createSourceFile(sup.getSimpleName() + "_GENERATED").openWriter(); 5719304Speter sub.write(String.format("class %s_GENERATED extends %s {}", 5819304Speter sup.getSimpleName(), 5919304Speter ((TypeElement)sup).getQualifiedName())); 6019304Speter sub.close(); 6119304Speter } 6219304Speter } catch (IOException ex) { 6319304Speter throw new RuntimeException(ex); 6419304Speter } 6519304Speter return true; 6619304Speter } 6719304Speter} 6819304Speter