Name clash test for file class vs multifile class

This commit is contained in:
Dmitry Petrov
2015-09-08 17:57:17 +03:00
parent 0c951b2ed3
commit 5e38c99f81
9 changed files with 38 additions and 7 deletions
@@ -84,12 +84,15 @@ public class ClassFileFactory implements OutputFileCollection {
void done() {
if (!isDone) {
isDone = true;
Collection<PackageCodegen> values = package2codegen.values();
for (PackageCodegen codegen : values) {
Collection<PackageCodegen> packageCodegens = package2codegen.values();
for (PackageCodegen codegen : packageCodegens) {
codegen.done();
}
writeModuleMappings(values);
for (MultifileClassCodegen codegen : multifileClass2codegen.values()) {
codegen.done();
}
// TODO module mappings for multifile classes
writeModuleMappings(packageCodegens);
}
}
@@ -70,7 +70,7 @@ public class MultifileClassCodegen(
val actualPackageFragment = packageFragment ?:
compiledPackageFragment ?:
throw AssertionError("No package fragment for multifile facade $facadeFqName; files: $files")
val declarationOrigin = MultifileClass(actualPackageFragment, facadeFqName)
val declarationOrigin = MultifileClass(sourceFile, actualPackageFragment, facadeFqName)
val classBuilder = state.factory.newVisitor(declarationOrigin, facadeClassType, filesWithTopLevelCallables)
classBuilder.defineClass(sourceFile, Opcodes.V1_6, FACADE_CLASS_ATTRIBUTES,