AbstractFirPsiCheckerTest: do partial error diagnostic comparison for some cases
This commit is contained in:
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun <T> checkSubtype(t: T) = t
|
||||
|
||||
fun test() : Unit {
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun <T> foo<error><SOME_TYPE></error> () {}
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// LANGUAGE_VERSION: 1.4
|
||||
|
||||
fun main(<warning descr="[UNUSED_PARAMETER] Parameter 'args' is never used">args</warning>: Array<String>) {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// LANGUAGE_VERSION: 1.3
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
sealed <warning descr="[REDUNDANT_MODIFIER] Modifier 'abstract' is redundant because 'sealed' is present">abstract</warning> class First
|
||||
|
||||
<warning descr="[REDUNDANT_MODIFIER] Modifier 'abstract' is redundant because 'sealed' is present">abstract</warning> sealed class Second
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
package a
|
||||
|
||||
import java.*
|
||||
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun test(<warning textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES">unusedParam</warning>: Int) { // UNUSED_PARAMETER
|
||||
val str = ":)"
|
||||
str <warning textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES">as String</warning> // USELESS_CAST
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// KT-3750 When without else
|
||||
|
||||
enum class A {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
package a.b
|
||||
|
||||
class String
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class C {
|
||||
<error>val x</error> = 1
|
||||
<error>fun getX()</error> = 1
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class C {
|
||||
companion object {
|
||||
<error>val x</error> = 1
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun foo() {
|
||||
class C {
|
||||
<error>val x</error> = 1
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class B {
|
||||
class C {
|
||||
<error>val x</error> = 1
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
object C {
|
||||
<error>val x</error> = 1
|
||||
<error>fun getX()</error> = 1
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun foo() =
|
||||
object {
|
||||
<error>val x</error> = 1
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
<error>val x</error> = 1
|
||||
<error>fun getX()</error> = 1
|
||||
Vendored
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// RUNTIME
|
||||
@file:JvmName("TopLevelMultifile")
|
||||
@file:JvmMultifileClass
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
interface T {
|
||||
<error descr="[CONFLICTING_JVM_DECLARATIONS] Platform declaration clash: The following declarations have the same JVM signature (foo(Ljava/util/List;)V):
|
||||
fun foo(l: List<Int>): Unit defined in T
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun baz(s: String?): Int {
|
||||
return if (s == null) {
|
||||
""
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// COMPILER_ARGUMENTS: -XXLanguage:-NewInference
|
||||
|
||||
fun baz(s: String?): Int {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// See KT-15901
|
||||
|
||||
<info>enum</info> class En { A }
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
package test2
|
||||
|
||||
<info descr="null">enum</info> class En { A, B, С }
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
interface A {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun refs() {
|
||||
var <warning>a</warning> = 1
|
||||
val <warning>v</warning> = {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
interface I1
|
||||
interface I2
|
||||
interface I3
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// COMPILER_ARGUMENTS: -XXLanguage:-NewInference
|
||||
|
||||
fun foo(s: String) = s.length
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun test() {
|
||||
var a : Any? = null
|
||||
if (a is Any) else a = null;
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
String.class<EOLError descr="Name expected"></EOLError>
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class A
|
||||
|
||||
fun f() {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class A
|
||||
|
||||
fun f() {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
val p = 1 < <error>class A {
|
||||
fun f() {
|
||||
f()
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun g() = 1 < <error>class A</error>
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun f(<warning>i</warning>: Int = 3 < <error>class A {
|
||||
fun f() {
|
||||
f()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
data class XY(val x: Int, val y: Int)
|
||||
|
||||
fun convert(xy: XY, f: (XY) -> Int) = f(xy)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class `A$B` {
|
||||
class `$$$` {
|
||||
class `$`
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun <K, V> intercept(<warning>block</warning>: (key: K, next: (K) -> V, K) -> V) {
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun foo1() : (Int) -> Int = { x: Int -> x }
|
||||
|
||||
fun foo() {
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun set(<warning>key</warning> : String, <warning>value</warning> : String) {
|
||||
val a : String? = ""
|
||||
when (a) {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
enum class ProtocolState {
|
||||
WAITING {
|
||||
override fun signal() = ProtocolState.TALKING
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
enum class ProtocolState {
|
||||
WAITING {
|
||||
override fun signal() = ProtocolState.TALKING
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
import java.util.Collections
|
||||
|
||||
fun <T> checkSubtype(t: T) = t
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
abstract class XXX {
|
||||
abstract val a : Int get
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class Foo()
|
||||
|
||||
fun test() {
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
class Command() {}
|
||||
|
||||
fun parse(<warning>cmd</warning>: String): Command? { return null }
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
// JET-72 Type inference doesn't work when iterating over ArrayList
|
||||
|
||||
import java.util.ArrayList
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun box() {
|
||||
val a : C = C()
|
||||
a.foo()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun <T> checkSubtype(t: T) = t
|
||||
|
||||
class Foo(var bar : Int, var barr : Int, var barrr : Int) {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
fun Any.<warning>equals</warning>(<warning>other</warning> : Any?) : Boolean = true
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
interface Bar {
|
||||
fun <T> T.bar() {}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// FIR_COMPARISON
|
||||
|
||||
interface A
|
||||
|
||||
open class B(<warning>i</warning>: Int, <warning>a</warning>: A)
|
||||
|
||||
@@ -9,6 +9,8 @@ import com.intellij.rt.execution.junit.FileComparisonFailure
|
||||
import org.jetbrains.kotlin.idea.fir.FirResolution
|
||||
import org.jetbrains.kotlin.idea.test.configureCompilerOptions
|
||||
import org.jetbrains.kotlin.idea.test.rollbackCompilerOptions
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractFirPsiCheckerTest : AbstractPsiCheckerTest() {
|
||||
override fun setUp() {
|
||||
@@ -28,11 +30,17 @@ abstract class AbstractFirPsiCheckerTest : AbstractPsiCheckerTest() {
|
||||
): Long {
|
||||
val file = file
|
||||
val configured = configureCompilerOptions(file.text, project, module)
|
||||
val doComparison = InTextDirectivesUtils.isDirectiveDefined(myFixture.file.text, "FIR_COMPARISON")
|
||||
return try {
|
||||
myFixture.checkHighlighting(checkWarnings, checkInfos, checkWeakWarnings)
|
||||
} catch (e: FileComparisonFailure) {
|
||||
// NB: yet we do not actually compare highlighting
|
||||
0
|
||||
if (doComparison) {
|
||||
// Even this is very partial check (only error compatibility, no warnings / infos)
|
||||
throw FileComparisonFailure(e.message, e.expected, e.actual, File(e.filePath).absolutePath)
|
||||
} else {
|
||||
// Here we just check that we haven't crashed due to exception
|
||||
0
|
||||
}
|
||||
} finally {
|
||||
if (configured) {
|
||||
rollbackCompilerOptions(project, module)
|
||||
|
||||
Reference in New Issue
Block a user