Fix reporting errors on properties declared in constructors

This commit is contained in:
Andrey Breslav
2014-06-06 12:07:32 +04:00
parent 27f76630e6
commit 6bbc8ea951
3 changed files with 17 additions and 0 deletions
@@ -29,6 +29,8 @@ import org.jetbrains.jet.lang.resolve.java.diagnostics.ConflictingJvmDeclaration
import org.jetbrains.jet.lang.resolve.java.diagnostics.JvmDeclarationOriginKind.*
import org.jetbrains.jet.lang.diagnostics.Errors.*
import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory.*
import org.jetbrains.jet.lang.psi.JetParameter
import org.jetbrains.jet.lang.psi.JetClass
public fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostics): Diagnostics? {
fun doGetDiagnostics(): Diagnostics? {
@@ -36,6 +38,13 @@ public fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Dia
if (element is JetPropertyAccessor) {
parent = parent?.getParent()
}
if (element is JetParameter && element.getValOrVarNode() != null) {
// property declared in constructor
val parentClass = parent?.getParent() as? JetClass
if (parentClass != null) {
return getDiagnosticsForNonLocalClass(parentClass)
}
}
if (parent is JetFile) {
if (element is JetClassOrObject) {
@@ -0,0 +1,3 @@
class C(<!CONFLICTING_JVM_DECLARATIONS!>val x: Int<!>) {
<!CONFLICTING_JVM_DECLARATIONS!>fun getX()<!> = 1
}
@@ -2719,6 +2719,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/functionAndProperty/classObject.kt");
}
@TestMetadata("classPropertyInConstructor.kt")
public void testClassPropertyInConstructor() throws Exception {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/functionAndProperty/classPropertyInConstructor.kt");
}
@TestMetadata("extensionFunctionAndNormalFunction.kt")
public void testExtensionFunctionAndNormalFunction() throws Exception {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/functionAndProperty/extensionFunctionAndNormalFunction.kt");