From 4ee7d2e72adf5817eab8312b5bee68c567fea038 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 23 May 2014 17:32:57 +0400 Subject: [PATCH] Simplify ClassFileFactory Get rid of outdated assertions, mark createText() as TestOnly, add NotNull/Nullable annotations. Inline useless forClass/forTraitImpl/... methods, because this way it's simpler and some code was already using newVisitor() anyway --- .../jet/codegen/ClassFileFactory.java | 46 +++++-------------- .../jetbrains/jet/codegen/MemberCodegen.java | 6 ++- .../jetbrains/jet/codegen/PackageCodegen.java | 2 +- .../inline/AnonymousObjectTransformer.java | 9 ++-- 4 files changed, 22 insertions(+), 41 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java index b56f9e34899..a8b6204022e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClassFileFactory.java @@ -24,10 +24,10 @@ import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import org.jetbrains.jet.OutputFile; import org.jetbrains.jet.OutputFileCollection; import org.jetbrains.jet.codegen.state.GenerationState; -import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.org.objectweb.asm.Type; @@ -36,7 +36,6 @@ import java.io.File; import java.util.*; import static org.jetbrains.jet.codegen.AsmUtil.asmTypeByFqNameWithoutInnerClasses; -import static org.jetbrains.jet.codegen.AsmUtil.isPrimitive; import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; public class ClassFileFactory implements OutputFileCollection { @@ -53,7 +52,7 @@ public class ClassFileFactory implements OutputFileCollection { } @NotNull - ClassBuilder newVisitor(@NotNull Type asmType, @NotNull PsiFile sourceFile) { + public ClassBuilder newVisitor(@NotNull Type asmType, @NotNull PsiFile sourceFile) { return newVisitor(asmType, Collections.singletonList(sourceFile)); } @@ -90,11 +89,11 @@ public class ClassFileFactory implements OutputFileCollection { @Override @Nullable public OutputFile get(@NotNull String relativePath) { - if (generators.containsKey(relativePath)) return new OutputClassFile(relativePath); - - return null; + return generators.containsKey(relativePath) ? new OutputClassFile(relativePath) : null; } + @NotNull + @TestOnly public String createText() { StringBuilder answer = new StringBuilder(); @@ -106,7 +105,8 @@ public class ClassFileFactory implements OutputFileCollection { return answer.toString(); } - public PackageCodegen forPackage(final FqName fqName, final Collection files) { + @NotNull + public PackageCodegen forPackage(@NotNull final FqName fqName, @NotNull final Collection files) { assert !isDone : "Already done!"; PackageCodegen codegen = package2codegen.get(fqName); if (codegen == null) { @@ -124,32 +124,8 @@ public class ClassFileFactory implements OutputFileCollection { return codegen; } - public ClassBuilder forClassImplementation(ClassDescriptor aClass, PsiFile sourceFile) { - Type type = state.getTypeMapper().mapClass(aClass); - if (isPrimitive(type)) { - throw new IllegalStateException("Codegen for primitive type is not possible: " + aClass); - } - return newVisitor(type, sourceFile); - } - - public ClassBuilder forLambdaInlining(Type lambdaType, PsiFile sourceFile) { - if (isPrimitive(lambdaType)) { - throw new IllegalStateException("Codegen for primitive type is not possible: " + lambdaType); - } - return newVisitor(lambdaType, sourceFile); - } - @NotNull - public ClassBuilder forPackagePart(@NotNull Type asmType, @NotNull PsiFile sourceFile) { - return newVisitor(asmType, sourceFile); - } - - @NotNull - public ClassBuilder forTraitImplementation(@NotNull ClassDescriptor aClass, @NotNull GenerationState state, @NotNull PsiFile file) { - return newVisitor(state.getTypeMapper().mapTraitImpl(aClass), file); - } - - private static Collection toIoFilesIgnoringNonPhysical(Collection psiFiles) { + private static Collection toIoFilesIgnoringNonPhysical(@NotNull Collection psiFiles) { List result = Lists.newArrayList(); for (PsiFile psiFile : psiFiles) { VirtualFile virtualFile = psiFile.getVirtualFile(); @@ -162,10 +138,10 @@ public class ClassFileFactory implements OutputFileCollection { return result; } - private final class OutputClassFile implements OutputFile { - final String relativeClassFilePath; + private class OutputClassFile implements OutputFile { + private final String relativeClassFilePath; - OutputClassFile(String relativeClassFilePath) { + public OutputClassFile(String relativeClassFilePath) { this.relativeClassFilePath = relativeClassFilePath; } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java index 764cd530b13..d9d3e0e052e 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java @@ -158,12 +158,14 @@ public abstract class MemberCodegen