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:
@@ -47,13 +47,6 @@ public class GenerationState {
|
|||||||
public interface GenerateClassFilter {
|
public interface GenerateClassFilter {
|
||||||
boolean shouldProcess(JetClassOrObject classOrObject);
|
boolean shouldProcess(JetClassOrObject classOrObject);
|
||||||
|
|
||||||
GenerateClassFilter ONLY_PACKAGE_CLASS = new GenerateClassFilter() {
|
|
||||||
@Override
|
|
||||||
public boolean shouldProcess(JetClassOrObject classOrObject) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
GenerateClassFilter GENERATE_ALL = new GenerateClassFilter() {
|
GenerateClassFilter GENERATE_ALL = new GenerateClassFilter() {
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldProcess(JetClassOrObject classOrObject) {
|
public boolean shouldProcess(JetClassOrObject classOrObject) {
|
||||||
|
|||||||
+9
-1
@@ -50,6 +50,7 @@ import org.jetbrains.jet.codegen.state.Progress;
|
|||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
@@ -104,7 +105,14 @@ public class KotlinJavaFileStubProvider<T extends WithFileStubAndExtraDiagnostic
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GenerationState.GenerateClassFilter getGenerateClassFilter() {
|
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
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user