IDEA-230489 Plugin built with latest intellij master will not run in 2019.3

form GUI compiler: disable bytecode generation with dynamic bundles by default

GitOrigin-RevId: f8128c0f2ffbb5e92d0fcfed1df3dcb061c3c789
This commit is contained in:
Sergey Ignatov
2020-03-26 19:00:37 +03:00
committed by intellij-monorepo-bot
parent 8ae5daeca3
commit acb6bd75d5
10 changed files with 69 additions and 13 deletions

View File

@@ -59,6 +59,7 @@ public class AsmCodeGenerator {
private final NestedFormLoader myFormLoader;
private final boolean myIgnoreCustomCreation;
private final boolean myUseDynamicBundles;
private final ClassWriter myClassWriter;
static {
@@ -89,9 +90,11 @@ public class AsmCodeGenerator {
InstrumentationClassFinder finder,
NestedFormLoader formLoader,
final boolean ignoreCustomCreation,
boolean useDynamicBundles,
final ClassWriter classWriter) {
myFormLoader = formLoader;
myIgnoreCustomCreation = ignoreCustomCreation;
myUseDynamicBundles = useDynamicBundles;
if (finder == null){
throw new IllegalArgumentException("loader cannot be null");
}
@@ -105,6 +108,14 @@ public class AsmCodeGenerator {
myWarnings = new ArrayList<FormErrorInfo>();
myClassWriter = classWriter;
}
public AsmCodeGenerator(LwRootContainer rootContainer,
InstrumentationClassFinder finder,
NestedFormLoader formLoader,
final boolean ignoreCustomCreation,
final ClassWriter classWriter) {
this(rootContainer, finder, formLoader, ignoreCustomCreation, false, classWriter);
}
public void patchFile(final File classFile) {
if (!classFile.exists()) {
@@ -175,7 +186,7 @@ public class AsmCodeGenerator {
FirstPassClassVisitor visitor = new FirstPassClassVisitor();
reader.accept(visitor, 0);
reader.accept(new FormClassVisitor(myClassWriter, visitor.isExplicitSetupCall()), 0);
reader.accept(new FormClassVisitor(myClassWriter, visitor.isExplicitSetupCall(), myUseDynamicBundles), 0);
myPatchedData = myClassWriter.toByteArray();
return myPatchedData;
}
@@ -227,10 +238,12 @@ public class AsmCodeGenerator {
private boolean myHaveCreateComponentsMethod = false;
private int myCreateComponentsAccess;
private final boolean myExplicitSetupCall;
final boolean useDynamicBundles;
FormClassVisitor(final ClassVisitor cv, final boolean explicitSetupCall) {
FormClassVisitor(final ClassVisitor cv, final boolean explicitSetupCall, boolean useDynamicBundles) {
super(ASM_API_VERSION, cv);
myExplicitSetupCall = explicitSetupCall;
this.useDynamicBundles = useDynamicBundles;
}
@Override

View File

@@ -56,11 +56,13 @@ public final class StringPropertyCodeGenerator extends PropertyCodeGenerator imp
}
catch (Exception ignored) {}
try {
classFinder.loadClass("com.intellij.DynamicBundle");
dynamicBundleType = Type.getType("Lcom/intellij/DynamicBundle;");
if (visitor.useDynamicBundles) {
try {
classFinder.loadClass("com.intellij.DynamicBundle");
dynamicBundleType = Type.getType("Lcom/intellij/DynamicBundle;");
}
catch (Exception ignored) {}
}
catch (Exception ignored) {}
}
@Override