/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit.internal.classGeneration; import javax.annotation.*; import mockit.external.asm.*; /** * Generates a concrete subclass for an {@code abstract} base class. */ public final class ConcreteSubclass<T> extends ImplementationClass<T> { public ConcreteSubclass(@Nonnull Class<?> baseClass) { super(baseClass); } @Nonnull @Override protected ClassVisitor createMethodBodyGenerator(@Nonnull ClassReader typeReader) { return new BaseSubclassGenerator(sourceClass, typeReader, null, generatedClassName, false) { @Override protected void generateMethodImplementation( String className, int access, @Nonnull String name, @Nonnull String desc, @Nullable String signature, @Nullable String[] exceptions) { mw = cw.visitMethod(Opcodes.ACC_PUBLIC, name, desc, signature, exceptions); generateEmptyImplementation(desc); } }; } }