diff graal/com.oracle.graal.options.processor/src/com/oracle/graal/options/processor/OptionProcessor.java @ 21519:cecb4e39521c

Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Wed, 27 May 2015 17:40:26 +0200
parents 4cc6793cda69
children
line wrap: on
line diff
--- a/graal/com.oracle.graal.options.processor/src/com/oracle/graal/options/processor/OptionProcessor.java	Mon May 18 18:30:43 2015 +0200
+++ b/graal/com.oracle.graal.options.processor/src/com/oracle/graal/options/processor/OptionProcessor.java	Wed May 27 17:40:26 2015 +0200
@@ -229,6 +229,7 @@
         String filename = "META-INF/options/" + pkg + "." + relativeName;
         FileObject file = processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", filename, originatingElements);
         PrintWriter writer = new PrintWriter(new OutputStreamWriter(file.openOutputStream(), "UTF-8"));
+        Types types = processingEnv.getTypeUtils();
         for (OptionInfo option : info.options) {
             String help = option.help;
             if (help.indexOf('\t') >= 0 || help.indexOf('\r') >= 0 || help.indexOf('\n') >= 0) {
@@ -237,13 +238,20 @@
             }
             try {
                 char optionTypeToChar = optionTypeToChar(option);
-                writer.printf("%s\t%s\t%s%n", option.name, optionTypeToChar, help);
+                String fqDeclaringClass = className(types.erasure(option.field.getEnclosingElement().asType()));
+                String fqFieldType = className(types.erasure(option.field.asType()));
+                writer.printf("%s\t%s\t%s\t%s\t%s%n", option.name, optionTypeToChar, help, fqDeclaringClass, fqFieldType);
             } catch (IllegalArgumentException iae) {
             }
         }
         writer.close();
     }
 
+    private String className(TypeMirror t) {
+        DeclaredType dt = (DeclaredType) t;
+        return processingEnv.getElementUtils().getBinaryName((TypeElement) dt.asElement()).toString();
+    }
+
     private char optionTypeToChar(OptionInfo option) {
         switch (option.type) {
             case "Boolean":