JvmDeclarationOrigin used in newClassBuilder()

This commit is contained in:
Andrey Breslav
2014-05-27 20:49:41 +04:00
parent 6ce86cca72
commit 4fbce3f43e
5 changed files with 9 additions and 15 deletions
@@ -16,9 +16,7 @@
package org.jetbrains.jet.codegen; package org.jetbrains.jet.codegen;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.org.objectweb.asm.ClassWriter; import org.jetbrains.org.objectweb.asm.ClassWriter;
import org.jetbrains.org.objectweb.asm.util.TraceClassVisitor; import org.jetbrains.org.objectweb.asm.util.TraceClassVisitor;
@@ -37,7 +35,7 @@ public class ClassBuilderFactories {
@NotNull @NotNull
@Override @Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) { public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
throw new IllegalStateException(); throw new IllegalStateException();
} }
@@ -62,7 +60,7 @@ public class ClassBuilderFactories {
@NotNull @NotNull
@Override @Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) { public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
return new TraceBuilder(new BinaryClassWriter()); return new TraceBuilder(new BinaryClassWriter());
} }
@@ -92,7 +90,7 @@ public class ClassBuilderFactories {
@NotNull @NotNull
@Override @Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) { public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
return new AbstractClassBuilder.Concrete(new BinaryClassWriter()); return new AbstractClassBuilder.Concrete(new BinaryClassWriter());
} }
@@ -16,17 +16,14 @@
package org.jetbrains.jet.codegen; package org.jetbrains.jet.codegen;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
public interface ClassBuilderFactory { public interface ClassBuilderFactory {
@NotNull @NotNull
ClassBuilderMode getClassBuilderMode(); ClassBuilderMode getClassBuilderMode();
@NotNull @NotNull
ClassBuilder newClassBuilder(@Nullable PsiElement forElement, @Nullable DeclarationDescriptor forDescriptor); ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin);
String asText(ClassBuilder builder); String asText(ClassBuilder builder);
@@ -63,7 +63,7 @@ public class ClassFileFactory implements OutputFileCollection {
String outputFilePath = asmType.getInternalName() + ".class"; String outputFilePath = asmType.getInternalName() + ".class";
List<File> ioSourceFiles = toIoFilesIgnoringNonPhysical(sourceFiles); List<File> ioSourceFiles = toIoFilesIgnoringNonPhysical(sourceFiles);
state.getProgress().reportOutput(ioSourceFiles, new File(outputFilePath)); state.getProgress().reportOutput(ioSourceFiles, new File(outputFilePath));
ClassBuilder answer = builderFactory.newClassBuilder(origin.getElement(), origin.getDescriptor()); ClassBuilder answer = builderFactory.newClassBuilder(origin);
generators.put(outputFilePath, new ClassBuilderAndSourceFileList(answer, ioSourceFiles)); generators.put(outputFilePath, new ClassBuilderAndSourceFileList(answer, ioSourceFiles));
return answer; return answer;
} }
@@ -36,8 +36,8 @@ public abstract class SignatureCollectingClassBuilderFactory(
origins: Collection<JvmDeclarationOrigin> origins: Collection<JvmDeclarationOrigin>
) )
override fun newClassBuilder(forElement: PsiElement?, forDescriptor: DeclarationDescriptor?): SignatureCollectingClassBuilder { override fun newClassBuilder(origin: JvmDeclarationOrigin): SignatureCollectingClassBuilder {
return SignatureCollectingClassBuilder(JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, forElement, forDescriptor), delegate.newClassBuilder(forElement, forDescriptor)) return SignatureCollectingClassBuilder(origin, delegate.newClassBuilder(origin))
} }
public override fun asBytes(builder: ClassBuilder?): ByteArray? { public override fun asBytes(builder: ClassBuilder?): ByteArray? {
@@ -16,14 +16,13 @@
package org.jetbrains.jet.asJava; package org.jetbrains.jet.asJava;
import com.intellij.psi.PsiElement;
import com.intellij.psi.stubs.StubElement; import com.intellij.psi.stubs.StubElement;
import com.intellij.util.containers.Stack; import com.intellij.util.containers.Stack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.codegen.ClassBuilder; import org.jetbrains.jet.codegen.ClassBuilder;
import org.jetbrains.jet.codegen.ClassBuilderFactory; import org.jetbrains.jet.codegen.ClassBuilderFactory;
import org.jetbrains.jet.codegen.ClassBuilderMode; import org.jetbrains.jet.codegen.ClassBuilderMode;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.codegen.JvmDeclarationOrigin;
/*package*/ class KotlinLightClassBuilderFactory implements ClassBuilderFactory { /*package*/ class KotlinLightClassBuilderFactory implements ClassBuilderFactory {
private final Stack<StubElement> stubStack; private final Stack<StubElement> stubStack;
@@ -40,7 +39,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
@NotNull @NotNull
@Override @Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) { public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
return new StubClassBuilder(stubStack); return new StubClassBuilder(stubStack);
} }