# HG changeset patch # User Christian Humer # Date 1407856866 -7200 # Node ID 45c8f64978d6170d32d6aee4b68ed76475fd6dc9 # Parent af3da93ea93436a21fadb9a0b66d12ec0e26ece9 Truffle-DSL: initial cleanups for code sharing with the new graal annotation processor. diff -r af3da93ea934 -r 45c8f64978d6 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/AnnotationProcessor.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/AnnotationProcessor.java Tue Aug 12 14:54:36 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/AnnotationProcessor.java Tue Aug 12 17:21:06 2014 +0200 @@ -22,17 +22,13 @@ */ package com.oracle.truffle.dsl.processor; -import java.io.*; import java.util.*; -import javax.annotation.processing.*; import javax.lang.model.element.*; import javax.lang.model.type.*; -import javax.tools.*; import com.oracle.truffle.dsl.processor.generator.*; import com.oracle.truffle.dsl.processor.java.*; -import com.oracle.truffle.dsl.processor.java.compiler.*; import com.oracle.truffle.dsl.processor.java.model.*; import com.oracle.truffle.dsl.processor.java.transform.*; import com.oracle.truffle.dsl.processor.model.*; @@ -88,7 +84,7 @@ DeclaredType overrideType = (DeclaredType) context.getType(Override.class); DeclaredType unusedType = (DeclaredType) context.getType(SuppressWarnings.class); unit.accept(new GenerateOverrideVisitor(overrideType), null); - unit.accept(new FixWarningsVisitor(context, unusedType, overrideType), null); + unit.accept(new FixWarningsVisitor(context.getEnvironment(), unusedType, overrideType), null); if (!callback) { unit.accept(new CodeWriter(context.getEnvironment(), element), null); @@ -97,33 +93,4 @@ } } - private static class CodeWriter extends AbstractCodeWriter { - - private final Element originalElement; - private final ProcessingEnvironment env; - - public CodeWriter(ProcessingEnvironment env, Element originalElement) { - this.env = env; - this.originalElement = originalElement; - } - - @Override - protected Writer createWriter(CodeTypeElement clazz) throws IOException { - JavaFileObject jfo = env.getFiler().createSourceFile(clazz.getQualifiedName(), originalElement); - return new BufferedWriter(jfo.openWriter()); - } - - @Override - protected void writeHeader() { - if (env == null) { - return; - } - String comment = CompilerFactory.getCompiler(originalElement).getHeaderComment(env, originalElement); - if (comment != null) { - writeLn(comment); - } - } - - } - } diff -r af3da93ea934 -r 45c8f64978d6 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/CodeWriter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/CodeWriter.java Tue Aug 12 17:21:06 2014 +0200 @@ -0,0 +1,62 @@ +/* + * 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. + */ +package com.oracle.truffle.dsl.processor; + +import java.io.*; + +import javax.annotation.processing.*; +import javax.lang.model.element.*; +import javax.tools.*; + +import com.oracle.truffle.dsl.processor.java.compiler.*; +import com.oracle.truffle.dsl.processor.java.model.*; +import com.oracle.truffle.dsl.processor.java.transform.*; + +public final class CodeWriter extends AbstractCodeWriter { + + private final Element originalElement; + private final ProcessingEnvironment env; + + public CodeWriter(ProcessingEnvironment env, Element originalElement) { + this.env = env; + this.originalElement = originalElement; + } + + @Override + protected Writer createWriter(CodeTypeElement clazz) throws IOException { + JavaFileObject jfo = env.getFiler().createSourceFile(clazz.getQualifiedName(), originalElement); + return new BufferedWriter(jfo.openWriter()); + } + + @Override + protected void writeHeader() { + if (env == null) { + return; + } + String comment = CompilerFactory.getCompiler(originalElement).getHeaderComment(env, originalElement); + if (comment != null) { + writeLn(comment); + } + } + +} \ No newline at end of file diff -r af3da93ea934 -r 45c8f64978d6 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/ProcessorContext.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/ProcessorContext.java Tue Aug 12 14:54:36 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/ProcessorContext.java Tue Aug 12 17:21:06 2014 +0200 @@ -84,35 +84,7 @@ } public TypeMirror getType(Class element) { - TypeMirror mirror; - if (element.isPrimitive()) { - if (element == boolean.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.BOOLEAN); - } else if (element == byte.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.BYTE); - } else if (element == short.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.SHORT); - } else if (element == char.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.CHAR); - } else if (element == int.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.INT); - } else if (element == long.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.LONG); - } else if (element == float.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.FLOAT); - } else if (element == double.class) { - mirror = environment.getTypeUtils().getPrimitiveType(TypeKind.DOUBLE); - } else if (element == void.class) { - mirror = environment.getTypeUtils().getNoType(TypeKind.VOID); - } else { - assert false; - return null; - } - } else { - TypeElement typeElement = environment.getElementUtils().getTypeElement(element.getCanonicalName()); - mirror = typeElement.asType(); - } - return mirror; + return ElementUtils.getType(environment, element); } public interface ProcessCallback { diff -r af3da93ea934 -r 45c8f64978d6 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Tue Aug 12 14:54:36 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Tue Aug 12 17:21:06 2014 +0200 @@ -40,6 +40,39 @@ */ public class ElementUtils { + public static TypeMirror getType(ProcessingEnvironment processingEnv, Class element) { + TypeMirror mirror; + if (element.isPrimitive()) { + TypeKind typeKind; + if (element == boolean.class) { + typeKind = TypeKind.BOOLEAN; + } else if (element == byte.class) { + typeKind = TypeKind.BYTE; + } else if (element == short.class) { + typeKind = TypeKind.SHORT; + } else if (element == char.class) { + typeKind = TypeKind.CHAR; + } else if (element == int.class) { + typeKind = TypeKind.INT; + } else if (element == long.class) { + typeKind = TypeKind.LONG; + } else if (element == float.class) { + typeKind = TypeKind.FLOAT; + } else if (element == double.class) { + typeKind = TypeKind.DOUBLE; + } else if (element == void.class) { + typeKind = TypeKind.VOID; + } else { + assert false; + return null; + } + mirror = processingEnv.getTypeUtils().getPrimitiveType(typeKind); + } else { + mirror = processingEnv.getElementUtils().getTypeElement(element.getCanonicalName()).asType(); + } + return mirror; + } + public static ExecutableElement findExecutableElement(DeclaredType type, String name) { List elements = ElementFilter.methodsIn(type.asElement().getEnclosedElements()); for (ExecutableElement executableElement : elements) { @@ -801,7 +834,7 @@ return null; } - private static PackageElement findPackageElement(Element type) { + public static PackageElement findPackageElement(Element type) { List hierarchy = getElementHierarchy(type); for (Element element : hierarchy) { if (element.getKind() == ElementKind.PACKAGE) { diff -r af3da93ea934 -r 45c8f64978d6 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/FixWarningsVisitor.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/FixWarningsVisitor.java Tue Aug 12 14:54:36 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/FixWarningsVisitor.java Tue Aug 12 17:21:06 2014 +0200 @@ -28,10 +28,10 @@ import java.io.*; import java.util.*; +import javax.annotation.processing.*; import javax.lang.model.element.*; import javax.lang.model.type.*; -import com.oracle.truffle.dsl.processor.*; import com.oracle.truffle.dsl.processor.java.*; import com.oracle.truffle.dsl.processor.java.model.*; @@ -39,12 +39,12 @@ private final Set symbolsUsed = new HashSet<>(); - private final ProcessorContext context; + private final ProcessingEnvironment processingEnv; private final DeclaredType unusedAnnotation; private final DeclaredType overrideType; - public FixWarningsVisitor(ProcessorContext context, DeclaredType unusedAnnotation, DeclaredType overrideType) { - this.context = context; + public FixWarningsVisitor(ProcessingEnvironment processingEnv, DeclaredType unusedAnnotation, DeclaredType overrideType) { + this.processingEnv = processingEnv; this.unusedAnnotation = unusedAnnotation; this.overrideType = overrideType; } @@ -56,7 +56,7 @@ String qualifiedName = ElementUtils.getQualifiedName(type); if (qualifiedName.equals(Serializable.class.getCanonicalName())) { if (!e.containsField("serialVersionUID")) { - e.add(new CodeVariableElement(modifiers(PRIVATE, STATIC, FINAL), context.getType(long.class), "serialVersionUID", "1L")); + e.add(new CodeVariableElement(modifiers(PRIVATE, STATIC, FINAL), ElementUtils.getType(processingEnv, long.class), "serialVersionUID", "1L")); } break; } diff -r af3da93ea934 -r 45c8f64978d6 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java Tue Aug 12 14:54:36 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/OrganizedImports.java Tue Aug 12 17:21:06 2014 +0200 @@ -481,7 +481,9 @@ @Override public void visitTypeReference(Element enclosedType, TypeMirror type) { - createTypeReference(enclosedType, type); + if (type != null) { + createTypeReference(enclosedType, type); + } } } diff -r af3da93ea934 -r 45c8f64978d6 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/AbstractParser.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/AbstractParser.java Tue Aug 12 14:54:36 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/AbstractParser.java Tue Aug 12 17:21:06 2014 +0200 @@ -37,7 +37,7 @@ /** * THIS IS NOT PUBLIC API. */ -public abstract class AbstractParser { +public abstract class AbstractParser { protected final ProcessorContext context; protected final ProcessingEnvironment processingEnv;