< prev index next >

test/langtools/tools/javac/T8003967/DetectMutableStaticFields.java

Print this page




  62 import static com.sun.tools.classfile.AccessFlags.ACC_STATIC;
  63 
  64 public class DetectMutableStaticFields {
  65 
  66     private final String[] modules = {
  67         "java.compiler",
  68         "jdk.compiler",
  69         "jdk.javadoc",
  70         "jdk.jdeps"
  71     };
  72 
  73     private final String[] packagesToSeekFor = new String[] {
  74         "javax.tools",
  75         "javax.lang.model",
  76         "com.sun.javadoc",
  77         "com.sun.source",
  78         "com.sun.tools.classfile",
  79         "com.sun.tools.doclets",
  80         "com.sun.tools.javac",
  81         "com.sun.tools.javadoc",
  82         "com.sun.tools.javah",
  83         "com.sun.tools.javap",
  84         "jdk.javadoc"
  85     };
  86 
  87     private static final Map<String, List<String>> classFieldsToIgnoreMap = new HashMap<>();
  88     private static void ignore(String className, String... fields) {
  89         classFieldsToIgnoreMap.put(className, Arrays.asList(fields));
  90     }
  91 
  92     static {
  93         ignore("javax/tools/ToolProvider", "instance");
  94         ignore("jdk/javadoc/internal/tool/Start", "versionRB");
  95         ignore("com/sun/tools/javah/JavahTask", "versionRB");
  96         ignore("com/sun/tools/classfile/Dependencies$DefaultFilter", "instance");
  97         ignore("com/sun/tools/javap/JavapTask", "versionRB");
  98         ignore("com/sun/tools/doclets/formats/html/HtmlDoclet", "docletToStart");
  99         ignore("com/sun/tools/javac/util/JCDiagnostic", "fragmentFormatter");
 100         ignore("com/sun/tools/javac/util/JavacMessages", "defaultBundle", "defaultMessages");
 101         ignore("com/sun/tools/javac/file/JRTIndex", "sharedInstance");
 102         ignore("com/sun/tools/javac/main/JavaCompiler", "versionRB");
 103         ignore("com/sun/tools/javac/code/Type", "moreInfo");
 104         ignore("com/sun/tools/javac/util/SharedNameTable", "freelist");
 105         ignore("com/sun/tools/javac/util/Log", "useRawMessages");
 106 
 107         // The following static fields are used for caches of information obtained
 108         // by reflective lookup, to avoid explicit references that are not available
 109         // when running javac on JDK 8.
 110         ignore("com/sun/tools/javac/util/JDK9Wrappers$Configuration",
 111                 "resolveAndBindMethod", "configurationClass");
 112         ignore("com/sun/tools/javac/util/JDK9Wrappers$Layer",
 113                 "bootMethod", "defineModulesWithOneLoaderMethod", "configurationMethod", "layerClass");
 114         ignore("com/sun/tools/javac/util/JDK9Wrappers$Module",
 115                 "addExportsMethod", "addUsesMethod", "getModuleMethod", "getUnnamedModuleMethod");




  62 import static com.sun.tools.classfile.AccessFlags.ACC_STATIC;
  63 
  64 public class DetectMutableStaticFields {
  65 
  66     private final String[] modules = {
  67         "java.compiler",
  68         "jdk.compiler",
  69         "jdk.javadoc",
  70         "jdk.jdeps"
  71     };
  72 
  73     private final String[] packagesToSeekFor = new String[] {
  74         "javax.tools",
  75         "javax.lang.model",
  76         "com.sun.javadoc",
  77         "com.sun.source",
  78         "com.sun.tools.classfile",
  79         "com.sun.tools.doclets",
  80         "com.sun.tools.javac",
  81         "com.sun.tools.javadoc",

  82         "com.sun.tools.javap",
  83         "jdk.javadoc"
  84     };
  85 
  86     private static final Map<String, List<String>> classFieldsToIgnoreMap = new HashMap<>();
  87     private static void ignore(String className, String... fields) {
  88         classFieldsToIgnoreMap.put(className, Arrays.asList(fields));
  89     }
  90 
  91     static {
  92         ignore("javax/tools/ToolProvider", "instance");
  93         ignore("jdk/javadoc/internal/tool/Start", "versionRB");

  94         ignore("com/sun/tools/classfile/Dependencies$DefaultFilter", "instance");
  95         ignore("com/sun/tools/javap/JavapTask", "versionRB");
  96         ignore("com/sun/tools/doclets/formats/html/HtmlDoclet", "docletToStart");
  97         ignore("com/sun/tools/javac/util/JCDiagnostic", "fragmentFormatter");
  98         ignore("com/sun/tools/javac/util/JavacMessages", "defaultBundle", "defaultMessages");
  99         ignore("com/sun/tools/javac/file/JRTIndex", "sharedInstance");
 100         ignore("com/sun/tools/javac/main/JavaCompiler", "versionRB");
 101         ignore("com/sun/tools/javac/code/Type", "moreInfo");
 102         ignore("com/sun/tools/javac/util/SharedNameTable", "freelist");
 103         ignore("com/sun/tools/javac/util/Log", "useRawMessages");
 104 
 105         // The following static fields are used for caches of information obtained
 106         // by reflective lookup, to avoid explicit references that are not available
 107         // when running javac on JDK 8.
 108         ignore("com/sun/tools/javac/util/JDK9Wrappers$Configuration",
 109                 "resolveAndBindMethod", "configurationClass");
 110         ignore("com/sun/tools/javac/util/JDK9Wrappers$Layer",
 111                 "bootMethod", "defineModulesWithOneLoaderMethod", "configurationMethod", "layerClass");
 112         ignore("com/sun/tools/javac/util/JDK9Wrappers$Module",
 113                 "addExportsMethod", "addUsesMethod", "getModuleMethod", "getUnnamedModuleMethod");


< prev index next >