From ea7732883e39c40f64203aa90a7e26a3425cc492 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 8 Apr 2015 20:53:01 +0300 Subject: [PATCH] Tests: use errors dump instead of ALLOW_UNRESOLVED_REFERENCE --- .../AlreadyImportedExtensions.expected.kt | 4 ++ .../imports/AlreadyImportedExtensions.kt | 1 - .../AlreadyImportedViaStar.expected.kt | 1 + .../copyPaste/imports/ClassMember.expected.kt | 4 ++ .../testData/copyPaste/imports/ClassMember.kt | 2 - .../copyPaste/imports/ClassObject.expected.kt | 1 + .../ClassObjectFunInsideClass.expected.kt | 1 + .../imports/ClassObjectFunInsideClass.kt | 1 - .../copyPaste/imports/Conflict.kt.todo | 2 - .../imports/DefaultPackage.expected.kt | 1 + .../copyPaste/imports/DefaultPackage.kt | 2 - .../copyPaste/imports/DelegatedProperty.kt | 1 + .../DependencyOnKotlinLibrary.expected.kt | 1 + ...onCannotBeImportedOrLengthened.expected.kt | 3 + .../imports/ExtensionConflict.expected.kt | 5 ++ .../imports/FunctionParameter.expected.kt | 3 + .../copyPaste/imports/FunctionParameter.kt | 1 - .../imports/ImportDependency.expected.kt | 1 + .../imports/ImportDirective.expected.kt | 2 - .../copyPaste/imports/ImportDirective.kt | 2 +- .../copyPaste/imports/ImportDirective.to.kt | 2 - ...rtableEntityInExtensionLiteral.expected.kt | 1 + .../imports/ImportedElementCopied.expected.kt | 6 ++ .../imports/ImportedElementCopied.kt | 1 - .../JavaStaticViaClass.dependency.java | 8 +-- .../imports/JavaStaticViaClass.expected.kt | 1 + .../copyPaste/imports/Local.expected.kt | 2 + idea/testData/copyPaste/imports/Local.kt | 2 - .../imports/NoImportForBuiltIns.expected.kt | 4 ++ .../NoImportForSamePackage.expected.kt | 1 + .../ReferencedElementAlsoCopied.expected.kt | 2 + .../copyPaste/imports/Super.expected.kt | 1 + .../imports/TypeParameter.expected.kt | 1 + .../AbstractInsertImportOnPasteTest.kt | 57 +++---------------- .../org/jetbrains/kotlin/idea/testUtils.kt | 12 ++++ ...tractJavaToKotlinConverterMultiFileTest.kt | 5 +- ...ractJavaToKotlinConverterSingleFileTest.kt | 3 +- .../j2k/AbstractJavaToKotlinConverterTest.kt | 8 --- 38 files changed, 76 insertions(+), 80 deletions(-) diff --git a/idea/testData/copyPaste/imports/AlreadyImportedExtensions.expected.kt b/idea/testData/copyPaste/imports/AlreadyImportedExtensions.expected.kt index 5994f129e6b..38a2625d20e 100644 --- a/idea/testData/copyPaste/imports/AlreadyImportedExtensions.expected.kt +++ b/idea/testData/copyPaste/imports/AlreadyImportedExtensions.expected.kt @@ -1,3 +1,7 @@ +// ERROR: Unresolved reference: s +// ERROR: Unresolved reference: s +// ERROR: Unresolved reference: s +// ERROR: Unresolved reference: s fun foo() { s.extensionFun() for (i in s.indices) { diff --git a/idea/testData/copyPaste/imports/AlreadyImportedExtensions.kt b/idea/testData/copyPaste/imports/AlreadyImportedExtensions.kt index 900591ce52d..804b3ce457d 100644 --- a/idea/testData/copyPaste/imports/AlreadyImportedExtensions.kt +++ b/idea/testData/copyPaste/imports/AlreadyImportedExtensions.kt @@ -1,5 +1,4 @@ // RUNTIME -// ALLOW_UNRESOLVED fun foo(s: String) { s.extensionFun() diff --git a/idea/testData/copyPaste/imports/AlreadyImportedViaStar.expected.kt b/idea/testData/copyPaste/imports/AlreadyImportedViaStar.expected.kt index a7713cdab09..4e12f9f268a 100644 --- a/idea/testData/copyPaste/imports/AlreadyImportedViaStar.expected.kt +++ b/idea/testData/copyPaste/imports/AlreadyImportedViaStar.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Type mismatch: inferred type is kotlin.Unit but a.A was expected package to import a.* diff --git a/idea/testData/copyPaste/imports/ClassMember.expected.kt b/idea/testData/copyPaste/imports/ClassMember.expected.kt index 09d75b1e805..dcb2ae2def7 100644 --- a/idea/testData/copyPaste/imports/ClassMember.expected.kt +++ b/idea/testData/copyPaste/imports/ClassMember.expected.kt @@ -1,3 +1,7 @@ +// ERROR: Unresolved reference: c +// ERROR: Unresolved reference: d +// ERROR: Unresolved reference: g +// ERROR: Unresolved reference: j package to fun f() = c + d + g + j() \ No newline at end of file diff --git a/idea/testData/copyPaste/imports/ClassMember.kt b/idea/testData/copyPaste/imports/ClassMember.kt index e5db90d8594..0b1fe5e17e5 100644 --- a/idea/testData/copyPaste/imports/ClassMember.kt +++ b/idea/testData/copyPaste/imports/ClassMember.kt @@ -1,7 +1,5 @@ package a -// ALLOW_UNRESOLVED - class A(val c: Int = 1) { var d = 2 diff --git a/idea/testData/copyPaste/imports/ClassObject.expected.kt b/idea/testData/copyPaste/imports/ClassObject.expected.kt index e741af7b0ea..66cf319567e 100644 --- a/idea/testData/copyPaste/imports/ClassObject.expected.kt +++ b/idea/testData/copyPaste/imports/ClassObject.expected.kt @@ -1,3 +1,4 @@ +// ERROR: A 'return' expression required in a function with a block body ('{...}') package to import a.A diff --git a/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.expected.kt b/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.expected.kt index e873978da6d..f235960b69c 100644 --- a/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.expected.kt +++ b/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Unresolved reference: f package to fun g() { diff --git a/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.kt b/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.kt index 7e4287d5999..04d46273589 100644 --- a/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.kt +++ b/idea/testData/copyPaste/imports/ClassObjectFunInsideClass.kt @@ -1,6 +1,5 @@ package a -// ALLOW_UNRESOLVED //NOTE: is is an unsupported case class A { fun g() { diff --git a/idea/testData/copyPaste/imports/Conflict.kt.todo b/idea/testData/copyPaste/imports/Conflict.kt.todo index dfa36eeaccd..dd3bae84def 100644 --- a/idea/testData/copyPaste/imports/Conflict.kt.todo +++ b/idea/testData/copyPaste/imports/Conflict.kt.todo @@ -1,7 +1,5 @@ package a -// ALLOW_UNRESOLVED - class C { } diff --git a/idea/testData/copyPaste/imports/DefaultPackage.expected.kt b/idea/testData/copyPaste/imports/DefaultPackage.expected.kt index ca65c8c3d22..d965ec2486e 100644 --- a/idea/testData/copyPaste/imports/DefaultPackage.expected.kt +++ b/idea/testData/copyPaste/imports/DefaultPackage.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Unresolved reference: A package to val c = A() \ No newline at end of file diff --git a/idea/testData/copyPaste/imports/DefaultPackage.kt b/idea/testData/copyPaste/imports/DefaultPackage.kt index d3f0f2ef63d..1842999acf0 100644 --- a/idea/testData/copyPaste/imports/DefaultPackage.kt +++ b/idea/testData/copyPaste/imports/DefaultPackage.kt @@ -1,5 +1,3 @@ -// ALLOW_UNRESOLVED - class A { } diff --git a/idea/testData/copyPaste/imports/DelegatedProperty.kt b/idea/testData/copyPaste/imports/DelegatedProperty.kt index 6218560468c..b6514a872f9 100644 --- a/idea/testData/copyPaste/imports/DelegatedProperty.kt +++ b/idea/testData/copyPaste/imports/DelegatedProperty.kt @@ -1,3 +1,4 @@ +// NO_ERRORS_DUMP package a trait T diff --git a/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt b/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt index fef1ed20083..9a2bc1fd344 100644 --- a/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt +++ b/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Type mismatch: inferred type is kotlin.Unit but d.A was expected package to import d.A diff --git a/idea/testData/copyPaste/imports/ExtensionCannotBeImportedOrLengthened.expected.kt b/idea/testData/copyPaste/imports/ExtensionCannotBeImportedOrLengthened.expected.kt index 49dec27c578..091aca19092 100644 --- a/idea/testData/copyPaste/imports/ExtensionCannotBeImportedOrLengthened.expected.kt +++ b/idea/testData/copyPaste/imports/ExtensionCannotBeImportedOrLengthened.expected.kt @@ -1,3 +1,6 @@ +// ERROR: Overload resolution ambiguity: internal fun a.A.ext(): kotlin.Unit defined in a internal fun a.A.ext(): kotlin.Unit defined in to +// ERROR: Overload resolution ambiguity: internal var a.A.p: kotlin.Int defined in a internal var a.A.p: kotlin.Int defined in to +// ERROR: Overload resolution ambiguity: internal var a.A.p: kotlin.Int defined in a internal var a.A.p: kotlin.Int defined in to package to import a.A diff --git a/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt b/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt index 7b10b41d96b..c0d6fb6c916 100644 --- a/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt +++ b/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt @@ -1,3 +1,8 @@ +// ERROR: Overload resolution ambiguity: internal fun a.A.ext(): kotlin.Unit defined in a internal fun a.A.ext(): kotlin.Unit defined in to +// ERROR: Overload resolution ambiguity: internal fun a.A.plus(a: a.A): kotlin.Unit defined in a internal fun a.A.plus(a: a.A): kotlin.Unit defined in to +// ERROR: Overload resolution ambiguity: internal fun a.A.infix(a: a.A): kotlin.Unit defined in a internal fun a.A.infix(a: a.A): kotlin.Unit defined in to +// ERROR: Overload resolution ambiguity: internal fun a.A.minus(): kotlin.Unit defined in a internal fun a.A.minus(): kotlin.Unit defined in to +// ERROR: Overload resolution ambiguity: internal val a.A.p: kotlin.Int defined in a internal val a.A.p: kotlin.Int defined in to package to import a.A diff --git a/idea/testData/copyPaste/imports/FunctionParameter.expected.kt b/idea/testData/copyPaste/imports/FunctionParameter.expected.kt index daa6ecefb12..abefabfd9ee 100644 --- a/idea/testData/copyPaste/imports/FunctionParameter.expected.kt +++ b/idea/testData/copyPaste/imports/FunctionParameter.expected.kt @@ -1,3 +1,6 @@ +// ERROR: Unresolved reference: T +// ERROR: Unresolved reference: b +// ERROR: Unresolved reference: c package to fun f() { diff --git a/idea/testData/copyPaste/imports/FunctionParameter.kt b/idea/testData/copyPaste/imports/FunctionParameter.kt index 7cd38b6e4e6..32c4ec3d150 100644 --- a/idea/testData/copyPaste/imports/FunctionParameter.kt +++ b/idea/testData/copyPaste/imports/FunctionParameter.kt @@ -1,5 +1,4 @@ //RUNTIME -// ALLOW_UNRESOLVED package a diff --git a/idea/testData/copyPaste/imports/ImportDependency.expected.kt b/idea/testData/copyPaste/imports/ImportDependency.expected.kt index fef1ed20083..9a2bc1fd344 100644 --- a/idea/testData/copyPaste/imports/ImportDependency.expected.kt +++ b/idea/testData/copyPaste/imports/ImportDependency.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Type mismatch: inferred type is kotlin.Unit but d.A was expected package to import d.A diff --git a/idea/testData/copyPaste/imports/ImportDirective.expected.kt b/idea/testData/copyPaste/imports/ImportDirective.expected.kt index ceac7e37b58..28551c92171 100644 --- a/idea/testData/copyPaste/imports/ImportDirective.expected.kt +++ b/idea/testData/copyPaste/imports/ImportDirective.expected.kt @@ -1,5 +1,3 @@ -package to - package a import a.A \ No newline at end of file diff --git a/idea/testData/copyPaste/imports/ImportDirective.kt b/idea/testData/copyPaste/imports/ImportDirective.kt index 2bd77823ef5..bb8bb1d3eb9 100644 --- a/idea/testData/copyPaste/imports/ImportDirective.kt +++ b/idea/testData/copyPaste/imports/ImportDirective.kt @@ -1,4 +1,4 @@ -// ALLOW_UNRESOLVED +// NO_ERRORS_DUMP package a diff --git a/idea/testData/copyPaste/imports/ImportDirective.to.kt b/idea/testData/copyPaste/imports/ImportDirective.to.kt index 419295f320c..81389d50841 100644 --- a/idea/testData/copyPaste/imports/ImportDirective.to.kt +++ b/idea/testData/copyPaste/imports/ImportDirective.to.kt @@ -1,3 +1 @@ -package to - \ No newline at end of file diff --git a/idea/testData/copyPaste/imports/ImportableEntityInExtensionLiteral.expected.kt b/idea/testData/copyPaste/imports/ImportableEntityInExtensionLiteral.expected.kt index c93da31508f..ed44cf7e259 100644 --- a/idea/testData/copyPaste/imports/ImportableEntityInExtensionLiteral.expected.kt +++ b/idea/testData/copyPaste/imports/ImportableEntityInExtensionLiteral.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Nested class 'Nested' should be qualified as 'A.Nested' package to import a.ext diff --git a/idea/testData/copyPaste/imports/ImportedElementCopied.expected.kt b/idea/testData/copyPaste/imports/ImportedElementCopied.expected.kt index 713c37fc0fa..fa1bb63cb62 100644 --- a/idea/testData/copyPaste/imports/ImportedElementCopied.expected.kt +++ b/idea/testData/copyPaste/imports/ImportedElementCopied.expected.kt @@ -1,3 +1,9 @@ +// ERROR: Unresolved reference: Inner +// ERROR: Unresolved reference: Nested +// ERROR: Unresolved reference: NestedEnum +// ERROR: Unresolved reference: NestedObj +// ERROR: Unresolved reference: NestedTrait +// ERROR: Unresolved reference: NestedAnnotation package to class Outer { diff --git a/idea/testData/copyPaste/imports/ImportedElementCopied.kt b/idea/testData/copyPaste/imports/ImportedElementCopied.kt index 02842340f7c..c629bab0b23 100644 --- a/idea/testData/copyPaste/imports/ImportedElementCopied.kt +++ b/idea/testData/copyPaste/imports/ImportedElementCopied.kt @@ -1,6 +1,5 @@ package a -// ALLOW_UNRESOLVED //NOTE: This test shows a corner case which is not covered fully by current implementation // All we do now is avoid inserting wrong imports (we do not import anything for declaration from copied block) // To cover this case properly and insert good imports some other approach should be used (some sophisticated heuristic might do the job) diff --git a/idea/testData/copyPaste/imports/JavaStaticViaClass.dependency.java b/idea/testData/copyPaste/imports/JavaStaticViaClass.dependency.java index 4a45143748f..949adaa428f 100644 --- a/idea/testData/copyPaste/imports/JavaStaticViaClass.dependency.java +++ b/idea/testData/copyPaste/imports/JavaStaticViaClass.dependency.java @@ -1,10 +1,10 @@ package a; -class JavaM { - static void staticMethod() { +public class JavaM { + public static void staticMethod() { } } -class JavaF { - static int staticField = 0; +public class JavaF { + public static int staticField = 0; } \ No newline at end of file diff --git a/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt b/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt index b00bde244a5..06560eb2735 100644 --- a/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt +++ b/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Expression 'staticField' of type 'kotlin.Int' cannot be invoked as a function. The function invoke() is not found package to import a.JavaF diff --git a/idea/testData/copyPaste/imports/Local.expected.kt b/idea/testData/copyPaste/imports/Local.expected.kt index ef741e9395a..047b85601ce 100644 --- a/idea/testData/copyPaste/imports/Local.expected.kt +++ b/idea/testData/copyPaste/imports/Local.expected.kt @@ -1,3 +1,5 @@ +// ERROR: Unresolved reference: A +// ERROR: Unresolved reference: g package to fun f() { diff --git a/idea/testData/copyPaste/imports/Local.kt b/idea/testData/copyPaste/imports/Local.kt index ce4b8ea8d8b..521e3974483 100644 --- a/idea/testData/copyPaste/imports/Local.kt +++ b/idea/testData/copyPaste/imports/Local.kt @@ -1,7 +1,5 @@ package a -// ALLOW_UNRESOLVED - fun f() { fun g(): Int { } diff --git a/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt b/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt index 5f848dde305..42c023236ad 100644 --- a/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt +++ b/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt @@ -1,3 +1,7 @@ +// ERROR: Cannot access 'd': it is 'private' in 'a' +// ERROR: Cannot access 'd': it is 'private' in 'a' +// ERROR: Cannot access 'b': it is 'private' in 'a' +// ERROR: Cannot access 'b': it is 'private' in 'a' package to import a.b diff --git a/idea/testData/copyPaste/imports/NoImportForSamePackage.expected.kt b/idea/testData/copyPaste/imports/NoImportForSamePackage.expected.kt index a3238c2e490..9a0e5ade2be 100644 --- a/idea/testData/copyPaste/imports/NoImportForSamePackage.expected.kt +++ b/idea/testData/copyPaste/imports/NoImportForSamePackage.expected.kt @@ -1,3 +1,4 @@ +// ERROR: No value passed for parameter i package a fun f(p: A, t: T) { diff --git a/idea/testData/copyPaste/imports/ReferencedElementAlsoCopied.expected.kt b/idea/testData/copyPaste/imports/ReferencedElementAlsoCopied.expected.kt index 80ff5525c48..7ec846954d6 100644 --- a/idea/testData/copyPaste/imports/ReferencedElementAlsoCopied.expected.kt +++ b/idea/testData/copyPaste/imports/ReferencedElementAlsoCopied.expected.kt @@ -1,3 +1,5 @@ +// ERROR: Type mismatch: inferred type is kotlin.Unit but to.A was expected +// ERROR: Function 'ext' must have a body package to trait T diff --git a/idea/testData/copyPaste/imports/Super.expected.kt b/idea/testData/copyPaste/imports/Super.expected.kt index 4efbdcfd2cd..2f15b3f5125 100644 --- a/idea/testData/copyPaste/imports/Super.expected.kt +++ b/idea/testData/copyPaste/imports/Super.expected.kt @@ -1,3 +1,4 @@ +// ERROR: No supertypes are accessible in this context package to fun f() { diff --git a/idea/testData/copyPaste/imports/TypeParameter.expected.kt b/idea/testData/copyPaste/imports/TypeParameter.expected.kt index 4dde795431f..b27c92f0869 100644 --- a/idea/testData/copyPaste/imports/TypeParameter.expected.kt +++ b/idea/testData/copyPaste/imports/TypeParameter.expected.kt @@ -1,3 +1,4 @@ +// ERROR: Function 'f' must have a body package to import a.A diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractInsertImportOnPasteTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractInsertImportOnPasteTest.kt index 995efd3aac1..818921ce04d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractInsertImportOnPasteTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractInsertImportOnPasteTest.kt @@ -18,26 +18,18 @@ package org.jetbrains.kotlin.idea.codeInsight import com.intellij.openapi.actionSystem.IdeActions import com.intellij.openapi.util.io.FileUtil -import org.jetbrains.kotlin.checkers.DebugInfoUtil -import org.jetbrains.kotlin.diagnostics.DiagnosticUtils -import org.jetbrains.kotlin.diagnostics.Errors -import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages import org.jetbrains.kotlin.idea.AbstractCopyPasteTest import org.jetbrains.kotlin.idea.PluginTestCaseBase -import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully +import org.jetbrains.kotlin.idea.testUtils.dumpTextWithErrors import org.jetbrains.kotlin.psi.JetFile -import org.jetbrains.kotlin.psi.JetReferenceExpression -import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.JetTestUtils import java.io.File -import kotlin.test.fail public abstract class AbstractInsertImportOnPasteTest : AbstractCopyPasteTest() { private val BASE_PATH = PluginTestCaseBase.getTestDataPathBase() + "/copyPaste/imports" private val DEFAULT_TO_FILE_TEXT = "package to\n\n" - private val ALLOW_UNRESOLVED_DIRECTIVE = "// ALLOW_UNRESOLVED" + private val NO_ERRORS_DUMP_DIRECTIVE = "// NO_ERRORS_DUMP" override fun getTestDataPath() = BASE_PATH @@ -61,18 +53,18 @@ public abstract class AbstractInsertImportOnPasteTest : AbstractCopyPasteTest() KotlinCopyPasteReferenceProcessor.declarationsToImportSuggested = emptyList() - val toFileName = testFileName.replace(".kt", ".to.kt") - val toFile = configureToFile(toFileName) + configureToFile(testFileName.replace(".kt", ".to.kt")) performNotWriteEditorAction(IdeActions.ACTION_PASTE) val namesToImportDump = KotlinCopyPasteReferenceProcessor.declarationsToImportSuggested.joinToString("\n") JetTestUtils.assertEqualsToFile(File(path.replace(".kt", ".expected.names")), namesToImportDump) - JetTestUtils.assertEqualsToFile(File(path.replace(".kt", ".expected.kt")), myFixture.getEditor().getDocument().getText()) - - if (!InTextDirectivesUtils.isDirectiveDefined(FileUtil.loadFile(testFile, true), ALLOW_UNRESOLVED_DIRECTIVE)) { - checkNoUnresolvedReferences(toFile) - } + val resultFile = myFixture.getFile() as JetFile + val resultText = if (InTextDirectivesUtils.isDirectiveDefined(FileUtil.loadFile(testFile, true), NO_ERRORS_DUMP_DIRECTIVE)) + resultFile.getText() + else + resultFile.dumpTextWithErrors() + JetTestUtils.assertEqualsToFile(File(path.replace(".kt", ".expected.kt")), resultText) } private fun configureToFile(toFileName: String): JetFile { @@ -96,35 +88,4 @@ public abstract class AbstractInsertImportOnPasteTest : AbstractCopyPasteTest() } } } - - private fun checkNoUnresolvedReferences(file: JetFile) { - val bindingContext = file.analyzeFully() - for (diagnostic in bindingContext.getDiagnostics()) { - if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) { - val textRanges = diagnostic.getTextRanges() - val diagnosticText = DefaultErrorMessages.render(diagnostic) - if (diagnostic.getPsiFile() == file) { - fail(diagnostic.getFactory().getName() + ": " + diagnosticText + " " + DiagnosticUtils.atLocation(file, textRanges.get(0))) - } - } - } - DebugInfoUtil.markDebugAnnotations(file, bindingContext, object : DebugInfoUtil.DebugInfoReporter() { - override fun preProcessReference(expression: JetReferenceExpression) { - expression.analyze(BodyResolveMode.FULL) - } - - override fun reportElementWithErrorType(expression: JetReferenceExpression) { - //do nothing - } - - override fun reportMissingUnresolved(expression: JetReferenceExpression) { - // this may happen if incorrect psi transformations are done - fail(expression.getText() + " is unresolved but not marked " + DiagnosticUtils.atLocation(file, expression.getTextRange())) - } - - override fun reportUnresolvedWithTarget(expression: JetReferenceExpression, target: String) { - //do nothing - } - }) - } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/testUtils.kt b/idea/tests/org/jetbrains/kotlin/idea/testUtils.kt index 59b12a9ecd7..9ceed31be65 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/testUtils.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/testUtils.kt @@ -21,8 +21,12 @@ import com.intellij.openapi.roots.ModifiableRootModel import com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel import com.intellij.testFramework.LightProjectDescriptor import com.intellij.util.Consumer +import org.jetbrains.kotlin.diagnostics.Severity +import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages import org.jetbrains.kotlin.idea.JetStdJSProjectDescriptor import org.jetbrains.kotlin.idea.ProjectDescriptorWithStdlibSources +import org.jetbrains.kotlin.idea.caches.resolve.analyzeFullyAndGetResult +import org.jetbrains.kotlin.psi.JetFile public enum class ModuleKind { KOTLIN_JVM_WITH_STDLIB_SOURCES @@ -53,3 +57,11 @@ public fun Module.configureAs(kind: ModuleKind) { } } +public fun JetFile.dumpTextWithErrors(): String { + val diagnostics = analyzeFullyAndGetResult().bindingContext.getDiagnostics() + val errors = diagnostics.filter { it.getSeverity() == Severity.ERROR } + if (errors.isEmpty()) return getText() + val header = errors.map { "// ERROR: " + DefaultErrorMessages.render(it).replace('\n', ' ') }.joinToString("\n", postfix = "\n") + return header + getText() +} + diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt index fef421acdc5..547eb3784b3 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt @@ -24,6 +24,7 @@ import com.intellij.testFramework.LightPlatformTestCase import org.jetbrains.kotlin.idea.JetWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.idea.j2k.IdeaResolverForConverter import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor +import org.jetbrains.kotlin.idea.testUtils.dumpTextWithErrors import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.JetFile @@ -71,13 +72,13 @@ public abstract class AbstractJavaToKotlinConverterMultiFileTest : AbstractJavaT } for ((i, kotlinFile) in resultFiles.withIndex()) { - JetTestUtils.assertEqualsToFile(expectedResultFile(i), addErrorsDump(kotlinFile)) + JetTestUtils.assertEqualsToFile(expectedResultFile(i), kotlinFile.dumpTextWithErrors()) } for ((externalFile, externalPsiFile) in externalFiles.zip(externalPsiFiles)) { val expectedFile = File(externalFile.getPath() + ".expected") var resultText = if (externalPsiFile is JetFile) { - addErrorsDump(externalPsiFile) + externalPsiFile.dumpTextWithErrors() } else { //TODO: errors dump for java files too diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt index 51b5febb587..576d0eece78 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.idea.JetWithJdkAndRuntimeLightProjectDescriptor import com.intellij.psi.PsiJavaFile import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.idea.j2k.IdeaResolverForConverter +import org.jetbrains.kotlin.idea.testUtils.dumpTextWithErrors public abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotlinConverterTest() { val testHeaderPattern = Pattern.compile("//(element|expression|statement|method|class|file|comp)\n") @@ -80,7 +81,7 @@ public abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJava var actual = reformat(rawConverted, project, reformatInFun) if (prefix == "file") { - actual = addErrorsDump(createKotlinFile(actual)) + actual = createKotlinFile(actual).dumpTextWithErrors() } val kotlinPath = javaPath.replace(".java", ".kt") diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt index f1a673ff194..366a37b79a1 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt @@ -67,13 +67,5 @@ public abstract class AbstractJavaToKotlinConverterTest : LightCodeInsightFixtur protected fun deleteFile(virtualFile: VirtualFile) { runWriteAction { virtualFile.delete(this) } } - - protected fun addErrorsDump(jetFile: JetFile): String { - val diagnostics = jetFile.analyzeFullyAndGetResult().bindingContext.getDiagnostics() - val errors = diagnostics.filter { it.getSeverity() == Severity.ERROR } - if (errors.isEmpty()) return jetFile.getText() - val header = errors.map { "// ERROR: " + DefaultErrorMessages.render(it).replace('\n', ' ') }.joinToString("\n", postfix = "\n") - return header + jetFile.getText() - } }