From b12343b17287d3d6afaf1e82061d871f55a243db Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 30 Mar 2012 18:02:37 +0200 Subject: [PATCH 1/4] disposed check --- .../impl/src/com/intellij/compiler/CompileServerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java b/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java index 23078ac750b3..d43279eed9c6 100644 --- a/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java +++ b/java/compiler/impl/src/com/intellij/compiler/CompileServerManager.java @@ -291,7 +291,7 @@ public class CompileServerManager implements ApplicationComponent{ if (openProjects.length > 0) { final List futures = new ArrayList(); for (final Project project : openProjects) { - if (project.isDefault()) { + if (project.isDefault() || project.isDisposed()) { continue; } final CompilerWorkspaceConfiguration config = CompilerWorkspaceConfiguration.getInstance(project); From 815e0dd9f5bf37bc7289b6816d218b0c41efab7a Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 30 Mar 2012 20:15:02 +0200 Subject: [PATCH 2/4] set method watcher to null on debug session complete --- .../impl/src/com/intellij/debugger/engine/DebugProcessImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java index 68783d708616..e732b5591b1f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java @@ -770,6 +770,7 @@ public abstract class DebugProcessImpl implements DebugProcess { finally { myVirtualMachineProxy = null; myPositionManager = null; + myReturnValueWatcher = null; myState.set(STATE_DETACHED); try { myDebugProcessDispatcher.getMulticaster().processDetached(this, closedByUser); From 5e6141a545b8805a709bc1d5a116dcbfcc3ab4a6 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 30 Mar 2012 20:58:30 +0200 Subject: [PATCH 3/4] fix format of classpath.index file --- .../src/org/jetbrains/jps/incremental/IncProjectBuilder.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java index 5d493a8dca64..53e9a0dac93d 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java @@ -409,7 +409,8 @@ public class IncProjectBuilder { final File[] files = file.listFiles(); if (files != null) { for (File child : files) { - writeIndex(writer, child, path + "/" + child.getName()); + final String _path = path.isEmpty()? child.getName() : path + "/" + child.getName(); + writeIndex(writer, child, _path); } } } From f999399081d783ff05e8f1811c7563b7c00c1360 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 30 Mar 2012 22:48:13 +0200 Subject: [PATCH 4/4] migration to asm4 --- .idea/libraries/asm4.xml | 9 ++ .../forms-compiler/forms-compiler.iml | 2 +- .../uiDesigner/compiler/AsmCodeGenerator.java | 25 +++--- .../compiler/CardLayoutCodeGenerator.java | 6 +- .../compiler/ColorPropertyCodeGenerator.java | 6 +- .../DimensionPropertyCodeGenerator.java | 6 +- .../compiler/EnumPropertyCodeGenerator.java | 4 +- .../compiler/FlowLayoutCodeGenerator.java | 8 +- .../compiler/FontPropertyCodeGenerator.java | 6 +- .../compiler/FormLayoutCodeGenerator.java | 14 ++-- .../compiler/GridBagLayoutCodeGenerator.java | 6 +- .../compiler/GridLayoutCodeGenerator.java | 8 +- .../compiler/IconPropertyCodeGenerator.java | 6 +- .../compiler/InsetsPropertyCodeGenerator.java | 6 +- .../compiler/LayoutCodeGenerator.java | 8 +- .../ListModelPropertyCodeGenerator.java | 6 +- .../compiler/PropertyCodeGenerator.java | 2 +- .../RectanglePropertyCodeGenerator.java | 6 +- .../ScrollPaneLayoutCodeGenerator.java | 6 +- .../compiler/SimpleLayoutCodeGenerator.java | 6 +- .../SplitPaneLayoutCodeGenerator.java | 6 +- .../compiler/StringPropertyCodeGenerator.java | 12 +-- .../TabbedPaneLayoutCodeGenerator.java | 6 +- .../compiler/ToolBarLayoutCodeGenerator.java | 4 +- java/compiler/impl/compiler-impl.iml | 2 +- .../com/intellij/compiler/PsiClassWriter.java | 2 +- .../compiler/ant/BuildPropertiesImpl.java | 3 +- .../javaCompiler/BackendCompilerWrapper.java | 4 +- .../instrumentation-util.iml | 2 +- .../InstrumentationClassFinder.java | 14 ++-- .../InstrumenterClassWriter.java | 2 +- .../NotNullVerifyingInstrumenter.java | 8 +- java/compiler/javac2/javac2.iml | 2 +- .../com/intellij/ant/InstrumentationUtil.java | 10 +-- .../javac2/src/com/intellij/ant/Javac2.java | 10 +-- java/java-psi-impl/java-psi-impl.iml | 2 +- .../DefaultClsStubBuilderFactory.java | 2 +- .../compiled/InnerClassSourceStrategy.java | 2 +- .../impl/compiled/StubBuildingVisitor.java | 77 ++++++++++-------- java/java-tests/java-tests.iml | 2 +- .../NotNullVerifyingInstrumenterTest.java | 4 +- jps/jps-builders/jps-builders.iml | 2 +- .../jps/incremental/java/JavaBuilder.java | 10 +-- .../jps/server/ClasspathBootstrap.java | 10 +-- jps/jps.iml | 2 +- jps/model/jps-model.iml | 2 +- .../ether/dependencyView/Callbacks.java | 2 +- .../dependencyView/ClassfileAnalyzer.java | 33 +++++--- .../ether/dependencyView/Mappings.java | 4 +- .../ether/dependencyView/MethodRepr.java | 2 +- .../ether/dependencyView/ProtoMember.java | 7 +- .../ether/dependencyView/TypeRepr.java | 7 +- .../ether/dependencyView/UsageRepr.java | 2 +- .../ether/dependencyView/AntListener.java | 2 +- .../javacApi/OptimizedFileManager.java | 6 +- lib/asm4-all.jar | Bin 0 -> 108860 bytes lib/required_for_dist.txt | 1 + plugins/IntelliLang/IntelliLang-java.iml | 2 +- plugins/IntelliLang/IntelliLang-xml.iml | 2 +- .../AnnotationBasedInstrumentingCompiler.java | 9 +- .../pattern/compiler/Instrumenter.java | 14 +++- .../compiler/impl/InstrumentationAdapter.java | 9 +- .../impl/PatternValidationCompiler.java | 2 +- .../impl/PatternValidationInstrumenter.java | 6 +- .../jps/incremental/groovy/GroovyBuilder.java | 2 +- .../make/PreviewNestedFormLoader.java | 6 +- .../uiDesigner/core/AsmCodeGeneratorTest.java | 2 +- plugins/ui-designer/ui-designer.iml | 2 +- 68 files changed, 256 insertions(+), 214 deletions(-) create mode 100644 .idea/libraries/asm4.xml create mode 100644 lib/asm4-all.jar diff --git a/.idea/libraries/asm4.xml b/.idea/libraries/asm4.xml new file mode 100644 index 000000000000..c6676c49b88e --- /dev/null +++ b/.idea/libraries/asm4.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/java/compiler/forms-compiler/forms-compiler.iml b/java/compiler/forms-compiler/forms-compiler.iml index 39ba1446f119..1a851bf7859f 100644 --- a/java/compiler/forms-compiler/forms-compiler.iml +++ b/java/compiler/forms-compiler/forms-compiler.iml @@ -10,7 +10,7 @@ - + diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java index b838594d8f6f..473bb38d6f5f 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/AsmCodeGenerator.java @@ -19,11 +19,10 @@ import com.intellij.compiler.instrumentation.InstrumentationClassFinder; import com.intellij.uiDesigner.UIFormXmlConstants; import com.intellij.uiDesigner.lw.*; import com.intellij.uiDesigner.shared.BorderType; -import org.objectweb.asm.*; -import org.objectweb.asm.Label; -import org.objectweb.asm.commons.EmptyVisitor; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.*; +import org.jetbrains.asm4.Label; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import javax.swing.*; import javax.swing.border.Border; @@ -229,7 +228,7 @@ public class AsmCodeGenerator { return Type.getType("L" + className.replace('.', '/') + ";"); } - class FormClassVisitor extends ClassAdapter { + class FormClassVisitor extends ClassVisitor { private String myClassName; private String mySuperName; private final Map myFieldDescMap = new HashMap(); @@ -239,7 +238,7 @@ public class AsmCodeGenerator { private final boolean myExplicitSetupCall; public FormClassVisitor(final ClassVisitor cv, final boolean explicitSetupCall) { - super(cv); + super(Opcodes.ASM4, cv); myExplicitSetupCall = explicitSetupCall; } @@ -893,7 +892,7 @@ public class AsmCodeGenerator { } } - private class FormConstructorVisitor extends MethodAdapter { + private class FormConstructorVisitor extends MethodVisitor { private final String myClassName; private final String mySuperName; private boolean callsSelfConstructor = false; @@ -901,7 +900,7 @@ public class AsmCodeGenerator { private boolean mySuperCalled = false; public FormConstructorVisitor(final MethodVisitor mv, final String className, final String superName) { - super(mv); + super(Opcodes.ASM4, mv); myClassName = className; mySuperName = superName; } @@ -954,11 +953,11 @@ public class AsmCodeGenerator { } } - private static class FirstPassClassVisitor extends ClassAdapter { + private static class FirstPassClassVisitor extends ClassVisitor { private boolean myExplicitSetupCall = false; public FirstPassClassVisitor() { - super(new EmptyVisitor()); + super(Opcodes.ASM4, new ClassVisitor(Opcodes.ASM4){}); } public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { @@ -972,9 +971,9 @@ public class AsmCodeGenerator { return myExplicitSetupCall; } - private class FirstPassConstructorVisitor extends MethodAdapter { + private class FirstPassConstructorVisitor extends MethodVisitor { public FirstPassConstructorVisitor() { - super(new EmptyVisitor()); + super(Opcodes.ASM4, new MethodVisitor(Opcodes.ASM4){}); } public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java index 8db3a8b89eca..86b6e42c09b2 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/CardLayoutCodeGenerator.java @@ -17,9 +17,9 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.UIFormXmlConstants; import com.intellij.uiDesigner.lw.LwComponent; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java index 542587fb862b..8443020bfc37 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ColorPropertyCodeGenerator.java @@ -16,9 +16,9 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.ColorDescriptor; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java index d4cc81d36772..7a0fd4f9ec86 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/DimensionPropertyCodeGenerator.java @@ -15,9 +15,9 @@ */ package com.intellij.uiDesigner.compiler; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; -import org.objectweb.asm.Type; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java index e1900b4cc490..720d4c01582b 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/EnumPropertyCodeGenerator.java @@ -16,8 +16,8 @@ package com.intellij.uiDesigner.compiler; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.Type; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; /** * @author yole diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java index f5e117610a7e..34a41d89eb22 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FlowLayoutCodeGenerator.java @@ -18,11 +18,11 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwContainer; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; -import java.awt.FlowLayout; +import java.awt.*; /** * @author yole diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java index 2df623db060d..f15a8d4c314f 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FontPropertyCodeGenerator.java @@ -19,9 +19,9 @@ import com.intellij.compiler.instrumentation.InstrumentationClassFinder; import com.intellij.uiDesigner.lw.FontDescriptor; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwIntrospectedProperty; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java index 4eb9b2324952..a30061f0c784 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/FormLayoutCodeGenerator.java @@ -16,17 +16,17 @@ package com.intellij.uiDesigner.compiler; +import com.intellij.uiDesigner.core.GridConstraints; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwContainer; -import com.intellij.uiDesigner.core.GridConstraints; -import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.CellConstraints; -import org.objectweb.asm.Type; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import com.jgoodies.forms.layout.FormLayout; +import org.jetbrains.asm4.Opcodes; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; -import java.awt.Insets; +import java.awt.*; /** * @author yole diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java index ad01a3713f93..711d2c44726e 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridBagLayoutCodeGenerator.java @@ -18,9 +18,9 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.core.Spacer; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwContainer; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import javax.swing.*; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java index 1f6d3d0c7d33..954f166bb42e 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/GridLayoutCodeGenerator.java @@ -15,13 +15,13 @@ */ package com.intellij.uiDesigner.compiler; -import com.intellij.uiDesigner.core.GridLayoutManager; import com.intellij.uiDesigner.core.GridConstraints; +import com.intellij.uiDesigner.core.GridLayoutManager; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwContainer; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; /** * @author yole diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java index da722ddc9e4f..c435704a0144 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/IconPropertyCodeGenerator.java @@ -15,10 +15,10 @@ */ package com.intellij.uiDesigner.compiler; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; -import org.objectweb.asm.Type; import com.intellij.uiDesigner.lw.IconDescriptor; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import javax.swing.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java index 3ecabe8118fe..fb516ca430b3 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java @@ -15,9 +15,9 @@ */ package com.intellij.uiDesigner.compiler; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java index a89141c27d4c..f5d2594c3b99 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/LayoutCodeGenerator.java @@ -17,10 +17,10 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwContainer; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.Type; +import org.jetbrains.asm4.Opcodes; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java index c8b7583a8877..93ed130f6fbb 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ListModelPropertyCodeGenerator.java @@ -16,9 +16,9 @@ package com.intellij.uiDesigner.compiler; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; /** * @author yole diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java index 1f423a704df3..b3c1aeb94d87 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/PropertyCodeGenerator.java @@ -18,7 +18,7 @@ package com.intellij.uiDesigner.compiler; import com.intellij.compiler.instrumentation.InstrumentationClassFinder; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwIntrospectedProperty; -import org.objectweb.asm.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.GeneratorAdapter; import java.io.IOException; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java index be71f100ea27..fb86b0833ddf 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/RectanglePropertyCodeGenerator.java @@ -15,9 +15,9 @@ */ package com.intellij.uiDesigner.compiler; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; -import org.objectweb.asm.Type; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import java.awt.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java index 5608c7a53ec3..68725007cf43 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ScrollPaneLayoutCodeGenerator.java @@ -17,9 +17,9 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.LwComponent; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import javax.swing.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java index c1456e668b91..5836b6ca29d7 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SimpleLayoutCodeGenerator.java @@ -18,9 +18,9 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwContainer; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; /** * Layout code generator shared between BorderLayout and CardLayout. diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java index f0e19a64b696..28533f4776b4 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/SplitPaneLayoutCodeGenerator.java @@ -17,9 +17,9 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwSplitPane; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import javax.swing.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java index 992774e52551..4438fd0c4f76 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/StringPropertyCodeGenerator.java @@ -20,12 +20,12 @@ import com.intellij.uiDesigner.core.SupportCode; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwIntrospectedProperty; import com.intellij.uiDesigner.lw.StringDescriptor; -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Label; +import org.jetbrains.asm4.MethodVisitor; +import org.jetbrains.asm4.Opcodes; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import javax.swing.*; import java.io.IOException; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java index 59be36dca5fe..ee867bf21a56 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/TabbedPaneLayoutCodeGenerator.java @@ -17,9 +17,9 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.LwComponent; import com.intellij.uiDesigner.lw.LwTabbedPane; -import org.objectweb.asm.Type; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.Type; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; import javax.swing.*; diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java index 239cec71eba7..b90a778cbed9 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/ToolBarLayoutCodeGenerator.java @@ -17,8 +17,8 @@ package com.intellij.uiDesigner.compiler; import com.intellij.uiDesigner.lw.LwComponent; -import org.objectweb.asm.commons.GeneratorAdapter; -import org.objectweb.asm.commons.Method; +import org.jetbrains.asm4.commons.GeneratorAdapter; +import org.jetbrains.asm4.commons.Method; /** * @author yole diff --git a/java/compiler/impl/compiler-impl.iml b/java/compiler/impl/compiler-impl.iml index d9d39953f177..57d6c410b0b2 100644 --- a/java/compiler/impl/compiler-impl.iml +++ b/java/compiler/impl/compiler-impl.iml @@ -15,7 +15,7 @@ - + diff --git a/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java b/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java index af32fffb67bb..61d1e05e6663 100644 --- a/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java +++ b/java/compiler/impl/src/com/intellij/compiler/PsiClassWriter.java @@ -27,7 +27,7 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiManager; import com.intellij.psi.util.ClassUtil; import org.jetbrains.annotations.NonNls; -import org.objectweb.asm.ClassWriter; +import org.jetbrains.asm4.ClassWriter; /** * @author yole diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java b/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java index 5b77864f6e1a..ce38e67262f3 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/BuildPropertiesImpl.java @@ -108,8 +108,7 @@ public class BuildPropertiesImpl extends BuildProperties { Path javac2 = new Path(PROPERTY_JAVAC2_CLASSPATH_ID); javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "javac2.jar"))); javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "jdom.jar"))); - javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "asm.jar"))); - javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "asm-commons.jar"))); + javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "asm4-all.jar"))); javac2.add(new PathElement(propertyRelativePath(PROPERTY_JAVAC2_HOME, "jgoodies-forms.jar"))); add(javac2); //noinspection HardCodedStringLiteral diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java index 6ada45f6853f..213f5736c2ab 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java @@ -64,8 +64,8 @@ import gnu.trove.THashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.ClassWriter; import java.io.File; import java.io.IOException; diff --git a/java/compiler/instrumentation-util/instrumentation-util.iml b/java/compiler/instrumentation-util/instrumentation-util.iml index 1b09002e2fff..60d62d325d23 100644 --- a/java/compiler/instrumentation-util/instrumentation-util.iml +++ b/java/compiler/instrumentation-util/instrumentation-util.iml @@ -7,7 +7,7 @@ - + diff --git a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java index de009b37c9bf..78898be2bb23 100644 --- a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java +++ b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumentationClassFinder.java @@ -1,9 +1,9 @@ package com.intellij.compiler.instrumentation; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.commons.EmptyVisitor; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.ClassVisitor; +import org.jetbrains.asm4.MethodVisitor; +import org.jetbrains.asm4.Opcodes; import sun.misc.Resource; import java.io.*; @@ -331,13 +331,17 @@ public class InstrumentationClassFinder { } } - private static class V extends EmptyVisitor { + private static class V extends ClassVisitor { public String mySuperclassName = null; public String[] myInterfaces = null; public String myName = null; public int myModifiers; private final List myMethods = new ArrayList(); + private V() { + super(Opcodes.ASM4); + } + public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { if ((access & Opcodes.ACC_PUBLIC) > 0) { myMethods.add(new PseudoMethod(access, name, desc)); diff --git a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java index ffdf058a2fbf..b2f93c5e4603 100644 --- a/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java +++ b/java/compiler/instrumentation-util/src/com/intellij/compiler/instrumentation/InstrumenterClassWriter.java @@ -1,6 +1,6 @@ package com.intellij.compiler.instrumentation; -import org.objectweb.asm.ClassWriter; +import org.jetbrains.asm4.ClassWriter; /** * @author Eugene Zhuravlev diff --git a/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java b/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java index 02abbc67e238..45dd56aa60b1 100644 --- a/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java +++ b/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java @@ -15,7 +15,7 @@ */ package com.intellij.compiler.notNullVerification; -import org.objectweb.asm.*; +import org.jetbrains.asm4.*; import java.util.ArrayList; @@ -23,7 +23,7 @@ import java.util.ArrayList; * @author ven * @noinspection HardCodedStringLiteral */ -public class NotNullVerifyingInstrumenter extends ClassAdapter implements Opcodes { +public class NotNullVerifyingInstrumenter extends ClassVisitor implements Opcodes { private boolean myIsModification = false; private String myClassName; public static final String NOT_NULL = "org/jetbrains/annotations/NotNull"; @@ -33,7 +33,7 @@ public class NotNullVerifyingInstrumenter extends ClassAdapter implements Opcode private static final String CONSTRUCTOR_NAME = ""; public NotNullVerifyingInstrumenter(final ClassVisitor classVisitor) { - super(classVisitor); + super(Opcodes.ASM4, classVisitor); } public boolean isModification() { @@ -63,7 +63,7 @@ public class NotNullVerifyingInstrumenter extends ClassAdapter implements Opcode desc, signature, exceptions); - return new MethodAdapter(v) { + return new MethodVisitor(Opcodes.ASM4, v) { private final ArrayList myNotNullParams = new ArrayList(); private int mySyntheticCount = 0; diff --git a/java/compiler/javac2/javac2.iml b/java/compiler/javac2/javac2.iml index a8680af11500..bdf5f5d4cd98 100644 --- a/java/compiler/javac2/javac2.iml +++ b/java/compiler/javac2/javac2.iml @@ -10,7 +10,7 @@ - + diff --git a/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java b/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java index eb423ae59820..7497c5b5a327 100644 --- a/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java +++ b/java/compiler/javac2/src/com/intellij/ant/InstrumentationUtil.java @@ -22,10 +22,10 @@ import com.intellij.uiDesigner.compiler.*; import com.intellij.uiDesigner.lw.CompiledClassPropertiesProvider; import com.intellij.uiDesigner.lw.LwRootContainer; import org.apache.tools.ant.Project; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.commons.EmptyVisitor; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.ClassVisitor; +import org.jetbrains.asm4.ClassWriter; +import org.jetbrains.asm4.Opcodes; import java.io.*; import java.net.MalformedURLException; @@ -53,7 +53,7 @@ public class InstrumentationUtil { public static int getClassFileVersion(ClassReader reader) { final int[] classfileVersion = new int[1]; - reader.accept(new EmptyVisitor() { + reader.accept(new ClassVisitor(Opcodes.ASM4) { public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { classfileVersion[0] = version; } diff --git a/java/compiler/javac2/src/com/intellij/ant/Javac2.java b/java/compiler/javac2/src/com/intellij/ant/Javac2.java index 5c3035534b44..a56640e0e1ad 100644 --- a/java/compiler/javac2/src/com/intellij/ant/Javac2.java +++ b/java/compiler/javac2/src/com/intellij/ant/Javac2.java @@ -25,10 +25,10 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Javac; import org.apache.tools.ant.types.Path; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.commons.EmptyVisitor; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.ClassVisitor; +import org.jetbrains.asm4.ClassWriter; +import org.jetbrains.asm4.Opcodes; import java.io.*; import java.net.MalformedURLException; @@ -440,7 +440,7 @@ public class Javac2 extends Javac { private static int getClassFileVersion(ClassReader reader) { final int[] classfileVersion = new int[1]; - reader.accept(new EmptyVisitor() { + reader.accept(new ClassVisitor(Opcodes.ASM4) { public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { classfileVersion[0] = version; } diff --git a/java/java-psi-impl/java-psi-impl.iml b/java/java-psi-impl/java-psi-impl.iml index ccd2d51410f9..0bceb7e7613e 100644 --- a/java/java-psi-impl/java-psi-impl.iml +++ b/java/java-psi-impl/java-psi-impl.iml @@ -11,7 +11,7 @@ - + diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java index d7164e97d879..d2e031a64e9c 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/DefaultClsStubBuilderFactory.java @@ -24,7 +24,7 @@ import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl; import com.intellij.psi.stubs.PsiFileStub; import com.intellij.util.cls.ClsFormatException; import org.jetbrains.annotations.Nullable; -import org.objectweb.asm.ClassReader; +import org.jetbrains.asm4.ClassReader; import java.io.IOException; diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java index 89abfdff1b75..936269905957 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/InnerClassSourceStrategy.java @@ -20,7 +20,7 @@ package com.intellij.psi.impl.compiled; import org.jetbrains.annotations.Nullable; -import org.objectweb.asm.ClassReader; +import org.jetbrains.asm4.ClassReader; public interface InnerClassSourceStrategy { @Nullable diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java index 2d86e1b3b576..8ba604ac0ba6 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java @@ -38,8 +38,7 @@ import com.intellij.util.io.StringRef; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.objectweb.asm.*; -import org.objectweb.asm.commons.EmptyVisitor; +import org.jetbrains.asm4.*; import java.text.CharacterIterator; import java.text.StringCharacterIterator; @@ -48,7 +47,7 @@ import java.util.Collections; import java.util.List; import java.util.regex.Pattern; -public class StubBuildingVisitor implements ClassVisitor { +public class StubBuildingVisitor extends ClassVisitor { private static final Pattern REGEX_PATTERN = Pattern.compile("(?<=[^\\$])\\${1}(?=[^\\$])"); public static final String DOUBLE_POSITIVE_INF = "1.0 / 0.0"; @@ -71,6 +70,7 @@ public class StubBuildingVisitor implements ClassVisitor { private JavaLexer myLexer; public StubBuildingVisitor(final T classSource, InnerClassSourceStrategy innersStrategy, final StubElement parent, final int access) { + super(Opcodes.ASM4); mySource = classSource; myInnersStrategy = innersStrategy; myParent = parent; @@ -316,7 +316,7 @@ public class StubBuildingVisitor implements ClassVisitor { final byte flags = PsiFieldStubImpl.packFlags((access & Opcodes.ACC_ENUM) != 0, (access & Opcodes.ACC_DEPRECATED) != 0, false); PsiFieldStub stub = new PsiFieldStubImpl(myResult, name, fieldType(desc, signature), constToString(value), flags); final PsiModifierListStub modList = new PsiModifierListStubImpl(stub, packFieldFlags(access)); - return new AnnotationCollectingVisitor(stub, modList); + return new AnnotationCollectingVisitor(modList); } @NotNull @@ -493,13 +493,14 @@ public class StubBuildingVisitor implements ClassVisitor { public void visitEnd() { } - private static class AnnotationTextCollector implements AnnotationVisitor { + private static class AnnotationTextCollector extends AnnotationVisitor { private final StringBuilder myBuilder = new StringBuilder(); private final AnnotationResultCallback myCallback; private boolean hasParams = false; private final String myDesc; public AnnotationTextCollector(@Nullable String desc, AnnotationResultCallback callback) { + super(Opcodes.ASM4); myCallback = callback; myDesc = desc; @@ -567,25 +568,14 @@ public class StubBuildingVisitor implements ClassVisitor { } } - private static class AnnotationCollectingVisitor extends EmptyVisitor { - private final StubElement myOwner; + private static class AnnotationCollectingVisitor extends FieldVisitor { private final PsiModifierListStub myModList; - private AnnotationCollectingVisitor(final StubElement owner, final PsiModifierListStub modList) { - myOwner = owner; + private AnnotationCollectingVisitor(final PsiModifierListStub modList) { + super(Opcodes.ASM4); myModList = modList; } - @Override - public AnnotationVisitor visitAnnotationDefault() { - return new AnnotationTextCollector(null, new AnnotationResultCallback() { - @Override - public void callback(final String text) { - ((PsiMethodStubImpl)myOwner).setDefaultValueText(text); - } - }); - } - @Override public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) { return new AnnotationTextCollector(desc, new AnnotationResultCallback() { @@ -595,20 +585,11 @@ public class StubBuildingVisitor implements ClassVisitor { } }); } - - @Override - @Nullable - public AnnotationVisitor visitParameterAnnotation(final int parameter, final String desc, final boolean visible) { - return new AnnotationTextCollector(desc, new AnnotationResultCallback() { - @Override - public void callback(final String text) { - new PsiAnnotationStubImpl(((PsiMethodStub)myOwner).findParameter(parameter).getModList(), text); - } - }); - } } - private static class AnnotationParamCollectingVisitor extends AnnotationCollectingVisitor { + private static class AnnotationParamCollectingVisitor extends MethodVisitor { + private final PsiMethodStub myOwner; + private final PsiModifierListStub myModList; private final int myIgnoreCount; private final int myParamIgnoreCount; private final int myParamCount; @@ -622,13 +603,35 @@ public class StubBuildingVisitor implements ClassVisitor { int paramIgnoreCount, int paramCount, PsiParameterStubImpl[] paramStubs) { - super(owner, modList); + super(Opcodes.ASM4); + myOwner = owner; + myModList = modList; myIgnoreCount = ignoreCount; myParamIgnoreCount = paramIgnoreCount; myParamCount = paramCount; myParamStubs = paramStubs; } + @Override + public AnnotationVisitor visitAnnotation(final String desc, final boolean visible) { + return new AnnotationTextCollector(desc, new AnnotationResultCallback() { + @Override + public void callback(final String text) { + new PsiAnnotationStubImpl(myModList, text); + } + }); + } + + @Override + public AnnotationVisitor visitAnnotationDefault() { + return new AnnotationTextCollector(null, new AnnotationResultCallback() { + @Override + public void callback(final String text) { + ((PsiMethodStubImpl)myOwner).setDefaultValueText(text); + } + }); + } + @Override public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) { if (index >= myIgnoreCount) { @@ -652,7 +655,15 @@ public class StubBuildingVisitor implements ClassVisitor { @Override @Nullable public AnnotationVisitor visitParameterAnnotation(final int parameter, String desc, boolean visible) { - return (parameter < myParamIgnoreCount) ? null : super.visitParameterAnnotation(parameter - myParamIgnoreCount, desc, visible); + if (parameter < myParamIgnoreCount) { + return null; + } + return new AnnotationTextCollector(desc, new AnnotationResultCallback() { + @Override + public void callback(final String text) { + new PsiAnnotationStubImpl(myOwner.findParameter(parameter - myParamIgnoreCount).getModList(), text); + } + }); } } diff --git a/java/java-tests/java-tests.iml b/java/java-tests/java-tests.iml index 38e0eb6d4c3d..a60c94412b23 100644 --- a/java/java-tests/java-tests.iml +++ b/java/java-tests/java-tests.iml @@ -16,7 +16,7 @@ - + diff --git a/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java b/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java index 8e94a2079f27..d28bcadafe7d 100644 --- a/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java +++ b/java/java-tests/testSrc/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java @@ -8,8 +8,8 @@ import com.intellij.testFramework.UsefulTestCase; import com.intellij.testFramework.fixtures.IdeaProjectTestFixture; import com.intellij.testFramework.fixtures.JavaTestFixtureFactory; import com.intellij.testFramework.fixtures.TestFixtureBuilder; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.ClassWriter; import java.io.File; import java.io.IOException; diff --git a/jps/jps-builders/jps-builders.iml b/jps/jps-builders/jps-builders.iml index e27c35289a56..7c9b8ec9b946 100644 --- a/jps/jps-builders/jps-builders.iml +++ b/jps/jps-builders/jps-builders.iml @@ -13,7 +13,7 @@ - + diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java index 50ca6fd3f611..87e979f037d2 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java @@ -17,6 +17,10 @@ import com.intellij.uiDesigner.lw.LwRootContainer; import com.intellij.util.SystemProperties; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.ClassVisitor; +import org.jetbrains.asm4.ClassWriter; +import org.jetbrains.asm4.Opcodes; import org.jetbrains.ether.dependencyView.Callbacks; import org.jetbrains.ether.dependencyView.Mappings; import org.jetbrains.jps.*; @@ -29,10 +33,6 @@ import org.jetbrains.jps.incremental.messages.ProgressMessage; import org.jetbrains.jps.incremental.storage.BuildDataManager; import org.jetbrains.jps.incremental.storage.SourceToFormMapping; import org.jetbrains.jps.javac.*; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.commons.EmptyVisitor; import javax.tools.*; import java.io.*; @@ -821,7 +821,7 @@ public class JavaBuilder extends ModuleLevelBuilder { private static int getClassFileVersion(ClassReader reader) { final Ref result = new Ref(0); - reader.accept(new EmptyVisitor() { + reader.accept(new ClassVisitor(Opcodes.ASM4) { public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { result.set(version); } diff --git a/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java b/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java index 63c600a02d41..1279c09b17b2 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java +++ b/jps/jps-builders/src/org/jetbrains/jps/server/ClasspathBootstrap.java @@ -28,14 +28,12 @@ import net.n3.nanoxml.IXMLBuilder; import org.codehaus.groovy.GroovyException; import org.jboss.netty.util.Version; import org.jetbrains.annotations.Nullable; +import org.jetbrains.asm4.ClassVisitor; +import org.jetbrains.asm4.ClassWriter; import org.jetbrains.jps.MacroExpander; import org.jetbrains.jps.javac.JavacServer; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.commons.EmptyVisitor; -import javax.tools.JavaCompiler; -import javax.tools.StandardJavaFileManager; -import javax.tools.ToolProvider; +import javax.tools.*; import java.io.File; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -95,7 +93,7 @@ public class ClasspathBootstrap { cp.add(getResourcePath(Message.class)); // protobuf cp.add(getResourcePath(Version.class)); // netty cp.add(getResourcePath(ClassWriter.class)); // asm - cp.add(getResourcePath(EmptyVisitor.class)); // asm-commons + cp.add(getResourcePath(ClassVisitor.class)); // asm-commons cp.add(getResourcePath(MacroExpander.class)); // jps-model cp.add(getResourcePath(AlienFormFileException.class)); // forms-compiler cp.add(getResourcePath(GroovyException.class)); // groovy diff --git a/jps/jps.iml b/jps/jps.iml index c08dac3c1a16..0865ffbd929e 100644 --- a/jps/jps.iml +++ b/jps/jps.iml @@ -20,7 +20,7 @@ - + diff --git a/jps/model/jps-model.iml b/jps/model/jps-model.iml index f09e08520e8b..76df8c5b0b59 100644 --- a/jps/model/jps-model.iml +++ b/jps/model/jps-model.iml @@ -9,7 +9,7 @@ - + diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java b/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java index c4d7b133f4ed..8b3bbee2a4dc 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/Callbacks.java @@ -1,6 +1,6 @@ package org.jetbrains.ether.dependencyView; -import org.objectweb.asm.ClassReader; +import org.jetbrains.asm4.ClassReader; import java.util.Collection; diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java b/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java index 8d898122d8d1..91d6bf4c2f14 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/ClassfileAnalyzer.java @@ -1,10 +1,9 @@ package org.jetbrains.ether.dependencyView; import com.intellij.openapi.util.Pair; -import org.objectweb.asm.*; -import org.objectweb.asm.commons.EmptyVisitor; -import org.objectweb.asm.signature.SignatureReader; -import org.objectweb.asm.signature.SignatureVisitor; +import org.jetbrains.asm4.*; +import org.jetbrains.asm4.signature.SignatureReader; +import org.jetbrains.asm4.signature.SignatureVisitor; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; @@ -37,8 +36,12 @@ class ClassfileAnalyzer { } } - private class ClassCrawler extends EmptyVisitor { - private class AnnotationRetentionPolicyCrawler implements AnnotationVisitor { + private class ClassCrawler extends ClassVisitor { + private class AnnotationRetentionPolicyCrawler extends AnnotationVisitor { + private AnnotationRetentionPolicyCrawler() { + super(Opcodes.ASM4); + } + public void visit(String name, Object value) { } @@ -58,7 +61,11 @@ class ClassfileAnalyzer { } } - private class AnnotationTargetCrawler implements AnnotationVisitor { + private class AnnotationTargetCrawler extends AnnotationVisitor { + private AnnotationTargetCrawler() { + super(Opcodes.ASM4); + } + public void visit(String name, Object value) { } @@ -78,13 +85,14 @@ class ClassfileAnalyzer { } } - private class AnnotationCrawler implements AnnotationVisitor { + private class AnnotationCrawler extends AnnotationVisitor { private final TypeRepr.ClassType type; private final ElementType target; private final Set usedArguments = new HashSet(); private AnnotationCrawler(final TypeRepr.ClassType type, final ElementType target) { + super(Opcodes.ASM4); this.type = type; this.target = target; annotationTargets.put(type, target); @@ -182,7 +190,7 @@ class ClassfileAnalyzer { if (sig != null) new SignatureReader(sig).accept(signatureCrawler); } - private final SignatureVisitor signatureCrawler = new SignatureVisitor() { + private final SignatureVisitor signatureCrawler = new SignatureVisitor(Opcodes.ASM4) { public void visitFormalTypeParameter(String name) { return; } @@ -284,6 +292,7 @@ class ClassfileAnalyzer { new TransientMultiMaplet(elementTypeSetConstructor); public ClassCrawler(final DependencyContext.S fn) { + super(Opcodes.ASM4); fileName = fn; } @@ -369,7 +378,7 @@ class ClassfileAnalyzer { fields.add(new FieldRepr(context, access, context.get(n), context.get(desc), context.get(signature), value)); } - return new EmptyVisitor() { + return new FieldVisitor(Opcodes.ASM4) { @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { return new AnnotationCrawler((TypeRepr.ClassType)TypeRepr.getType(context, context.get(desc)), ElementType.FIELD); @@ -387,7 +396,7 @@ class ClassfileAnalyzer { processSignature(signature); - return new EmptyVisitor() { + return new MethodVisitor(Opcodes.ASM4) { @Override public void visitEnd() { if ((access & Opcodes.ACC_SYNTHETIC) == 0 || (access & Opcodes.ACC_BRIDGE) > 0) { @@ -403,7 +412,7 @@ class ClassfileAnalyzer { @Override public AnnotationVisitor visitAnnotationDefault() { - return new EmptyVisitor() { + return new AnnotationVisitor(Opcodes.ASM4) { public void visit(String name, Object value) { defaultValue.set(value); } diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java index 6af8cfc58e9d..2eac72b5198c 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java @@ -4,8 +4,8 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import org.jetbrains.annotations.Nullable; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.Opcodes; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.Opcodes; import java.io.File; import java.io.IOException; diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java index f4e325fa5ecf..72df988c293d 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/MethodRepr.java @@ -1,8 +1,8 @@ package org.jetbrains.ether.dependencyView; import com.intellij.util.io.DataExternalizer; +import org.jetbrains.asm4.Type; import org.jetbrains.ether.RW; -import org.objectweb.asm.Type; import java.io.DataInput; import java.io.DataOutput; diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java b/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java index 4a301c335108..a4e2428686a4 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/ProtoMember.java @@ -1,9 +1,10 @@ package org.jetbrains.ether.dependencyView; -import org.jetbrains.ether.RW; -import org.objectweb.asm.Type; +import org.jetbrains.asm4.Type; -import java.io.*; +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; /** * Created by IntelliJ IDEA. diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java index eb3857668df3..2b317e13ce4a 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/TypeRepr.java @@ -2,13 +2,14 @@ package org.jetbrains.ether.dependencyView; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.io.DataExternalizer; +import org.jetbrains.asm4.Type; import org.jetbrains.ether.RW; -import org.objectweb.asm.Type; -import java.io.*; +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; import java.util.Arrays; import java.util.Collection; -import java.util.LinkedList; /** * Created by IntelliJ IDEA. diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java b/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java index 316ee502c9a8..d6c33ee78483 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/UsageRepr.java @@ -1,8 +1,8 @@ package org.jetbrains.ether.dependencyView; import com.intellij.util.io.DataExternalizer; +import org.jetbrains.asm4.Type; import org.jetbrains.ether.RW; -import org.objectweb.asm.Type; import java.io.DataInput; import java.io.DataOutput; diff --git a/jps/src/org/jetbrains/ether/dependencyView/AntListener.java b/jps/src/org/jetbrains/ether/dependencyView/AntListener.java index ee921a7d86eb..7c8a7f0d8ffa 100644 --- a/jps/src/org/jetbrains/ether/dependencyView/AntListener.java +++ b/jps/src/org/jetbrains/ether/dependencyView/AntListener.java @@ -2,7 +2,7 @@ package org.jetbrains.ether.dependencyView; import org.apache.tools.ant.BuildEvent; import org.apache.tools.ant.BuildListener; -import org.objectweb.asm.ClassReader; +import org.jetbrains.asm4.ClassReader; import java.io.File; import java.io.FileInputStream; diff --git a/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java b/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java index d7163000ea5d..bb2a8a8918cf 100644 --- a/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java +++ b/jps/src/org/jetbrains/jps/builders/javacApi/OptimizedFileManager.java @@ -6,14 +6,12 @@ import com.sun.tools.javac.util.Context; import com.sun.tools.javac.util.DefaultFileManager; import com.sun.tools.javac.util.List; import com.sun.tools.javac.util.ListBuffer; +import org.jetbrains.asm4.ClassReader; import org.jetbrains.ether.dependencyView.Callbacks; import org.jetbrains.jps.PathUtil; -import org.objectweb.asm.ClassReader; import javax.lang.model.SourceVersion; -import javax.tools.FileObject; -import javax.tools.ForwardingJavaFileObject; -import javax.tools.JavaFileObject; +import javax.tools.*; import java.io.*; import java.lang.reflect.Field; import java.net.URL; diff --git a/lib/asm4-all.jar b/lib/asm4-all.jar new file mode 100644 index 0000000000000000000000000000000000000000..773234c97a51192edd6abe6e31a30ff2a1287994 GIT binary patch literal 108860 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 PA0%Ah%rO!;Fa!BN999+w literal 0 HcmV?d00001 diff --git a/lib/required_for_dist.txt b/lib/required_for_dist.txt index 885c232bdd48..a4e372026865 100644 --- a/lib/required_for_dist.txt +++ b/lib/required_for_dist.txt @@ -1,5 +1,6 @@ asm-commons.jar asm.jar +asm4-all.jar automaton.jar cli-10.jar cglib-2.2.2.jar diff --git a/plugins/IntelliLang/IntelliLang-java.iml b/plugins/IntelliLang/IntelliLang-java.iml index 998ca93c3ae5..5d4b43c8d504 100644 --- a/plugins/IntelliLang/IntelliLang-java.iml +++ b/plugins/IntelliLang/IntelliLang-java.iml @@ -11,7 +11,7 @@ - + diff --git a/plugins/IntelliLang/IntelliLang-xml.iml b/plugins/IntelliLang/IntelliLang-xml.iml index 608a5e9f2e97..4b8c7036d24d 100644 --- a/plugins/IntelliLang/IntelliLang-xml.iml +++ b/plugins/IntelliLang/IntelliLang-xml.iml @@ -10,7 +10,7 @@ - + diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java index 6b6190780f80..bd8f724a1b63 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/AnnotationBasedInstrumentingCompiler.java @@ -34,14 +34,17 @@ import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiJavaFile; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PsiSearchHelper; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassWriter; +import org.jetbrains.asm4.ClassReader; +import org.jetbrains.asm4.ClassWriter; import java.io.DataInput; import java.io.FileOutputStream; diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java index 2b16ab87bb63..53d9a6ae4d0f 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/Instrumenter.java @@ -15,8 +15,16 @@ */ package org.intellij.plugins.intelliLang.pattern.compiler; -import org.objectweb.asm.ClassVisitor; +import org.jetbrains.asm4.ClassVisitor; +import org.jetbrains.asm4.Opcodes; -public interface Instrumenter extends ClassVisitor { - boolean instrumented(); +public abstract class Instrumenter extends ClassVisitor { + protected Instrumenter() { + super(Opcodes.ASM4); + } + protected Instrumenter(ClassVisitor visitor) { + super(Opcodes.ASM4, visitor); + } + + public abstract boolean instrumented(); } diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java index 39d4b6d59e9f..cc5e1ad9753d 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/InstrumentationAdapter.java @@ -17,14 +17,14 @@ package org.intellij.plugins.intelliLang.pattern.compiler.impl; import org.intellij.plugins.intelliLang.Configuration; import org.jetbrains.annotations.NonNls; -import org.objectweb.asm.*; +import org.jetbrains.asm4.*; import java.text.MessageFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -class InstrumentationAdapter extends MethodAdapter implements Opcodes { +class InstrumentationAdapter extends MethodVisitor implements Opcodes { @NonNls private static final String RETURN_VALUE_NAME = "$returnvalue$"; @@ -46,7 +46,7 @@ class InstrumentationAdapter extends MethodAdapter implements Opcodes { Type returnType, int access, String name) { - super(methodvisitor); + super(Opcodes.ASM4, methodvisitor); myInstrumenter = instrumenter; myArgTypes = argTypes; myReturnType = returnType; @@ -208,11 +208,12 @@ class InstrumentationAdapter extends MethodAdapter implements Opcodes { mv.visitInsn(Opcodes.ATHROW); } - private static class MyAnnotationVisitor implements AnnotationVisitor { + private static class MyAnnotationVisitor extends AnnotationVisitor { private final AnnotationVisitor av; private final PatternValue myPatternValue; public MyAnnotationVisitor(AnnotationVisitor annotationvisitor, PatternValue v) { + super(Opcodes.ASM4); av = annotationvisitor; myPatternValue = v; } diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java index 293f29f1d0ec..2d602471b30d 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationCompiler.java @@ -32,7 +32,7 @@ import org.intellij.plugins.intelliLang.pattern.compiler.AnnotationBasedInstrume import org.intellij.plugins.intelliLang.pattern.compiler.Instrumenter; import org.intellij.plugins.intelliLang.util.AnnotationUtilEx; import org.jetbrains.annotations.NotNull; -import org.objectweb.asm.ClassWriter; +import org.jetbrains.asm4.ClassWriter; import java.util.HashMap; import java.util.Map; diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java index 04f86978fcef..12ee27843a4e 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/pattern/compiler/impl/PatternValidationInstrumenter.java @@ -19,14 +19,14 @@ import org.intellij.plugins.intelliLang.Configuration; import org.intellij.plugins.intelliLang.pattern.compiler.InstrumentationException; import org.intellij.plugins.intelliLang.pattern.compiler.Instrumenter; import org.jetbrains.annotations.NonNls; -import org.objectweb.asm.*; +import org.jetbrains.asm4.*; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.regex.Pattern; -public class PatternValidationInstrumenter extends ClassAdapter implements Instrumenter, Opcodes { +public class PatternValidationInstrumenter extends Instrumenter implements Opcodes { @NonNls static final String PATTERN_CACHE_NAME = "$_PATTERN_CACHE_$"; @NonNls static final String ASSERTIONS_DISABLED_NAME = "$assertionsDisabled"; @NonNls static final String JAVA_LANG_STRING = "Ljava/lang/String;"; @@ -167,7 +167,7 @@ public class PatternValidationInstrumenter extends ClassAdapter implements Instr if ((access & ACC_STATIC) != 0 && name.equals("")) { myHasStaticInitializer = true; - return new MethodAdapter(methodvisitor) { + return new MethodVisitor(Opcodes.ASM4, methodvisitor) { public void visitCode() { super.visitCode(); patchStaticInitializer(mv); diff --git a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java index 0852f2e8fdfe..2e8aa639441b 100644 --- a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java +++ b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java @@ -8,6 +8,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.Consumer; import com.intellij.util.SystemProperties; import groovy.util.CharsetToolkit; +import org.jetbrains.asm4.ClassReader; import org.jetbrains.ether.dependencyView.Callbacks; import org.jetbrains.ether.dependencyView.Mappings; import org.jetbrains.groovy.compiler.rt.GroovyCompilerWrapper; @@ -19,7 +20,6 @@ import org.jetbrains.jps.incremental.messages.FileGeneratedEvent; import org.jetbrains.jps.incremental.messages.ProgressMessage; import org.jetbrains.jps.incremental.storage.SourceToOutputMapping; import org.jetbrains.jps.server.ClasspathBootstrap; -import org.objectweb.asm.ClassReader; import java.io.File; import java.io.IOException; diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java b/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java index fbe4c8aaa86e..88dd5f9b12e6 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/make/PreviewNestedFormLoader.java @@ -27,9 +27,9 @@ import com.intellij.uiDesigner.lw.LwRootContainer; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.HashSet; import org.jetbrains.annotations.NonNls; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; +import org.jetbrains.asm4.ClassWriter; +import org.jetbrains.asm4.MethodVisitor; +import org.jetbrains.asm4.Opcodes; import java.io.ByteArrayInputStream; import java.io.File; diff --git a/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java b/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java index d8ff9f5c68a6..a5630623c131 100644 --- a/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java +++ b/plugins/ui-designer/testSrc/com/intellij/uiDesigner/core/AsmCodeGeneratorTest.java @@ -31,7 +31,7 @@ import com.intellij.uiDesigner.lw.LwRootContainer; import com.intellij.util.PathUtil; import com.intellij.util.ui.UIUtil; import junit.framework.TestCase; -import org.objectweb.asm.ClassWriter; +import org.jetbrains.asm4.ClassWriter; import javax.swing.*; import javax.swing.border.EtchedBorder; diff --git a/plugins/ui-designer/ui-designer.iml b/plugins/ui-designer/ui-designer.iml index e68ce2feab61..15cbc57d564d 100644 --- a/plugins/ui-designer/ui-designer.iml +++ b/plugins/ui-designer/ui-designer.iml @@ -19,7 +19,7 @@ - +