[Git][java-team/asm][master] Restored the remapping adapters to preserve the backward compatibility
Emmanuel Bourg
gitlab at salsa.debian.org
Fri Jul 19 12:31:01 BST 2019
Emmanuel Bourg pushed to branch master at Debian Java Maintainers / asm
Commits:
e7450934 by Emmanuel Bourg at 2019-07-19T11:17:26Z
Restored the remapping adapters to preserve the backward compatibility
- - - - -
3 changed files:
- debian/changelog
- + debian/patches/10-remapping-adapters.patch
- debian/patches/series
Changes:
=====================================
debian/changelog
=====================================
@@ -1,3 +1,10 @@
+asm (7.1-2) unstable; urgency=medium
+
+ * Team upload.
+ * Restored the remapping adapters to preserve the backward compatibility
+
+ -- Emmanuel Bourg <ebourg at apache.org> Fri, 19 Jul 2019 13:13:32 +0200
+
asm (7.1-1) unstable; urgency=medium
* Team upload.
=====================================
debian/patches/10-remapping-adapters.patch
=====================================
@@ -0,0 +1,780 @@
+Description: Restores the remapping adapters removed from ASM 7.1 to preserve the backward compatibility
+Author: Emmanuel Bourg <ebourg at apache.org>
+Forwarded: not-needed
+--- /dev/null
++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingAnnotationAdapter.java
+@@ -0,0 +1,85 @@
++// ASM: a very small and fast Java bytecode manipulation framework
++// Copyright (c) 2000-2011 INRIA, France Telecom
++// All rights reserved.
++//
++// Redistribution and use in source and binary forms, with or without
++// modification, are permitted provided that the following conditions
++// are met:
++// 1. Redistributions of source code must retain the above copyright
++// notice, this list of conditions and the following disclaimer.
++// 2. Redistributions in binary form must reproduce the above copyright
++// notice, this list of conditions and the following disclaimer in the
++// documentation and/or other materials provided with the distribution.
++// 3. Neither the name of the copyright holders nor the names of its
++// contributors may be used to endorse or promote products derived from
++// this software without specific prior written permission.
++//
++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
++// THE POSSIBILITY OF SUCH DAMAGE.
++
++package org.objectweb.asm.commons;
++
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.Opcodes;
++
++/**
++ * An {@link AnnotationVisitor} adapter for type remapping.
++ *
++ * @deprecated use {@link AnnotationRemapper} instead.
++ * @author Eugene Kuleshov
++ */
++ at Deprecated
++public class RemappingAnnotationAdapter extends AnnotationVisitor {
++
++ protected final Remapper remapper;
++
++ public RemappingAnnotationAdapter(
++ final AnnotationVisitor annotationVisitor, final Remapper remapper) {
++ this(Opcodes.ASM6, annotationVisitor, remapper);
++ }
++
++ protected RemappingAnnotationAdapter(
++ final int api, final AnnotationVisitor annotationVisitor, final Remapper remapper) {
++ super(api, annotationVisitor);
++ this.remapper = remapper;
++ }
++
++ @Override
++ public void visit(final String name, final Object value) {
++ av.visit(name, remapper.mapValue(value));
++ }
++
++ @Override
++ public void visitEnum(final String name, final String descriptor, final String value) {
++ av.visitEnum(name, remapper.mapDesc(descriptor), value);
++ }
++
++ @Override
++ public AnnotationVisitor visitAnnotation(final String name, final String descriptor) {
++ AnnotationVisitor annotationVisitor = av.visitAnnotation(name, remapper.mapDesc(descriptor));
++ return annotationVisitor == null
++ ? null
++ : (annotationVisitor == av
++ ? this
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper));
++ }
++
++ @Override
++ public AnnotationVisitor visitArray(final String name) {
++ AnnotationVisitor annotationVisitor = av.visitArray(name);
++ return annotationVisitor == null
++ ? null
++ : (annotationVisitor == av
++ ? this
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper));
++ }
++}
+--- /dev/null
++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingClassAdapter.java
+@@ -0,0 +1,167 @@
++// ASM: a very small and fast Java bytecode manipulation framework
++// Copyright (c) 2000-2011 INRIA, France Telecom
++// All rights reserved.
++//
++// Redistribution and use in source and binary forms, with or without
++// modification, are permitted provided that the following conditions
++// are met:
++// 1. Redistributions of source code must retain the above copyright
++// notice, this list of conditions and the following disclaimer.
++// 2. Redistributions in binary form must reproduce the above copyright
++// notice, this list of conditions and the following disclaimer in the
++// documentation and/or other materials provided with the distribution.
++// 3. Neither the name of the copyright holders nor the names of its
++// contributors may be used to endorse or promote products derived from
++// this software without specific prior written permission.
++//
++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
++// THE POSSIBILITY OF SUCH DAMAGE.
++
++package org.objectweb.asm.commons;
++
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.ClassVisitor;
++import org.objectweb.asm.FieldVisitor;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.ModuleVisitor;
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.TypePath;
++
++/**
++ * A {@link ClassVisitor} for type remapping.
++ *
++ * @deprecated use {@link ClassRemapper} instead.
++ * @author Eugene Kuleshov
++ */
++ at Deprecated
++public class RemappingClassAdapter extends ClassVisitor {
++
++ protected final Remapper remapper;
++
++ protected String className;
++
++ public RemappingClassAdapter(final ClassVisitor classVisitor, final Remapper remapper) {
++ this(Opcodes.ASM6, classVisitor, remapper);
++ }
++
++ protected RemappingClassAdapter(
++ final int api, final ClassVisitor classVisitor, final Remapper remapper) {
++ super(api, classVisitor);
++ this.remapper = remapper;
++ }
++
++ @Override
++ public void visit(
++ final int version,
++ final int access,
++ final String name,
++ final String signature,
++ final String superName,
++ final String[] interfaces) {
++ this.className = name;
++ super.visit(
++ version,
++ access,
++ remapper.mapType(name),
++ remapper.mapSignature(signature, false),
++ remapper.mapType(superName),
++ interfaces == null ? null : remapper.mapTypes(interfaces));
++ }
++
++ @Override
++ public ModuleVisitor visitModule(final String name, final int flags, final String version) {
++ throw new RuntimeException("RemappingClassAdapter is deprecated, use ClassRemapper instead");
++ }
++
++ @Override
++ public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitAnnotation(remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor);
++ }
++
++ @Override
++ public AnnotationVisitor visitTypeAnnotation(
++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor);
++ }
++
++ @Override
++ public FieldVisitor visitField(
++ final int access,
++ final String name,
++ final String descriptor,
++ final String signature,
++ final Object value) {
++ FieldVisitor fieldVisitor =
++ super.visitField(
++ access,
++ remapper.mapFieldName(className, name, descriptor),
++ remapper.mapDesc(descriptor),
++ remapper.mapSignature(signature, true),
++ remapper.mapValue(value));
++ return fieldVisitor == null ? null : createRemappingFieldAdapter(fieldVisitor);
++ }
++
++ @Override
++ public MethodVisitor visitMethod(
++ final int access,
++ final String name,
++ final String descriptor,
++ final String signature,
++ final String[] exceptions) {
++ String newDescriptor = remapper.mapMethodDesc(descriptor);
++ MethodVisitor methodVisitor =
++ super.visitMethod(
++ access,
++ remapper.mapMethodName(className, name, descriptor),
++ newDescriptor,
++ remapper.mapSignature(signature, false),
++ exceptions == null ? null : remapper.mapTypes(exceptions));
++ return methodVisitor == null
++ ? null
++ : createRemappingMethodAdapter(access, newDescriptor, methodVisitor);
++ }
++
++ @Override
++ public void visitInnerClass(
++ final String name, final String outerName, final String innerName, final int access) {
++ super.visitInnerClass(
++ remapper.mapType(name),
++ outerName == null ? null : remapper.mapType(outerName),
++ innerName,
++ access);
++ }
++
++ @Override
++ public void visitOuterClass(final String owner, final String name, final String descriptor) {
++ super.visitOuterClass(
++ remapper.mapType(owner),
++ name == null ? null : remapper.mapMethodName(owner, name, descriptor),
++ descriptor == null ? null : remapper.mapMethodDesc(descriptor));
++ }
++
++ protected FieldVisitor createRemappingFieldAdapter(final FieldVisitor fieldVisitor) {
++ return new RemappingFieldAdapter(fieldVisitor, remapper);
++ }
++
++ protected MethodVisitor createRemappingMethodAdapter(
++ final int access, final String newDescriptor, final MethodVisitor methodVisitior) {
++ return new RemappingMethodAdapter(access, newDescriptor, methodVisitior, remapper);
++ }
++
++ protected AnnotationVisitor createRemappingAnnotationAdapter(final AnnotationVisitor av) {
++ return new RemappingAnnotationAdapter(av, remapper);
++ }
++}
+--- /dev/null
++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingFieldAdapter.java
+@@ -0,0 +1,74 @@
++// ASM: a very small and fast Java bytecode manipulation framework
++// Copyright (c) 2000-2011 INRIA, France Telecom
++// All rights reserved.
++//
++// Redistribution and use in source and binary forms, with or without
++// modification, are permitted provided that the following conditions
++// are met:
++// 1. Redistributions of source code must retain the above copyright
++// notice, this list of conditions and the following disclaimer.
++// 2. Redistributions in binary form must reproduce the above copyright
++// notice, this list of conditions and the following disclaimer in the
++// documentation and/or other materials provided with the distribution.
++// 3. Neither the name of the copyright holders nor the names of its
++// contributors may be used to endorse or promote products derived from
++// this software without specific prior written permission.
++//
++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
++// THE POSSIBILITY OF SUCH DAMAGE.
++
++package org.objectweb.asm.commons;
++
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.FieldVisitor;
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.TypePath;
++
++/**
++ * A {@link FieldVisitor} adapter for type remapping.
++ *
++ * @deprecated use {@link FieldRemapper} instead.
++ * @author Eugene Kuleshov
++ */
++ at Deprecated
++public class RemappingFieldAdapter extends FieldVisitor {
++
++ private final Remapper remapper;
++
++ public RemappingFieldAdapter(final FieldVisitor fieldVisitor, final Remapper remapper) {
++ this(Opcodes.ASM6, fieldVisitor, remapper);
++ }
++
++ protected RemappingFieldAdapter(
++ final int api, final FieldVisitor fieldVisitor, final Remapper remapper) {
++ super(api, fieldVisitor);
++ this.remapper = remapper;
++ }
++
++ @Override
++ public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor = fv.visitAnnotation(remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? null
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++
++ @Override
++ public AnnotationVisitor visitTypeAnnotation(
++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? null
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++}
+--- /dev/null
++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingMethodAdapter.java
+@@ -0,0 +1,279 @@
++// ASM: a very small and fast Java bytecode manipulation framework
++// Copyright (c) 2000-2011 INRIA, France Telecom
++// All rights reserved.
++//
++// Redistribution and use in source and binary forms, with or without
++// modification, are permitted provided that the following conditions
++// are met:
++// 1. Redistributions of source code must retain the above copyright
++// notice, this list of conditions and the following disclaimer.
++// 2. Redistributions in binary form must reproduce the above copyright
++// notice, this list of conditions and the following disclaimer in the
++// documentation and/or other materials provided with the distribution.
++// 3. Neither the name of the copyright holders nor the names of its
++// contributors may be used to endorse or promote products derived from
++// this software without specific prior written permission.
++//
++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
++// THE POSSIBILITY OF SUCH DAMAGE.
++
++package org.objectweb.asm.commons;
++
++import org.objectweb.asm.AnnotationVisitor;
++import org.objectweb.asm.Handle;
++import org.objectweb.asm.Label;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.TypePath;
++
++/**
++ * A {@link LocalVariablesSorter} for type mapping.
++ *
++ * @deprecated use {@link MethodRemapper} instead.
++ * @author Eugene Kuleshov
++ */
++ at Deprecated
++public class RemappingMethodAdapter extends LocalVariablesSorter {
++
++ protected final Remapper remapper;
++
++ public RemappingMethodAdapter(
++ final int access,
++ final String descriptor,
++ final MethodVisitor methodVisitor,
++ final Remapper remapper) {
++ this(Opcodes.ASM6, access, descriptor, methodVisitor, remapper);
++ }
++
++ protected RemappingMethodAdapter(
++ final int api,
++ final int access,
++ final String descriptor,
++ final MethodVisitor methodVisitor,
++ final Remapper remapper) {
++ super(api, access, descriptor, methodVisitor);
++ this.remapper = remapper;
++ }
++
++ @Override
++ public AnnotationVisitor visitAnnotationDefault() {
++ AnnotationVisitor annotationVisitor = super.visitAnnotationDefault();
++ return annotationVisitor == null
++ ? annotationVisitor
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++
++ @Override
++ public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitAnnotation(remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? annotationVisitor
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++
++ @Override
++ public AnnotationVisitor visitTypeAnnotation(
++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? annotationVisitor
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++
++ @Override
++ public AnnotationVisitor visitParameterAnnotation(
++ final int parameter, final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitParameterAnnotation(parameter, remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? annotationVisitor
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++
++ @Override
++ public void visitFrame(
++ final int type,
++ final int numLocal,
++ final Object[] local,
++ final int numStack,
++ final Object[] stack) {
++ super.visitFrame(
++ type, numLocal, remapEntries(numLocal, local), numStack, remapEntries(numStack, stack));
++ }
++
++ private Object[] remapEntries(final int numTypes, final Object[] entries) {
++ if (entries == null) {
++ return entries;
++ }
++ Object[] remappedEntries = null;
++ for (int i = 0; i < numTypes; ++i) {
++ if (entries[i] instanceof String) {
++ if (remappedEntries == null) {
++ remappedEntries = new Object[numTypes];
++ System.arraycopy(entries, 0, remappedEntries, 0, numTypes);
++ }
++ remappedEntries[i] = remapper.mapType((String) entries[i]);
++ }
++ }
++ return remappedEntries == null ? entries : remappedEntries;
++ }
++
++ @Override
++ public void visitFieldInsn(
++ final int opcode, final String owner, final String name, final String descriptor) {
++ super.visitFieldInsn(
++ opcode,
++ remapper.mapType(owner),
++ remapper.mapFieldName(owner, name, descriptor),
++ remapper.mapDesc(descriptor));
++ }
++
++ @Deprecated
++ @Override
++ public void visitMethodInsn(
++ final int opcode, final String owner, final String name, final String descriptor) {
++ if (api >= Opcodes.ASM5) {
++ super.visitMethodInsn(opcode, owner, name, descriptor);
++ return;
++ }
++ doVisitMethodInsn(opcode, owner, name, descriptor, opcode == Opcodes.INVOKEINTERFACE);
++ }
++
++ @Override
++ public void visitMethodInsn(
++ final int opcode,
++ final String owner,
++ final String name,
++ final String descriptor,
++ final boolean isInterface) {
++ if (api < Opcodes.ASM5) {
++ super.visitMethodInsn(opcode, owner, name, descriptor, isInterface);
++ return;
++ }
++ doVisitMethodInsn(opcode, owner, name, descriptor, isInterface);
++ }
++
++ private void doVisitMethodInsn(
++ final int opcode,
++ final String owner,
++ final String name,
++ final String descriptor,
++ final boolean isInterface) {
++ // Calling super.visitMethodInsn requires to call the correct version
++ // depending on this.api (otherwise infinite loops can occur). To
++ // simplify and to make it easier to automatically remove the backward
++ // compatibility code, we inline the code of the overridden method here.
++ // IMPORTANT: THIS ASSUMES THAT visitMethodInsn IS NOT OVERRIDDEN IN
++ // LocalVariableSorter.
++ if (mv != null) {
++ mv.visitMethodInsn(
++ opcode,
++ remapper.mapType(owner),
++ remapper.mapMethodName(owner, name, descriptor),
++ remapper.mapMethodDesc(descriptor),
++ isInterface);
++ }
++ }
++
++ @Override
++ public void visitInvokeDynamicInsn(
++ final String name,
++ final String descriptor,
++ final Handle bootstrapMethodHandle,
++ final Object... bootstrapMethodArguments) {
++ for (int i = 0; i < bootstrapMethodArguments.length; i++) {
++ bootstrapMethodArguments[i] = remapper.mapValue(bootstrapMethodArguments[i]);
++ }
++ super.visitInvokeDynamicInsn(
++ remapper.mapInvokeDynamicMethodName(name, descriptor),
++ remapper.mapMethodDesc(descriptor),
++ (Handle) remapper.mapValue(bootstrapMethodHandle),
++ bootstrapMethodArguments);
++ }
++
++ @Override
++ public void visitTypeInsn(final int opcode, final String type) {
++ super.visitTypeInsn(opcode, remapper.mapType(type));
++ }
++
++ @Override
++ public void visitLdcInsn(final Object value) {
++ super.visitLdcInsn(remapper.mapValue(value));
++ }
++
++ @Override
++ public void visitMultiANewArrayInsn(final String descriptor, final int numDimensions) {
++ super.visitMultiANewArrayInsn(remapper.mapDesc(descriptor), numDimensions);
++ }
++
++ @Override
++ public AnnotationVisitor visitInsnAnnotation(
++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitInsnAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? annotationVisitor
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++
++ @Override
++ public void visitTryCatchBlock(
++ final Label start, final Label end, final Label handler, final String type) {
++ super.visitTryCatchBlock(start, end, handler, type == null ? null : remapper.mapType(type));
++ }
++
++ @Override
++ public AnnotationVisitor visitTryCatchAnnotation(
++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitTryCatchAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? annotationVisitor
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++
++ @Override
++ public void visitLocalVariable(
++ final String name,
++ final String descriptor,
++ final String signature,
++ final Label start,
++ final Label end,
++ final int index) {
++ super.visitLocalVariable(
++ name,
++ remapper.mapDesc(descriptor),
++ remapper.mapSignature(signature, true),
++ start,
++ end,
++ index);
++ }
++
++ @Override
++ public AnnotationVisitor visitLocalVariableAnnotation(
++ final int typeRef,
++ final TypePath typePath,
++ final Label[] start,
++ final Label[] end,
++ final int[] index,
++ final String descriptor,
++ final boolean visible) {
++ AnnotationVisitor annotationVisitor =
++ super.visitLocalVariableAnnotation(
++ typeRef, typePath, start, end, index, remapper.mapDesc(descriptor), visible);
++ return annotationVisitor == null
++ ? annotationVisitor
++ : new RemappingAnnotationAdapter(annotationVisitor, remapper);
++ }
++}
+--- /dev/null
++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingSignatureAdapter.java
+@@ -0,0 +1,157 @@
++// ASM: a very small and fast Java bytecode manipulation framework
++// Copyright (c) 2000-2011 INRIA, France Telecom
++// All rights reserved.
++//
++// Redistribution and use in source and binary forms, with or without
++// modification, are permitted provided that the following conditions
++// are met:
++// 1. Redistributions of source code must retain the above copyright
++// notice, this list of conditions and the following disclaimer.
++// 2. Redistributions in binary form must reproduce the above copyright
++// notice, this list of conditions and the following disclaimer in the
++// documentation and/or other materials provided with the distribution.
++// 3. Neither the name of the copyright holders nor the names of its
++// contributors may be used to endorse or promote products derived from
++// this software without specific prior written permission.
++//
++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
++// THE POSSIBILITY OF SUCH DAMAGE.
++
++package org.objectweb.asm.commons;
++
++import org.objectweb.asm.Opcodes;
++import org.objectweb.asm.signature.SignatureVisitor;
++
++/**
++ * A {@link SignatureVisitor} adapter for type mapping.
++ *
++ * @deprecated use {@link SignatureRemapper} instead.
++ * @author Eugene Kuleshov
++ */
++ at Deprecated
++public class RemappingSignatureAdapter extends SignatureVisitor {
++
++ private final SignatureVisitor signatureVisitor;
++
++ private final Remapper remapper;
++
++ private String className;
++
++ public RemappingSignatureAdapter(
++ final SignatureVisitor signatureVisitor, final Remapper remapper) {
++ this(Opcodes.ASM6, signatureVisitor, remapper);
++ }
++
++ protected RemappingSignatureAdapter(
++ final int api, final SignatureVisitor signatureVisitor, final Remapper remapper) {
++ super(api);
++ this.signatureVisitor = signatureVisitor;
++ this.remapper = remapper;
++ }
++
++ @Override
++ public void visitClassType(final String name) {
++ className = name;
++ signatureVisitor.visitClassType(remapper.mapType(name));
++ }
++
++ @Override
++ public void visitInnerClassType(final String name) {
++ String remappedOuter = remapper.mapType(className) + '$';
++ className = className + '$' + name;
++ String remappedName = remapper.mapType(className);
++ int index =
++ remappedName.startsWith(remappedOuter)
++ ? remappedOuter.length()
++ : remappedName.lastIndexOf('$') + 1;
++ signatureVisitor.visitInnerClassType(remappedName.substring(index));
++ }
++
++ @Override
++ public void visitFormalTypeParameter(final String name) {
++ signatureVisitor.visitFormalTypeParameter(name);
++ }
++
++ @Override
++ public void visitTypeVariable(final String name) {
++ signatureVisitor.visitTypeVariable(name);
++ }
++
++ @Override
++ public SignatureVisitor visitArrayType() {
++ signatureVisitor.visitArrayType();
++ return this;
++ }
++
++ @Override
++ public void visitBaseType(final char descriptor) {
++ signatureVisitor.visitBaseType(descriptor);
++ }
++
++ @Override
++ public SignatureVisitor visitClassBound() {
++ signatureVisitor.visitClassBound();
++ return this;
++ }
++
++ @Override
++ public SignatureVisitor visitExceptionType() {
++ signatureVisitor.visitExceptionType();
++ return this;
++ }
++
++ @Override
++ public SignatureVisitor visitInterface() {
++ signatureVisitor.visitInterface();
++ return this;
++ }
++
++ @Override
++ public SignatureVisitor visitInterfaceBound() {
++ signatureVisitor.visitInterfaceBound();
++ return this;
++ }
++
++ @Override
++ public SignatureVisitor visitParameterType() {
++ signatureVisitor.visitParameterType();
++ return this;
++ }
++
++ @Override
++ public SignatureVisitor visitReturnType() {
++ signatureVisitor.visitReturnType();
++ return this;
++ }
++
++ @Override
++ public SignatureVisitor visitSuperclass() {
++ signatureVisitor.visitSuperclass();
++ return this;
++ }
++
++ @Override
++ public void visitTypeArgument() {
++ signatureVisitor.visitTypeArgument();
++ }
++
++ @Override
++ public SignatureVisitor visitTypeArgument(final char wildcard) {
++ signatureVisitor.visitTypeArgument(wildcard);
++ return this;
++ }
++
++ @Override
++ public void visitEnd() {
++ signatureVisitor.visitEnd();
++ }
++}
=====================================
debian/patches/series
=====================================
@@ -7,3 +7,4 @@
07-restore-asm-all.patch
08-ignore-sigtest-maven-plugin.patch
09-ignore-test-coverage.patch
+10-remapping-adapters.patch
View it on GitLab: https://salsa.debian.org/java-team/asm/commit/e7450934868275fc4359128f9096eeee548cad48
--
View it on GitLab: https://salsa.debian.org/java-team/asm/commit/e7450934868275fc4359128f9096eeee548cad48
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20190719/ffae3529/attachment.html>
More information about the pkg-java-commits
mailing list