Do not skip local classes in top-level functions

In this case we need names for such classes:

fun foo() = run {
  class A
  A()
}
This commit is contained in:
Andrey Breslav
2014-06-05 13:10:51 +04:00
parent bbaf47d3db
commit 3bc404a80e
2 changed files with 9 additions and 8 deletions
@@ -47,13 +47,6 @@ public class GenerationState {
public interface GenerateClassFilter {
boolean shouldProcess(JetClassOrObject classOrObject);
GenerateClassFilter ONLY_PACKAGE_CLASS = new GenerateClassFilter() {
@Override
public boolean shouldProcess(JetClassOrObject classOrObject) {
return false;
}
};
GenerateClassFilter GENERATE_ALL = new GenerateClassFilter() {
@Override
public boolean shouldProcess(JetClassOrObject classOrObject) {
@@ -50,6 +50,7 @@ import org.jetbrains.jet.codegen.state.Progress;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.psi.JetClassOrObject;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiUtil;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
@@ -104,7 +105,14 @@ public class KotlinJavaFileStubProvider<T extends WithFileStubAndExtraDiagnostic
@Override
public GenerationState.GenerateClassFilter getGenerateClassFilter() {
return GenerationState.GenerateClassFilter.ONLY_PACKAGE_CLASS;
return new GenerationState.GenerateClassFilter() {
@Override
public boolean shouldProcess(JetClassOrObject classOrObject) {
// Top-level classes and such should not be generated for performance reasons.
// Local classes in top-level functions must still be generated
return JetPsiUtil.isLocal(classOrObject);
}
};
}
@Override