Report unmet trait requirements in IDE

#KT-3006 Fixed
This commit is contained in:
Nikolay Krasko
2014-08-22 22:34:25 +04:00
parent 679d641a94
commit 186a9a13a8
3 changed files with 23 additions and 0 deletions
@@ -24,6 +24,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.calls.CallsPackage;
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer;
import org.jetbrains.jet.lang.resolve.lazy.LazyImportScope;
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
@@ -246,6 +247,8 @@ public class LazyTopDownAnalyzer {
declarationResolver.checkRedeclarationsInPackages(resolveSession, topLevelFqNames);
declarationResolver.checkRedeclarationsInInnerClassNames(c);
CallsPackage.checkTraitRequirements(c.getDeclaredClasses(), trace);
overrideResolver.check(c);
resolveImportsInAllFiles(c, resolveSession);
@@ -0,0 +1,15 @@
open class Base {
}
trait Derived: Base {
fun foo() {
f1(this@Derived)
}
}
class <error descr="[UNMET_TRAIT_REQUIREMENT] Super trait 'Derived' requires subclasses to extend 'Base'">DerivedImpl()</error>: Derived {}
object <error descr="[UNMET_TRAIT_REQUIREMENT] Super trait 'Derived' requires subclasses to extend 'Base'">ObjectImpl</error>: Derived {}
fun f1(b: Base) = b
// KT-3006
@@ -255,6 +255,11 @@ public class JetPsiCheckerTestGenerated extends AbstractJetPsiCheckerTest {
doTest("idea/testData/checker/trivialHierarchyLoop.kt");
}
@TestMetadata("unmetTraitRequirements.kt")
public void testUnmetTraitRequirements() throws Exception {
doTest("idea/testData/checker/unmetTraitRequirements.kt");
}
@TestMetadata("UnreachableCode.kt")
public void testUnreachableCode() throws Exception {
doTest("idea/testData/checker/UnreachableCode.kt");