DelegationClassBuilderFactory class extraction
This commit is contained in:
+2
-15
@@ -26,9 +26,8 @@ import org.jetbrains.org.objectweb.asm.FieldVisitor
|
||||
import org.jetbrains.org.objectweb.asm.MethodVisitor
|
||||
|
||||
public abstract class ClassNameCollectionClassBuilderFactory(
|
||||
private val delegate: ClassBuilderFactory
|
||||
|
||||
) : ClassBuilderFactory by delegate {
|
||||
delegate: ClassBuilderFactory
|
||||
) : DelegatingClassBuilderFactory(delegate) {
|
||||
|
||||
protected abstract fun handleClashingNames(internalName: String, origin: JvmDeclarationOrigin)
|
||||
|
||||
@@ -36,18 +35,6 @@ public abstract class ClassNameCollectionClassBuilderFactory(
|
||||
return ClassNameCollectionClassBuilder(origin, delegate.newClassBuilder(origin))
|
||||
}
|
||||
|
||||
public override fun asBytes(builder: ClassBuilder?): ByteArray? {
|
||||
return delegate.asBytes((builder as ClassNameCollectionClassBuilder)._delegate)
|
||||
}
|
||||
|
||||
public override fun asText(builder: ClassBuilder?): String? {
|
||||
return delegate.asText((builder as ClassNameCollectionClassBuilder)._delegate)
|
||||
}
|
||||
|
||||
public override fun close() {
|
||||
delegate.close()
|
||||
}
|
||||
|
||||
private inner class ClassNameCollectionClassBuilder(
|
||||
private val classCreatedFor: JvmDeclarationOrigin,
|
||||
internal val _delegate: ClassBuilder
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.codegen
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ConflictingJvmDeclarationsData
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.MemberKind
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.RawSignature
|
||||
import org.jetbrains.org.objectweb.asm.FieldVisitor
|
||||
import org.jetbrains.org.objectweb.asm.MethodVisitor
|
||||
|
||||
public abstract class DelegatingClassBuilderFactory(
|
||||
protected val delegate: ClassBuilderFactory
|
||||
|
||||
) : ClassBuilderFactory by delegate {
|
||||
|
||||
abstract override fun newClassBuilder(origin: JvmDeclarationOrigin): DelegatingClassBuilder
|
||||
|
||||
public override fun asBytes(builder: ClassBuilder?): ByteArray? {
|
||||
return delegate.asBytes((builder as DelegatingClassBuilder).getDelegate())
|
||||
}
|
||||
|
||||
public override fun asText(builder: ClassBuilder?): String? {
|
||||
return delegate.asText((builder as DelegatingClassBuilder).getDelegate())
|
||||
}
|
||||
}
|
||||
+2
-15
@@ -26,9 +26,8 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.RawSignature
|
||||
|
||||
public abstract class SignatureCollectingClassBuilderFactory(
|
||||
private val delegate: ClassBuilderFactory
|
||||
|
||||
) : ClassBuilderFactory by delegate {
|
||||
delegate: ClassBuilderFactory
|
||||
) : DelegatingClassBuilderFactory(delegate) {
|
||||
|
||||
protected abstract fun handleClashingSignatures(data: ConflictingJvmDeclarationsData)
|
||||
protected abstract fun onClassDone(classOrigin: JvmDeclarationOrigin,
|
||||
@@ -39,18 +38,6 @@ public abstract class SignatureCollectingClassBuilderFactory(
|
||||
return SignatureCollectingClassBuilder(origin, delegate.newClassBuilder(origin))
|
||||
}
|
||||
|
||||
public override fun asBytes(builder: ClassBuilder?): ByteArray? {
|
||||
return delegate.asBytes((builder as SignatureCollectingClassBuilder)._delegate)
|
||||
}
|
||||
|
||||
public override fun asText(builder: ClassBuilder?): String? {
|
||||
return delegate.asText((builder as SignatureCollectingClassBuilder)._delegate)
|
||||
}
|
||||
|
||||
public override fun close() {
|
||||
delegate.close()
|
||||
}
|
||||
|
||||
private inner class SignatureCollectingClassBuilder(
|
||||
private val classCreatedFor: JvmDeclarationOrigin,
|
||||
internal val _delegate: ClassBuilder
|
||||
|
||||
+5
-26
@@ -20,41 +20,20 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilder;
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactory;
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode;
|
||||
import org.jetbrains.kotlin.codegen.DelegatingClassBuilderFactory;
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin;
|
||||
|
||||
public class OptimizationClassBuilderFactory implements ClassBuilderFactory {
|
||||
private final ClassBuilderFactory delegate;
|
||||
public class OptimizationClassBuilderFactory extends DelegatingClassBuilderFactory {
|
||||
private final boolean disableOptimization;
|
||||
|
||||
public OptimizationClassBuilderFactory(ClassBuilderFactory delegate, boolean disableOptimization) {
|
||||
this.delegate = delegate;
|
||||
super(delegate);
|
||||
this.disableOptimization = disableOptimization;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ClassBuilderMode getClassBuilderMode() {
|
||||
return delegate.getClassBuilderMode();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
|
||||
return new OptimizationClassBuilder(delegate.newClassBuilder(origin), disableOptimization);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String asText(ClassBuilder builder) {
|
||||
return delegate.asText(((OptimizationClassBuilder) builder).getDelegate());
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] asBytes(ClassBuilder builder) {
|
||||
return delegate.asBytes(((OptimizationClassBuilder) builder).getDelegate());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
delegate.close();
|
||||
public OptimizationClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
|
||||
return new OptimizationClassBuilder(getDelegate().newClassBuilder(origin), disableOptimization);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-15
@@ -20,6 +20,7 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilder
|
||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactory
|
||||
import org.jetbrains.kotlin.codegen.DelegatingClassBuilder
|
||||
import org.jetbrains.kotlin.codegen.DelegatingClassBuilderFactory
|
||||
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
@@ -63,28 +64,18 @@ public abstract class AnnotationCollectorExtensionBase(val supportInheritedAnnot
|
||||
protected abstract fun closeWriter()
|
||||
|
||||
private inner class AnnotationCollectorClassBuilderFactory(
|
||||
private val delegateFactory: ClassBuilderFactory,
|
||||
delegateFactory: ClassBuilderFactory,
|
||||
val writer: Writer,
|
||||
val diagnostics: DiagnosticSink
|
||||
) : ClassBuilderFactory {
|
||||
) : DelegatingClassBuilderFactory(delegateFactory) {
|
||||
|
||||
override fun newClassBuilder(origin: JvmDeclarationOrigin): ClassBuilder {
|
||||
return AnnotationCollectorClassBuilder(delegateFactory.newClassBuilder(origin), writer, diagnostics)
|
||||
}
|
||||
|
||||
override fun getClassBuilderMode() = delegateFactory.getClassBuilderMode()
|
||||
|
||||
override fun asText(builder: ClassBuilder?): String? {
|
||||
return delegateFactory.asText((builder as AnnotationCollectorClassBuilder).delegateClassBuilder)
|
||||
}
|
||||
|
||||
override fun asBytes(builder: ClassBuilder?): ByteArray? {
|
||||
return delegateFactory.asBytes((builder as AnnotationCollectorClassBuilder).delegateClassBuilder)
|
||||
override fun newClassBuilder(origin: JvmDeclarationOrigin): DelegatingClassBuilder {
|
||||
return AnnotationCollectorClassBuilder(delegate.newClassBuilder(origin), writer, diagnostics)
|
||||
}
|
||||
|
||||
override fun close() {
|
||||
closeWriter()
|
||||
delegateFactory.close()
|
||||
delegate.close()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user