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.resolve.java.diagnostics.JvmDeclarationOriginKind.*
|
||||||
import org.jetbrains.jet.lang.diagnostics.Errors.*
|
import org.jetbrains.jet.lang.diagnostics.Errors.*
|
||||||
import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory.*
|
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? {
|
public fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostics): Diagnostics? {
|
||||||
fun doGetDiagnostics(): Diagnostics? {
|
fun doGetDiagnostics(): Diagnostics? {
|
||||||
@@ -36,6 +38,13 @@ public fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Dia
|
|||||||
if (element is JetPropertyAccessor) {
|
if (element is JetPropertyAccessor) {
|
||||||
parent = parent?.getParent()
|
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 (parent is JetFile) {
|
||||||
if (element is JetClassOrObject) {
|
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");
|
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")
|
@TestMetadata("extensionFunctionAndNormalFunction.kt")
|
||||||
public void testExtensionFunctionAndNormalFunction() throws Exception {
|
public void testExtensionFunctionAndNormalFunction() throws Exception {
|
||||||
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/functionAndProperty/extensionFunctionAndNormalFunction.kt");
|
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/functionAndProperty/extensionFunctionAndNormalFunction.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user