Cleanup after review
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-5
@@ -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(
|
||||||
|
|||||||
+3
-2
@@ -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))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user