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;
import com.intellij.psi.PsiElement;
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.util.TraceClassVisitor;
@@ -37,7 +35,7 @@ public class ClassBuilderFactories {
@NotNull
@Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) {
public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
throw new IllegalStateException();
}
@@ -62,7 +60,7 @@ public class ClassBuilderFactories {
@NotNull
@Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) {
public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
return new TraceBuilder(new BinaryClassWriter());
}
@@ -92,7 +90,7 @@ public class ClassBuilderFactories {
@NotNull
@Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) {
public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
return new AbstractClassBuilder.Concrete(new BinaryClassWriter());
}
@@ -16,17 +16,14 @@
package org.jetbrains.jet.codegen;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
public interface ClassBuilderFactory {
@NotNull
ClassBuilderMode getClassBuilderMode();
@NotNull
ClassBuilder newClassBuilder(@Nullable PsiElement forElement, @Nullable DeclarationDescriptor forDescriptor);
ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin);
String asText(ClassBuilder builder);
@@ -63,7 +63,7 @@ public class ClassFileFactory implements OutputFileCollection {
String outputFilePath = asmType.getInternalName() + ".class";
List<File> ioSourceFiles = toIoFilesIgnoringNonPhysical(sourceFiles);
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));
return answer;
}
@@ -36,8 +36,8 @@ public abstract class SignatureCollectingClassBuilderFactory(
origins: Collection<JvmDeclarationOrigin>
)
override fun newClassBuilder(forElement: PsiElement?, forDescriptor: DeclarationDescriptor?): SignatureCollectingClassBuilder {
return SignatureCollectingClassBuilder(JvmDeclarationOrigin(JvmDeclarationOriginKind.OTHER, forElement, forDescriptor), delegate.newClassBuilder(forElement, forDescriptor))
override fun newClassBuilder(origin: JvmDeclarationOrigin): SignatureCollectingClassBuilder {
return SignatureCollectingClassBuilder(origin, delegate.newClassBuilder(origin))
}
public override fun asBytes(builder: ClassBuilder?): ByteArray? {
@@ -16,14 +16,13 @@
package org.jetbrains.jet.asJava;
import com.intellij.psi.PsiElement;
import com.intellij.psi.stubs.StubElement;
import com.intellij.util.containers.Stack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.codegen.ClassBuilder;
import org.jetbrains.jet.codegen.ClassBuilderFactory;
import org.jetbrains.jet.codegen.ClassBuilderMode;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.codegen.JvmDeclarationOrigin;
/*package*/ class KotlinLightClassBuilderFactory implements ClassBuilderFactory {
private final Stack<StubElement> stubStack;
@@ -40,7 +39,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
@NotNull
@Override
public ClassBuilder newClassBuilder(PsiElement forElement, DeclarationDescriptor forDescriptor) {
public ClassBuilder newClassBuilder(@NotNull JvmDeclarationOrigin origin) {
return new StubClassBuilder(stubStack);
}