Mercurial > hg > openjdk > lambda > langtools
changeset 1563:8987971bcb45
7196462: JavacProcessingEnvironment should tolerate BasicJavacTask
Reviewed-by: mcimadamore
author | jjg |
---|---|
date | Mon, 24 Sep 2012 14:04:34 -0700 |
parents | a433bd8f3ba9 |
children | 99983a4a593b |
files | src/share/classes/com/sun/tools/javac/api/BasicJavacTask.java src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java test/tools/javac/processing/T7196462.java |
diffstat | 3 files changed, 55 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/api/BasicJavacTask.java Fri Sep 14 13:22:59 2012 -0700 +++ b/src/share/classes/com/sun/tools/javac/api/BasicJavacTask.java Mon Sep 24 14:04:34 2012 -0700 @@ -136,4 +136,11 @@ throw new IllegalStateException(); } + /** + * For internal use only. This method will be + * removed without warning. + */ + public void updateContext(Context newContext) { + context = newContext; + } }
--- a/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Fri Sep 14 13:22:59 2012 -0700 +++ b/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Sep 24 14:04:34 2012 -0700 @@ -49,7 +49,7 @@ import com.sun.source.util.JavacTask; import com.sun.source.util.TaskEvent; -import com.sun.tools.javac.api.JavacTaskImpl; +import com.sun.tools.javac.api.BasicJavacTask; import com.sun.tools.javac.api.JavacTrees; import com.sun.tools.javac.api.MultiTaskListener; import com.sun.tools.javac.code.*; @@ -1086,10 +1086,11 @@ elementUtils.setContext(next); typeUtils.setContext(next); - JavacTaskImpl task = (JavacTaskImpl) context.get(JavacTask.class); + JavacTask task = context.get(JavacTask.class); if (task != null) { next.put(JavacTask.class, task); - task.updateContext(next); + if (task instanceof BasicJavacTask) + ((BasicJavacTask) task).updateContext(next); } JavacTrees trees = context.get(JavacTrees.class);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/processing/T7196462.java Mon Sep 24 14:04:34 2012 -0700 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7196462 + * @summary JavacProcessingEnvironment should tolerate BasicJavacTask + * @library ../lib + * @build JavacTestingAbstractProcessor T7196462 + * @compile/process -processor T7196462 T7196462.java + */ + +import java.util.*; +import javax.annotation.processing.*; +import javax.lang.model.element.*; +import com.sun.source.util.*; + +public class T7196462 extends JavacTestingAbstractProcessor { + public boolean process(Set<? extends TypeElement> annos,RoundEnvironment rEnv) { + JavacTask t = JavacTask.instance(processingEnv); + System.err.println(t); + return true; + } +}