Do not build inner type for error classes

#KT-10409 Fixed
This commit is contained in:
Denis Zharkov
2015-12-16 14:05:30 +03:00
parent 0d7c8635b3
commit 1a6f9b8d1c
4 changed files with 36 additions and 1 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.descriptors
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.error.MissingDependencyErrorClass
import java.util.*
@@ -65,7 +66,7 @@ fun KotlinType.buildPossiblyInnerType(): PossiblyInnerType? {
}
private fun KotlinType.buildPossiblyInnerType(classDescriptor: ClassDescriptor?, index: Int): PossiblyInnerType? {
if (classDescriptor == null) return null
if (classDescriptor == null || ErrorUtils.isError(classDescriptor)) return null
val toIndex = classDescriptor.declaredTypeParameters.size + index
val argumentsSubList = arguments.subList(index, toIndex)
+14
View File
@@ -0,0 +1,14 @@
// "Make 'IterablePipeline' abstract" "true"
// ERROR: 'pipe' overrides nothing
// ERROR: Type argument expected
// Actually this test is about getting rid of assertion happenning while creating quick fixes
// See KT-10409
interface Pipeline<TPipeline> {
fun pipe(block: Pipeline<TPipeline, String>)
}
<caret>class IterablePipeline<T> : Pipeline<T> {
override fun pipe(block: Pipeline<T>) {
}
}
+14
View File
@@ -0,0 +1,14 @@
// "Make 'IterablePipeline' abstract" "true"
// ERROR: 'pipe' overrides nothing
// ERROR: Type argument expected
// Actually this test is about getting rid of assertion happenning while creating quick fixes
// See KT-10409
interface Pipeline<TPipeline> {
fun pipe(block: Pipeline<TPipeline, String>)
}
abstract class IterablePipeline<T> : Pipeline<T> {
override fun pipe(block: Pipeline<T>) {
}
}
@@ -4853,6 +4853,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
doTest(fileName);
}
@TestMetadata("kt10409.kt")
public void testKt10409() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/kt10409.kt");
doTest(fileName);
}
@TestMetadata("nestedClassNotAllowed.kt")
public void testNestedClassNotAllowed() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt");