Generate light classes for Kotlin inner classes

#KT-6237 Fixed
This commit is contained in:
Alexey Sedunov
2014-11-12 21:22:34 +03:00
parent da915aee7e
commit b09684024b
16 changed files with 192 additions and 2 deletions
@@ -37,6 +37,9 @@ import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import jet.runtime.typeinfo.JetValueParameter;
import kotlin.Function1;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -542,8 +545,18 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
@NotNull
@Override
public List<PsiClass> getOwnInnerClasses() {
// TODO: Should return inner class wrapper
return Arrays.asList(getDelegate().getInnerClasses());
return KotlinPackage.filterNotNull(
KotlinPackage.map(
getDelegate().getInnerClasses(),
new Function1<PsiClass, PsiClass>() {
@Override
public PsiClass invoke(PsiClass aClass) {
JetClassOrObject declaration = (JetClassOrObject) ClsWrapperStubPsiFactory.getOriginalDeclaration(aClass);
return declaration != null ? KotlinLightClassForExplicitDeclaration.create(myManager, declaration) : null;
}
}
)
);
}
private static boolean checkSuperTypeByFQName(@NotNull ClassDescriptor classDescriptor, @NotNull String qualifiedName, Boolean deep) {