Cleanup after review

This commit is contained in:
Dmitry Petrov
2015-09-07 15:05:17 +03:00
parent bc5e29df9f
commit c18f87f0c7
10 changed files with 29 additions and 29 deletions
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import java.util.* import java.util.*
public class CodegenFileClassesProvider private constructor(private val bindingContext: BindingContext) : JvmFileClassesProvider() { public class CodegenFileClassesProvider private constructor(private val bindingContext: BindingContext) : JvmFileClassesProvider {
private val fileParts = hashMapOf<JetFile, JvmFileClassInfo>() private val fileParts = hashMapOf<JetFile, JvmFileClassInfo>()
override fun getFileClassFqName(file: JetFile): FqName = override fun getFileClassFqName(file: JetFile): FqName =
@@ -68,5 +68,3 @@ public class CodegenFileClassesProvider private constructor(private val bindingC
} }
} }
} }
public class JvmMultifileFacadeClassInfo(public val facadeFqName: FqName, public val fileParts: List<JvmFileClassInfo>)
@@ -44,7 +44,7 @@ public class KotlinCodegenFacade {
FqName name = ScriptNameUtil.classNameForScript(script); FqName name = ScriptNameUtil.classNameForScript(script);
Type type = AsmUtil.asmTypeByFqNameWithoutInnerClasses(name); Type type = AsmUtil.asmTypeByFqNameWithoutInnerClasses(name);
registerClassNameForScript(state.getBindingTrace(), script, type, state.getFileClassesManager()); registerClassNameForScript(state.getBindingTrace(), script, type, state.getFileClassesProvider());
} }
} }
@@ -74,7 +74,7 @@ public abstract class MemberCodegen<T extends JetElement/* TODO: & JetDeclaratio
protected final PropertyCodegen propertyCodegen; protected final PropertyCodegen propertyCodegen;
protected final JetTypeMapper typeMapper; protected final JetTypeMapper typeMapper;
protected final BindingContext bindingContext; protected final BindingContext bindingContext;
protected final JvmFileClassesProvider fileClassesManager; protected final JvmFileClassesProvider fileClassesProvider;
private final MemberCodegen<?> parentCodegen; private final MemberCodegen<?> parentCodegen;
private final ReifiedTypeParametersUsages reifiedTypeParametersUsages = new ReifiedTypeParametersUsages(); private final ReifiedTypeParametersUsages reifiedTypeParametersUsages = new ReifiedTypeParametersUsages();
protected final Collection<ClassDescriptor> innerClasses = new LinkedHashSet<ClassDescriptor>(); protected final Collection<ClassDescriptor> innerClasses = new LinkedHashSet<ClassDescriptor>();
@@ -95,7 +95,7 @@ public abstract class MemberCodegen<T extends JetElement/* TODO: & JetDeclaratio
this.state = state; this.state = state;
this.typeMapper = state.getTypeMapper(); this.typeMapper = state.getTypeMapper();
this.bindingContext = state.getBindingContext(); this.bindingContext = state.getBindingContext();
this.fileClassesManager = state.getFileClassesManager(); this.fileClassesProvider = state.getFileClassesProvider();
this.element = element; this.element = element;
this.context = context; this.context = context;
this.v = builder; this.v = builder;
@@ -290,7 +290,7 @@ public abstract class MemberCodegen<T extends JetElement/* TODO: & JetDeclaratio
return typeMapper.mapType(((ClassContext) outermost).getContextDescriptor()); return typeMapper.mapType(((ClassContext) outermost).getContextDescriptor());
} }
else if (outermost instanceof PackageContext && !(outermost instanceof PackageFacadeContext)) { else if (outermost instanceof PackageContext && !(outermost instanceof PackageFacadeContext)) {
return fileClassesManager.getFileClassType(element.getContainingJetFile()); return fileClassesProvider.getFileClassType(element.getContainingJetFile());
}/*disabled cause of KT-7775 }/*disabled cause of KT-7775
else if (outermost instanceof ScriptContext) { else if (outermost instanceof ScriptContext) {
return asmTypeForScriptDescriptor(bindingContext, ((ScriptContext) outermost).getScriptDescriptor()); return asmTypeForScriptDescriptor(bindingContext, ((ScriptContext) outermost).getScriptDescriptor());
@@ -312,7 +312,7 @@ public abstract class MemberCodegen<T extends JetElement/* TODO: & JetDeclaratio
@NotNull @NotNull
public NameGenerator getInlineNameGenerator() { public NameGenerator getInlineNameGenerator() {
if (inlineNameGenerator == null) { if (inlineNameGenerator == null) {
String prefix = InlineCodegenUtil.getInlineName(context, typeMapper, fileClassesManager); String prefix = InlineCodegenUtil.getInlineName(context, typeMapper, fileClassesProvider);
inlineNameGenerator = new NameGenerator(prefix); inlineNameGenerator = new NameGenerator(prefix);
} }
return inlineNameGenerator; return inlineNameGenerator;
@@ -312,7 +312,7 @@ public class PackageCodegen {
@Nullable @Nullable
private ClassBuilder generate(@NotNull JetFile file, @NotNull Map<CallableMemberDescriptor, Runnable> generateCallableMemberTasks) { private ClassBuilder generate(@NotNull JetFile file, @NotNull Map<CallableMemberDescriptor, Runnable> generateCallableMemberTasks) {
boolean generatePackagePart = false; boolean generatePackagePart = false;
Type packagePartType = state.getFileClassesManager().getFileClassType(file); Type packagePartType = state.getFileClassesProvider().getFileClassType(file);
PackageContext packagePartContext = CodegenContext.STATIC.intoPackagePart(packageFragment, packagePartType); PackageContext packagePartContext = CodegenContext.STATIC.intoPackagePart(packageFragment, packagePartType);
for (JetDeclaration declaration : file.getDeclarations()) { for (JetDeclaration declaration : file.getDeclarations()) {
@@ -414,7 +414,7 @@ public class PackageCodegen {
public void generateClassOrObject(@NotNull JetClassOrObject classOrObject) { public void generateClassOrObject(@NotNull JetClassOrObject classOrObject) {
JetFile file = classOrObject.getContainingJetFile(); JetFile file = classOrObject.getContainingJetFile();
Type packagePartType = state.getFileClassesManager().getFileClassType(file); Type packagePartType = state.getFileClassesProvider().getFileClassType(file);
CodegenContext context = CodegenContext.STATIC.intoPackagePart(packageFragment, packagePartType); CodegenContext context = CodegenContext.STATIC.intoPackagePart(packageFragment, packagePartType);
MemberCodegen.genClassOrObject(context, classOrObject, state, null); MemberCodegen.genClassOrObject(context, classOrObject, state, null);
} }
@@ -75,14 +75,14 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
private final BindingContext bindingContext; private final BindingContext bindingContext;
private final GenerationState.GenerateClassFilter filter; private final GenerationState.GenerateClassFilter filter;
private final JvmRuntimeTypes runtimeTypes; private final JvmRuntimeTypes runtimeTypes;
private final JvmFileClassesProvider fileClassesManager; private final JvmFileClassesProvider fileClassesProvider;
public CodegenAnnotatingVisitor(@NotNull GenerationState state) { public CodegenAnnotatingVisitor(@NotNull GenerationState state) {
this.bindingTrace = state.getBindingTrace(); this.bindingTrace = state.getBindingTrace();
this.bindingContext = state.getBindingContext(); this.bindingContext = state.getBindingContext();
this.filter = state.getGenerateDeclaredClassFilter(); this.filter = state.getGenerateDeclaredClassFilter();
this.runtimeTypes = state.getJvmRuntimeTypes(); this.runtimeTypes = state.getJvmRuntimeTypes();
this.fileClassesManager = state.getFileClassesManager(); this.fileClassesProvider = state.getFileClassesProvider();
} }
@NotNull @NotNull
@@ -335,7 +335,8 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
} }
private void recordClosure(@NotNull ClassDescriptor classDescriptor, @NotNull String name) { private void recordClosure(@NotNull ClassDescriptor classDescriptor, @NotNull String name) {
CodegenBinding.recordClosure(bindingTrace, classDescriptor, peekFromStack(classStack), Type.getObjectType(name), fileClassesManager); CodegenBinding.recordClosure(bindingTrace, classDescriptor, peekFromStack(classStack), Type.getObjectType(name),
fileClassesProvider);
} }
@Override @Override
@@ -393,7 +394,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
else if (containingDeclaration instanceof PackageFragmentDescriptor) { else if (containingDeclaration instanceof PackageFragmentDescriptor) {
JetFile containingFile = DescriptorToSourceUtils.getContainingFile(descriptor); JetFile containingFile = DescriptorToSourceUtils.getContainingFile(descriptor);
assert containingFile != null : "File not found for " + descriptor; assert containingFile != null : "File not found for " + descriptor;
return fileClassesManager.getFileClassInternalName(containingFile) + '$' + name; return fileClassesProvider.getFileClassInternalName(containingFile) + '$' + name;
} }
return null; return null;
@@ -574,7 +575,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
} }
} }
return fileClassesManager.getFileClassInternalName(file); return fileClassesProvider.getFileClassInternalName(file);
} }
private static <T> T peekFromStack(@NotNull Stack<T> stack) { private static <T> T peekFromStack(@NotNull Stack<T> stack) {
@@ -82,7 +82,7 @@ public class GenerationState jvmOverloads constructor(
} }
} }
public val fileClassesManager: CodegenFileClassesProvider = public val fileClassesProvider: CodegenFileClassesProvider =
CodegenFileClassesProvider.createForCodegenTask(bindingContext, files, packagesWithObsoleteParts, CodegenFileClassesProvider.createForCodegenTask(bindingContext, files, packagesWithObsoleteParts,
/* TODO */ multifileFacadesWithObsoleteParts = emptySet()) /* TODO */ multifileFacadesWithObsoleteParts = emptySet())
@@ -90,7 +90,7 @@ public class GenerationState jvmOverloads constructor(
public val bindingTrace: BindingTrace = DelegatingBindingTrace(bindingContext, "trace in GenerationState") public val bindingTrace: BindingTrace = DelegatingBindingTrace(bindingContext, "trace in GenerationState")
public val bindingContext: BindingContext = bindingTrace.getBindingContext() public val bindingContext: BindingContext = bindingTrace.getBindingContext()
public val typeMapper: JetTypeMapper = public val typeMapper: JetTypeMapper =
JetTypeMapperWithOutDirectory(this.bindingContext, classBuilderMode, fileClassesManager, outDirectory) JetTypeMapperWithOutDirectory(this.bindingContext, classBuilderMode, fileClassesProvider, outDirectory)
public val intrinsics: IntrinsicMethods = IntrinsicMethods() public val intrinsics: IntrinsicMethods = IntrinsicMethods()
public val samWrapperClasses: SamWrapperClasses = SamWrapperClasses(this) public val samWrapperClasses: SamWrapperClasses = SamWrapperClasses(this)
public val inlineCycleReporter: InlineCycleReporter = InlineCycleReporter(diagnostics) public val inlineCycleReporter: InlineCycleReporter = InlineCycleReporter(diagnostics)
@@ -114,7 +114,7 @@ public class GenerationState jvmOverloads constructor(
init { init {
val optimizationClassBuilderFactory = OptimizationClassBuilderFactory(builderFactory, disableOptimization) val optimizationClassBuilderFactory = OptimizationClassBuilderFactory(builderFactory, disableOptimization)
var interceptedBuilderFactory: ClassBuilderFactory = BuilderFactoryForDuplicateSignatureDiagnostics( var interceptedBuilderFactory: ClassBuilderFactory = BuilderFactoryForDuplicateSignatureDiagnostics(
optimizationClassBuilderFactory, this.bindingContext, diagnostics, fileClassesManager) optimizationClassBuilderFactory, this.bindingContext, diagnostics, fileClassesProvider)
interceptedBuilderFactory = BuilderFactoryForDuplicateClassNameDiagnostics(interceptedBuilderFactory, diagnostics); interceptedBuilderFactory = BuilderFactoryForDuplicateClassNameDiagnostics(interceptedBuilderFactory, diagnostics);
@@ -82,16 +82,16 @@ import static org.jetbrains.org.objectweb.asm.Opcodes.*;
public class JetTypeMapper { public class JetTypeMapper {
private final BindingContext bindingContext; private final BindingContext bindingContext;
private final ClassBuilderMode classBuilderMode; private final ClassBuilderMode classBuilderMode;
private final JvmFileClassesProvider fileClassesManager; private final JvmFileClassesProvider fileClassesProvider;
public JetTypeMapper( public JetTypeMapper(
@NotNull BindingContext bindingContext, @NotNull BindingContext bindingContext,
@NotNull ClassBuilderMode classBuilderMode, @NotNull ClassBuilderMode classBuilderMode,
@NotNull JvmFileClassesProvider fileClassesManager @NotNull JvmFileClassesProvider fileClassesProvider
) { ) {
this.bindingContext = bindingContext; this.bindingContext = bindingContext;
this.classBuilderMode = classBuilderMode; this.classBuilderMode = classBuilderMode;
this.fileClassesManager = fileClassesManager; this.fileClassesProvider = fileClassesProvider;
} }
@NotNull @NotNull
@@ -168,7 +168,7 @@ public class JetTypeMapper {
///if (insideModule) { ///if (insideModule) {
JetFile file = DescriptorToSourceUtils.getContainingFile(descriptor); JetFile file = DescriptorToSourceUtils.getContainingFile(descriptor);
if (file != null) { if (file != null) {
return fileClassesManager.getFileClassInternalName(file); return fileClassesProvider.getFileClassInternalName(file);
} }
CallableMemberDescriptor directMember = getDirectMember(descriptor); CallableMemberDescriptor directMember = getDirectMember(descriptor);
@@ -402,7 +402,7 @@ public class JetTypeMapper {
} }
Type asmType = Type.getObjectType(computeAsmTypeImpl(klass)); Type asmType = Type.getObjectType(computeAsmTypeImpl(klass));
assert PsiCodegenPredictor.checkPredictedNameFromPsi(klass, asmType, fileClassesManager); assert PsiCodegenPredictor.checkPredictedNameFromPsi(klass, asmType, fileClassesProvider);
return asmType; return asmType;
} }
@@ -389,7 +389,7 @@ public class ReplInterpreter {
PsiElement jetScript = descriptorToDeclaration(earlierDescriptor); PsiElement jetScript = descriptorToDeclaration(earlierDescriptor);
if (jetScript != null) { if (jetScript != null) {
registerClassNameForScript(state.getBindingTrace(), (JetScript) jetScript, earlierClassType, state.getFileClassesManager()); registerClassNameForScript(state.getBindingTrace(), (JetScript) jetScript, earlierClassType, state.getFileClassesProvider());
earlierScriptDescriptors.add(earlierDescriptor); earlierScriptDescriptors.add(earlierDescriptor);
} }
} }
@@ -404,7 +404,7 @@ public class ReplInterpreter {
@NotNull CompilationErrorHandler errorHandler @NotNull CompilationErrorHandler errorHandler
) { ) {
registerEarlierScripts(state, earlierScripts); registerEarlierScripts(state, earlierScripts);
registerClassNameForScript(state.getBindingTrace(), script, classType, state.getFileClassesManager()); registerClassNameForScript(state.getBindingTrace(), script, classType, state.getFileClassesProvider());
state.beforeCompile(); state.beforeCompile();
KotlinCodegenFacade.generatePackage( KotlinCodegenFacade.generatePackage(
@@ -21,8 +21,8 @@ import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.jvm.JvmClassName
import org.jetbrains.org.objectweb.asm.Type import org.jetbrains.org.objectweb.asm.Type
public abstract class JvmFileClassesProvider { public interface JvmFileClassesProvider {
public abstract fun getFileClassFqName(file: JetFile): FqName public fun getFileClassFqName(file: JetFile): FqName
public fun getFileClassInternalName(file: JetFile): String = public fun getFileClassInternalName(file: JetFile): String =
JvmClassName.byFqNameWithoutInnerClasses(getFileClassFqName(file)).internalName JvmClassName.byFqNameWithoutInnerClasses(getFileClassFqName(file)).internalName
@@ -30,3 +30,4 @@ public abstract class JvmFileClassesProvider {
public fun getFileClassType(file: JetFile): Type = public fun getFileClassType(file: JetFile): Type =
Type.getObjectType(getFileClassInternalName(file)) Type.getObjectType(getFileClassInternalName(file))
} }
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetFile
public object NoResolveFileClassesProvider : JvmFileClassesProvider() { public object NoResolveFileClassesProvider : JvmFileClassesProvider {
override fun getFileClassFqName(file: JetFile): FqName = override fun getFileClassFqName(file: JetFile): FqName =
JvmFileClassUtil.getFileClassInfo(file, JvmFileClassUtil.parseJvmNameOnFileNoResolve(file)).fileClassFqName JvmFileClassUtil.getFileClassInfo(file, JvmFileClassUtil.parseJvmNameOnFileNoResolve(file)).fileClassFqName
} }