Fix reporting errors on properties declared in constructors
This commit is contained in:
@@ -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) {
|
||||
|
||||
+3
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user