Update pattern for finding diagnostics in diagnostic tests

Also use updated diagnostic pattern in TreesCompareTest.
In rare cases diagnostic was cut too early on !> characters,
that were a part of diagnostic parameter:
<!DIAGNOSTIC("Type<DefinitelyNotNullTypeArgument!!>")!>
This commit is contained in:
Pavel Kirpichenkov
2020-02-03 20:29:28 +03:00
parent 4dd794c2d2
commit 75d57c7d3f
4 changed files with 9 additions and 8 deletions
@@ -10,6 +10,7 @@ import com.intellij.openapi.vfs.CharsetToolkit
import com.intellij.testFramework.TestDataPath import com.intellij.testFramework.TestDataPath
import com.intellij.util.PathUtil import com.intellij.util.PathUtil
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest.Companion.DIAGNOSTIC_IN_TESTDATA_PATTERN
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
@@ -77,7 +78,7 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
return@compareBase true return@compareBase true
} }
val notEditedText = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim() val notEditedText = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
val text = notEditedText.replace("(<!>)|(<!.*?!>)".toRegex(), "").replaceAfter(".java", "") val text = notEditedText.replace(DIAGNOSTIC_IN_TESTDATA_PATTERN, "").replaceAfter(".java", "")
//psi //psi
val ktFile = createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.path)), text) as KtFile val ktFile = createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.path)), text) as KtFile
@@ -3,9 +3,9 @@
fun <T : Derived?> test(derived: T) { fun <T : Derived?> test(derived: T) {
<!DEBUG_INFO_EXPRESSION_TYPE("Out<Base>")!>id<Out<Base>>( <!DEBUG_INFO_EXPRESSION_TYPE("Out<Base>")!>id<Out<Base>>(
makeOut( <!DEBUG_INFO_EXPRESSION_TYPE("Out<T!!>")!>makeOut(
<!DEBUG_INFO_EXPRESSION_TYPE("T!!")!>makeDnn(derived)<!> <!DEBUG_INFO_EXPRESSION_TYPE("T!!")!>makeDnn(derived)<!>
) )<!>
)<!> )<!>
<!DEBUG_INFO_EXPRESSION_TYPE("In<Base>")!>id<In<Base>>( <!DEBUG_INFO_EXPRESSION_TYPE("In<Base>")!>id<In<Base>>(
<!DEBUG_INFO_EXPRESSION_TYPE("In<Base>")!>makeIn( <!DEBUG_INFO_EXPRESSION_TYPE("In<Base>")!>makeIn(
@@ -18,9 +18,9 @@ fun <T : Derived?> test(derived: T) {
)<!> )<!>
)<!> )<!>
<!DEBUG_INFO_EXPRESSION_TYPE("In<In<Base>>")!>id<In<In<Base>>>( <!DEBUG_INFO_EXPRESSION_TYPE("In<In<Base>>")!>id<In<In<Base>>>(
makeInIn( <!DEBUG_INFO_EXPRESSION_TYPE("In<In<T!!>>")!>makeInIn(
<!DEBUG_INFO_EXPRESSION_TYPE("T!!")!>makeDnn(derived)<!> <!DEBUG_INFO_EXPRESSION_TYPE("T!!")!>makeDnn(derived)<!>
) )<!>
)<!> )<!>
} }
@@ -30,5 +30,5 @@ val strList: List<String> = null!!
fun main() { fun main() {
val rawB = Test.rawAField.b; val rawB = Test.rawAField.b;
// Raw(A).b is not erased because it have no type parameters // Raw(A).b is not erased because it have no type parameters
var rawInner = rawB.<!INAPPLICABLE_CANDIDATE!>bar<!>(<!UNRESOLVED_REFERENCE!>!<!>", "<!UNRESOLVED_REFERENCE!>List<!><!SYNTAX!><<!><!UNRESOLVED_REFERENCE!>String<!><!SYNTAX!>><!><!SYNTAX!><!>")!>strList)<!SYNTAX, SYNTAX!><!> var rawInner = rawB.<!INAPPLICABLE_CANDIDATE!>bar<!>(strList)
} }
@@ -406,6 +406,8 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
val RENDER_DIAGNOSTICS_MESSAGES = "RENDER_DIAGNOSTICS_MESSAGES" val RENDER_DIAGNOSTICS_MESSAGES = "RENDER_DIAGNOSTICS_MESSAGES"
val DIAGNOSTIC_IN_TESTDATA_PATTERN = Regex("<!>|<!(.*?(\\(\".*?\"\\)|\\(\\))??)+(?<!<)!>")
fun parseDiagnosticFilterDirective( fun parseDiagnosticFilterDirective(
directiveMap: Map<String, String>, directiveMap: Map<String, String>,
allowUnderscoreUsage: Boolean allowUnderscoreUsage: Boolean
@@ -477,8 +479,6 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
) )
} }
private val DIAGNOSTIC_IN_TESTDATA_PATTERN = Regex("(<!>|(<!(.(\".*\")*?)+?!>))")
fun loadTestDataWithoutDiagnostics(file: File): String { fun loadTestDataWithoutDiagnostics(file: File): String {
val textWithoutDiagnostics = KotlinTestUtils.doLoadFile(file).replace(DIAGNOSTIC_IN_TESTDATA_PATTERN, "") val textWithoutDiagnostics = KotlinTestUtils.doLoadFile(file).replace(DIAGNOSTIC_IN_TESTDATA_PATTERN, "")
return StringUtil.convertLineSeparators(textWithoutDiagnostics.trim()).trimTrailingWhitespacesAndAddNewlineAtEOF() return StringUtil.convertLineSeparators(textWithoutDiagnostics.trim()).trimTrailingWhitespacesAndAddNewlineAtEOF()