[FIR] Add checker for MISSING_DEPENDENCY_CLASS
#KT-59371 Fixed
This commit is contained in:
+7
@@ -415,6 +415,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
token,
|
token,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
add(FirErrors.MISSING_DEPENDENCY_CLASS) { firDiagnostic ->
|
||||||
|
MissingDependencyClassImpl(
|
||||||
|
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
|
||||||
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
token,
|
||||||
|
)
|
||||||
|
}
|
||||||
add(FirErrors.CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS) { firDiagnostic ->
|
add(FirErrors.CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS) { firDiagnostic ->
|
||||||
CreatingAnInstanceOfAbstractClassImpl(
|
CreatingAnInstanceOfAbstractClassImpl(
|
||||||
firDiagnostic as KtPsiDiagnostic,
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
|||||||
+5
@@ -336,6 +336,11 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
|||||||
override val diagnosticClass get() = DuplicateParameterNameInFunctionType::class
|
override val diagnosticClass get() = DuplicateParameterNameInFunctionType::class
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface MissingDependencyClass : KtFirDiagnostic<PsiElement> {
|
||||||
|
override val diagnosticClass get() = MissingDependencyClass::class
|
||||||
|
val type: KtType
|
||||||
|
}
|
||||||
|
|
||||||
interface CreatingAnInstanceOfAbstractClass : KtFirDiagnostic<KtExpression> {
|
interface CreatingAnInstanceOfAbstractClass : KtFirDiagnostic<KtExpression> {
|
||||||
override val diagnosticClass get() = CreatingAnInstanceOfAbstractClass::class
|
override val diagnosticClass get() = CreatingAnInstanceOfAbstractClass::class
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -387,6 +387,12 @@ internal class DuplicateParameterNameInFunctionTypeImpl(
|
|||||||
token: KtLifetimeToken,
|
token: KtLifetimeToken,
|
||||||
) : KtAbstractFirDiagnostic<KtTypeReference>(firDiagnostic, token), KtFirDiagnostic.DuplicateParameterNameInFunctionType
|
) : KtAbstractFirDiagnostic<KtTypeReference>(firDiagnostic, token), KtFirDiagnostic.DuplicateParameterNameInFunctionType
|
||||||
|
|
||||||
|
internal class MissingDependencyClassImpl(
|
||||||
|
override val type: KtType,
|
||||||
|
firDiagnostic: KtPsiDiagnostic,
|
||||||
|
token: KtLifetimeToken,
|
||||||
|
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.MissingDependencyClass
|
||||||
|
|
||||||
internal class CreatingAnInstanceOfAbstractClassImpl(
|
internal class CreatingAnInstanceOfAbstractClassImpl(
|
||||||
firDiagnostic: KtPsiDiagnostic,
|
firDiagnostic: KtPsiDiagnostic,
|
||||||
token: KtLifetimeToken,
|
token: KtLifetimeToken,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
// FILE: J.java
|
// FILE: J.java
|
||||||
public class J {
|
public class J {
|
||||||
public static fun f(Byte x) {}
|
public static void f(Byte x) {}
|
||||||
public static fun f(Integer x) {}
|
public static void f(Integer x) {}
|
||||||
public static fun f(Long x) {}
|
public static void f(Long x) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FILE: x.kt
|
// FILE: x.kt
|
||||||
|
|||||||
+4
@@ -176,6 +176,10 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val DUPLICATE_PARAMETER_NAME_IN_FUNCTION_TYPE by error<KtTypeReference>()
|
val DUPLICATE_PARAMETER_NAME_IN_FUNCTION_TYPE by error<KtTypeReference>()
|
||||||
|
|
||||||
|
val MISSING_DEPENDENCY_CLASS by error<PsiElement>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) {
|
||||||
|
parameter<ConeKotlinType>("type")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val CALL_RESOLUTION by object : DiagnosticGroup("Call resolution") {
|
val CALL_RESOLUTION by object : DiagnosticGroup("Call resolution") {
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ object FirErrors {
|
|||||||
val UNRESOLVED_REFERENCE_WRONG_RECEIVER by error1<PsiElement, Collection<FirBasedSymbol<*>>>()
|
val UNRESOLVED_REFERENCE_WRONG_RECEIVER by error1<PsiElement, Collection<FirBasedSymbol<*>>>()
|
||||||
val UNRESOLVED_IMPORT by error1<PsiElement, String>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
val UNRESOLVED_IMPORT by error1<PsiElement, String>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
||||||
val DUPLICATE_PARAMETER_NAME_IN_FUNCTION_TYPE by error0<KtTypeReference>()
|
val DUPLICATE_PARAMETER_NAME_IN_FUNCTION_TYPE by error0<KtTypeReference>()
|
||||||
|
val MISSING_DEPENDENCY_CLASS by error1<PsiElement, ConeKotlinType>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||||
|
|
||||||
// Call resolution
|
// Call resolution
|
||||||
val CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS by error0<KtExpression>()
|
val CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS by error0<KtExpression>()
|
||||||
|
|||||||
+1
@@ -53,6 +53,7 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set<String> = setOf(
|
|||||||
"UNRESOLVED_REFERENCE_WRONG_RECEIVER",
|
"UNRESOLVED_REFERENCE_WRONG_RECEIVER",
|
||||||
"UNRESOLVED_IMPORT",
|
"UNRESOLVED_IMPORT",
|
||||||
"DUPLICATE_PARAMETER_NAME_IN_FUNCTION_TYPE",
|
"DUPLICATE_PARAMETER_NAME_IN_FUNCTION_TYPE",
|
||||||
|
"MISSING_DEPENDENCY_CLASS",
|
||||||
"CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS",
|
"CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS",
|
||||||
"NO_CONSTRUCTOR",
|
"NO_CONSTRUCTOR",
|
||||||
"FUNCTION_CALL_EXPECTED",
|
"FUNCTION_CALL_EXPECTED",
|
||||||
|
|||||||
+1
@@ -68,6 +68,7 @@ object CommonExpressionCheckers : ExpressionCheckers() {
|
|||||||
FirSpreadOfNullableChecker,
|
FirSpreadOfNullableChecker,
|
||||||
FirAssignmentOperatorCallChecker,
|
FirAssignmentOperatorCallChecker,
|
||||||
FirNamedVarargChecker,
|
FirNamedVarargChecker,
|
||||||
|
FirMissingDependencyClassChecker,
|
||||||
FirUnderscoredTypeArgumentSyntaxChecker,
|
FirUnderscoredTypeArgumentSyntaxChecker,
|
||||||
FirContractNotFirstStatementChecker,
|
FirContractNotFirstStatementChecker,
|
||||||
FirProtectedConstructorNotInSuperCallChecker,
|
FirProtectedConstructorNotInSuperCallChecker,
|
||||||
|
|||||||
+68
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.analysis.checkers.expression
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
|
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
|
import org.jetbrains.kotlin.fir.references.isError
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
|
import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.jetbrains.kotlin.resolve.checkers.MissingDependencyClassChecker
|
||||||
|
*/
|
||||||
|
object FirMissingDependencyClassChecker : FirFunctionCallChecker() {
|
||||||
|
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
|
val calleeReference = expression.calleeReference
|
||||||
|
if (calleeReference.isError()) {
|
||||||
|
// To replicate K1 behavior, MISSING_DEPENDENCY_CLASS errors should still be reported on unsafe calls.
|
||||||
|
// All other callee errors should skip reporting of MISSING_DEPENDENCY_CLASS.
|
||||||
|
val diagnostic = calleeReference.diagnostic
|
||||||
|
if (diagnostic !is ConeInapplicableCandidateError || diagnostic.applicability != CandidateApplicability.UNSAFE_CALL) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun consider(type: ConeKotlinType) {
|
||||||
|
var hasError = false
|
||||||
|
var hasMissingClass = false
|
||||||
|
type.forEachClassLikeType {
|
||||||
|
when (it) {
|
||||||
|
is ConeErrorType -> hasError = true
|
||||||
|
else -> hasMissingClass = hasMissingClass || it.lookupTag.toSymbol(context.session) == null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasMissingClass && !hasError) {
|
||||||
|
reporter.reportOn(expression.source, FirErrors.MISSING_DEPENDENCY_CLASS, type, context)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expression.coneTypeOrNull?.let(::consider)
|
||||||
|
expression.extensionReceiver.takeIf { it !is FirNoReceiverExpression }?.coneTypeOrNull?.let(::consider)
|
||||||
|
expression.argumentList.arguments.forEach { it.coneTypeOrNull?.let(::consider) }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ConeKotlinType.forEachClassLikeType(action: (ConeClassLikeType) -> Unit) {
|
||||||
|
when (this) {
|
||||||
|
is ConeFlexibleType -> {
|
||||||
|
lowerBound.forEachClassLikeType(action)
|
||||||
|
upperBound.forEachClassLikeType(action)
|
||||||
|
}
|
||||||
|
|
||||||
|
is ConeDefinitelyNotNullType -> original.forEachClassLikeType(action)
|
||||||
|
is ConeIntersectionType -> intersectedTypes.forEach { it.forEachClassLikeType(action) }
|
||||||
|
is ConeClassLikeType -> action(this)
|
||||||
|
else -> {} // Ignore all type parameters.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
@@ -360,6 +360,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_LAMBDA_EXPRE
|
|||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISPLACED_TYPE_PARAMETER_CONSTRAINTS
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISPLACED_TYPE_PARAMETER_CONSTRAINTS
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_CONSTRUCTOR_KEYWORD
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_CONSTRUCTOR_KEYWORD
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_DEPENDENCY_CLASS
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_STDLIB_CLASS
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_STDLIB_CLASS
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_VAL_ON_ANNOTATION_PARAMETER
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_VAL_ON_ANNOTATION_PARAMETER
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MIXING_FUNCTIONAL_KINDS_IN_SUPERTYPES
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MIXING_FUNCTIONAL_KINDS_IN_SUPERTYPES
|
||||||
@@ -743,6 +744,13 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
|||||||
TO_STRING,
|
TO_STRING,
|
||||||
TO_STRING,
|
TO_STRING,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
map.put(
|
||||||
|
MISSING_DEPENDENCY_CLASS,
|
||||||
|
"Cannot access class ''{0}''. Check your module classpath for missing or conflicting dependencies.",
|
||||||
|
RENDER_TYPE,
|
||||||
|
)
|
||||||
|
|
||||||
map.put(ASSIGNMENT_IN_EXPRESSION_CONTEXT, "Only expressions are allowed in this context.")
|
map.put(ASSIGNMENT_IN_EXPRESSION_CONTEXT, "Only expressions are allowed in this context.")
|
||||||
map.put(EXPRESSION_EXPECTED, "Only expressions are allowed here.")
|
map.put(EXPRESSION_EXPECTED, "Only expressions are allowed here.")
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -24,4 +24,4 @@ package c
|
|||||||
import a.*
|
import a.*
|
||||||
import b.*
|
import b.*
|
||||||
|
|
||||||
fun test(): <!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!> = d().x()
|
fun test(): <!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!> = d().<!MISSING_DEPENDENCY_CLASS!>x<!>()
|
||||||
|
|||||||
-38
@@ -1,38 +0,0 @@
|
|||||||
// SKIP_JAVAC
|
|
||||||
// FILE: a/B.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class B {}
|
|
||||||
|
|
||||||
// FILE: a/D.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class D {
|
|
||||||
public static class B {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: b/A1.java
|
|
||||||
package b;
|
|
||||||
|
|
||||||
import a.B;
|
|
||||||
import a.D.B;
|
|
||||||
|
|
||||||
public class A1 {
|
|
||||||
public B getB() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: b/A2.java
|
|
||||||
package b;
|
|
||||||
|
|
||||||
import a.*;
|
|
||||||
import a.D.*;
|
|
||||||
|
|
||||||
public class A2 {
|
|
||||||
public B getB() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a.kt
|
|
||||||
package b
|
|
||||||
|
|
||||||
fun test() = A1().getB()
|
|
||||||
fun test2() = A2().getB()
|
|
||||||
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// SKIP_JAVAC
|
// SKIP_JAVAC
|
||||||
// FILE: a/B.java
|
// FILE: a/B.java
|
||||||
package a;
|
package a;
|
||||||
@@ -35,4 +36,4 @@ public class A2 {
|
|||||||
package b
|
package b
|
||||||
|
|
||||||
fun test() = A1().getB()
|
fun test() = A1().getB()
|
||||||
fun test2() = A2().<!MISSING_DEPENDENCY_CLASS!>getB<!>()
|
fun test2() = A2().<!MISSING_DEPENDENCY_CLASS!>getB<!>()
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
// SKIP_JAVAC
|
|
||||||
// FILE: a/A.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class A {
|
|
||||||
public static class B {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/D.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class D {
|
|
||||||
public static class B {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: b/A1.java
|
|
||||||
package b;
|
|
||||||
|
|
||||||
import a.A.B;
|
|
||||||
import a.D.B;
|
|
||||||
|
|
||||||
public class A1 {
|
|
||||||
public B getB() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: b/A2.java
|
|
||||||
package b;
|
|
||||||
|
|
||||||
import a.A.*;
|
|
||||||
import a.D.*;
|
|
||||||
|
|
||||||
public class A2 {
|
|
||||||
public B getB() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a.kt
|
|
||||||
package b
|
|
||||||
|
|
||||||
fun test() = A1().getB()
|
|
||||||
fun test2() = A2().getB()
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// SKIP_JAVAC
|
// SKIP_JAVAC
|
||||||
// FILE: a/A.java
|
// FILE: a/A.java
|
||||||
package a;
|
package a;
|
||||||
|
|||||||
-27
@@ -1,27 +0,0 @@
|
|||||||
// FILE: a/x.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class x {
|
|
||||||
public class Z {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i {
|
|
||||||
public class Z {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/y.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class y extends x implements i {
|
|
||||||
|
|
||||||
public Z getZ() { return null; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: test.kt
|
|
||||||
package a
|
|
||||||
|
|
||||||
fun test() = y().getZ()
|
|
||||||
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// FILE: a/x.java
|
// FILE: a/x.java
|
||||||
package a;
|
package a;
|
||||||
|
|
||||||
@@ -24,4 +25,4 @@ public class y extends x implements i {
|
|||||||
// FILE: test.kt
|
// FILE: test.kt
|
||||||
package a
|
package a
|
||||||
|
|
||||||
fun test() = y().<!MISSING_DEPENDENCY_CLASS!>getZ<!>()
|
fun test() = y().<!MISSING_DEPENDENCY_CLASS!>getZ<!>()
|
||||||
|
|||||||
-30
@@ -1,30 +0,0 @@
|
|||||||
// FILE: a/x.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class x {
|
|
||||||
public class Z {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i {
|
|
||||||
public class Z {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i2.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i2 extends i {}
|
|
||||||
|
|
||||||
// FILE: a/y.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class y extends x implements i2 {
|
|
||||||
public Z getZ() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: test.kt
|
|
||||||
package a
|
|
||||||
|
|
||||||
fun test() = y().getZ()
|
|
||||||
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// FILE: a/x.java
|
// FILE: a/x.java
|
||||||
package a;
|
package a;
|
||||||
|
|
||||||
@@ -27,4 +28,4 @@ public class y extends x implements i2 {
|
|||||||
// FILE: test.kt
|
// FILE: test.kt
|
||||||
package a
|
package a
|
||||||
|
|
||||||
fun test() = y().<!MISSING_DEPENDENCY_CLASS!>getZ<!>()
|
fun test() = y().<!MISSING_DEPENDENCY_CLASS!>getZ<!>()
|
||||||
|
|||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
// FILE: a/i.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i {
|
|
||||||
public class Z {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i2.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i2 {
|
|
||||||
public class Z {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/x.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class x implements i, i2 {
|
|
||||||
public Z getZ() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: test.kt
|
|
||||||
package a
|
|
||||||
|
|
||||||
fun test() = x().getZ()
|
|
||||||
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// FILE: a/i.java
|
// FILE: a/i.java
|
||||||
package a;
|
package a;
|
||||||
|
|
||||||
@@ -22,4 +23,4 @@ public class x implements i, i2 {
|
|||||||
// FILE: test.kt
|
// FILE: test.kt
|
||||||
package a
|
package a
|
||||||
|
|
||||||
fun test() = x().<!MISSING_DEPENDENCY_CLASS!>getZ<!>()
|
fun test() = x().<!MISSING_DEPENDENCY_CLASS!>getZ<!>()
|
||||||
|
|||||||
-47
@@ -1,47 +0,0 @@
|
|||||||
// FILE: a/x.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class x {
|
|
||||||
class O {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/x1.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class x1 extends x {}
|
|
||||||
|
|
||||||
// FILE: a/x2.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class x2 extends x1 {}
|
|
||||||
|
|
||||||
// FILE: a/i.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i {
|
|
||||||
public class O {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i2.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i2 extends i {
|
|
||||||
public class O {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i3.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i3 extends i2 {}
|
|
||||||
|
|
||||||
// FILE: a/test.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class test extends x2 implements i3 {
|
|
||||||
public O getO() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: test.kt
|
|
||||||
package a
|
|
||||||
|
|
||||||
fun test1() = test().getO()
|
|
||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// FILE: a/x.java
|
// FILE: a/x.java
|
||||||
package a;
|
package a;
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
// FILE: a/x.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class x {
|
|
||||||
public class O {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i {
|
|
||||||
public class O {}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/i2.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public interface i2 extends i {
|
|
||||||
public O getO();
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: a/Test.java
|
|
||||||
package a;
|
|
||||||
|
|
||||||
public class Test extends x implements i2 {
|
|
||||||
@Override
|
|
||||||
public O getO() { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILE: test.kt
|
|
||||||
package a
|
|
||||||
|
|
||||||
fun test() = Test().getO()
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// FILE: a/x.java
|
// FILE: a/x.java
|
||||||
package a;
|
package a;
|
||||||
|
|
||||||
@@ -30,4 +31,4 @@ public class Test extends x implements i2 {
|
|||||||
// FILE: test.kt
|
// FILE: test.kt
|
||||||
package a
|
package a
|
||||||
|
|
||||||
fun test() = Test().<!MISSING_DEPENDENCY_CLASS!>getO<!>()
|
fun test() = Test().<!MISSING_DEPENDENCY_CLASS!>getO<!>()
|
||||||
|
|||||||
Vendored
+5
-5
@@ -247,7 +247,7 @@ fun case_4(value_1: Any?) {
|
|||||||
case_4_2(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>)
|
case_4_2(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>)
|
||||||
value_1.toByte()
|
value_1.toByte()
|
||||||
case_4_3(value_1)
|
case_4_3(value_1)
|
||||||
value_1.inv()
|
value_1.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
|
|
||||||
// TESTCASE NUMBER: 5
|
// TESTCASE NUMBER: 5
|
||||||
@@ -340,28 +340,28 @@ fun case_8(value_1: Any?) {
|
|||||||
value_1<!UNNECESSARY_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>toByte<!>()
|
value_1<!UNNECESSARY_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>toByte<!>()
|
||||||
if (case_8_2(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>)) {
|
if (case_8_2(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>)) {
|
||||||
value_1.toByte()
|
value_1.toByte()
|
||||||
if (case_8_3(value_1)) value_1.inv()
|
if (case_8_3(value_1)) value_1.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!case_8_4(value_1)) {
|
if (!case_8_4(value_1)) {
|
||||||
value_1<!UNNECESSARY_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>toByte<!>()
|
value_1<!UNNECESSARY_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>toByte<!>()
|
||||||
if (!case_8_5(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>)) {
|
if (!case_8_5(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>)) {
|
||||||
value_1.toByte()
|
value_1.toByte()
|
||||||
if (!case_8_6(value_1)) value_1.inv()
|
if (!case_8_6(value_1)) value_1.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (case_8_7(value_1) == null) {
|
if (case_8_7(value_1) == null) {
|
||||||
value_1?.<!UNRESOLVED_REFERENCE!>toByte<!>()
|
value_1?.<!UNRESOLVED_REFERENCE!>toByte<!>()
|
||||||
if (case_8_8(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) != null) {
|
if (case_8_8(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) != null) {
|
||||||
value_1<!UNSAFE_CALL!>.<!>toByte()
|
value_1<!UNSAFE_CALL!>.<!>toByte()
|
||||||
if (case_8_9(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) != null) value_1<!UNSAFE_CALL!>.<!>inv()
|
if (case_8_9(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) != null) value_1<!UNSAFE_CALL!>.<!><!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (case_8_10(value_1) != null) {
|
if (case_8_10(value_1) != null) {
|
||||||
value_1?.<!UNRESOLVED_REFERENCE!>toByte<!>()
|
value_1?.<!UNRESOLVED_REFERENCE!>toByte<!>()
|
||||||
if (case_8_11(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) == null) {
|
if (case_8_11(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) == null) {
|
||||||
value_1<!UNSAFE_CALL!>.<!>toByte()
|
value_1<!UNSAFE_CALL!>.<!>toByte()
|
||||||
if (case_8_12(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) == null) value_1<!UNSAFE_CALL!>.<!>inv()
|
if (case_8_12(<!ARGUMENT_TYPE_MISMATCH!>value_1<!>) == null) value_1<!UNSAFE_CALL!>.<!><!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ fun case_1(x: ClassWithCustomEquals) {
|
|||||||
val y = null
|
val y = null
|
||||||
if (<!SENSELESS_COMPARISON!>x == y<!>) {
|
if (<!SENSELESS_COMPARISON!>x == y<!>) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ fun case_1(x: ClassWithCustomEquals) {
|
|||||||
fun case_2(x: ClassWithCustomEquals) {
|
fun case_2(x: ClassWithCustomEquals) {
|
||||||
if (<!SENSELESS_COMPARISON!>x == null<!>) {
|
if (<!SENSELESS_COMPARISON!>x == null<!>) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ fun case_2(x: ClassWithCustomEquals) {
|
|||||||
fun case_3(x: ClassWithCustomEquals, y: Nothing?) {
|
fun case_3(x: ClassWithCustomEquals, y: Nothing?) {
|
||||||
if (<!SENSELESS_COMPARISON!>x == y<!>) {
|
if (<!SENSELESS_COMPARISON!>x == y<!>) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ fun case_4(x: ClassWithCustomEquals) {
|
|||||||
val y = null
|
val y = null
|
||||||
if (<!SENSELESS_COMPARISON!>y == x<!>) {
|
if (<!SENSELESS_COMPARISON!>y == x<!>) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ fun case_4(x: ClassWithCustomEquals) {
|
|||||||
fun case_5(x: ClassWithCustomEquals, y: Nothing?) {
|
fun case_5(x: ClassWithCustomEquals, y: Nothing?) {
|
||||||
if (<!SENSELESS_COMPARISON!>y == x<!>) {
|
if (<!SENSELESS_COMPARISON!>y == x<!>) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ fun case_6(x: ClassWithCustomEquals) {
|
|||||||
val y = null
|
val y = null
|
||||||
if (<!SENSELESS_COMPARISON!>x == y<!> == true) {
|
if (<!SENSELESS_COMPARISON!>x == y<!> == true) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ fun case_6(x: ClassWithCustomEquals) {
|
|||||||
fun case_7(x: ClassWithCustomEquals) {
|
fun case_7(x: ClassWithCustomEquals) {
|
||||||
if ((<!SENSELESS_COMPARISON!>x != null<!>) == false) {
|
if ((<!SENSELESS_COMPARISON!>x != null<!>) == false) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ fun case_7(x: ClassWithCustomEquals) {
|
|||||||
fun case_8(x: ClassWithCustomEquals, y: Nothing?) {
|
fun case_8(x: ClassWithCustomEquals, y: Nothing?) {
|
||||||
if (!(<!SENSELESS_COMPARISON!>y == x<!>) == false) {
|
if (!(<!SENSELESS_COMPARISON!>y == x<!>) == false) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("ClassWithCustomEquals & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
fun case_1(x: Any?) {
|
fun case_1(x: Any?) {
|
||||||
if (x is Nothing) {
|
if (x is Nothing) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ fun case_1(x: Any?) {
|
|||||||
fun case_2(x: Any) {
|
fun case_2(x: Any) {
|
||||||
if (x is Nothing) {
|
if (x is Nothing) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ fun case_2(x: Any) {
|
|||||||
fun case_3(x: Any?) {
|
fun case_3(x: Any?) {
|
||||||
if (x !is Nothing) else {
|
if (x !is Nothing) else {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ fun case_3(x: Any?) {
|
|||||||
fun case_4(x: Any) {
|
fun case_4(x: Any) {
|
||||||
if (x !is Nothing) else {
|
if (x !is Nothing) else {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ fun case_5(x: Any?) {
|
|||||||
fun case_6(x: Any?) {
|
fun case_6(x: Any?) {
|
||||||
if (!(x !is Nothing)) {
|
if (!(x !is Nothing)) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ fun case_6(x: Any?) {
|
|||||||
fun case_7(x: Any) {
|
fun case_7(x: Any) {
|
||||||
if (!(x is Nothing)) else {
|
if (!(x is Nothing)) else {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ fun case_9(x: Any?) {
|
|||||||
fun case_10(x: Any?) {
|
fun case_10(x: Any?) {
|
||||||
if (!!(x !is Nothing)) else {
|
if (!!(x !is Nothing)) else {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
fun case_1(x: Nothing?) {
|
fun case_1(x: Nothing?) {
|
||||||
if (x is Int) {
|
if (x is Int) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing? & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing? & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing? & kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing? & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ fun case_1(x: Nothing?) {
|
|||||||
fun case_2(x: Nothing) {
|
fun case_2(x: Nothing) {
|
||||||
if (<!USELESS_IS_CHECK!>x is Unit<!>) {
|
if (<!USELESS_IS_CHECK!>x is Unit<!>) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing")!>x<!>.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ fun case_7(x: Nothing) {
|
|||||||
fun case_8(x: Nothing?) {
|
fun case_8(x: Nothing?) {
|
||||||
if (!(<!USELESS_IS_CHECK!>x is Int?<!>)) else {
|
if (!(<!USELESS_IS_CHECK!>x is Int?<!>)) else {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing?")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing?")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing?")!>x<!>?.inv()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing?")!>x<!>?.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ fun case_1(x: Any?) {
|
|||||||
fun case_2(x: Any?) {
|
fun case_2(x: Any?) {
|
||||||
(x as Nothing?)!!
|
(x as Nothing?)!!
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!><!UNSAFE_CALL{LT}!>.<!><!UNRESOLVED_REFERENCE{LT}!>inv<!>()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
|
|
||||||
// TESTCASE NUMBER: 3
|
// TESTCASE NUMBER: 3
|
||||||
@@ -40,7 +40,7 @@ fun case_3(x: Any?) {
|
|||||||
fun case_4(x: Any?) {
|
fun case_4(x: Any?) {
|
||||||
if (x as Class? is Class) {
|
if (x as Class? is Class) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & Class")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & Class")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & Class")!>x<!><!UNSAFE_CALL{LT}!>.<!>prop_1
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & Class")!>x<!>.prop_1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ fun case_4(x: Any?) {
|
|||||||
fun case_5(x: Any?) {
|
fun case_5(x: Any?) {
|
||||||
if (x as Nothing? is Nothing) {
|
if (x as Nothing? is Nothing) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!><!UNSAFE_CALL{LT}!>.<!><!UNRESOLVED_REFERENCE{LT}!>inv<!>()
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.Nothing")!>x<!>.<!MISSING_DEPENDENCY_CLASS!>inv<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,14 +56,14 @@ fun case_5(x: Any?) {
|
|||||||
fun case_6(x: Any?) {
|
fun case_6(x: Any?) {
|
||||||
(x as String?)!!
|
(x as String?)!!
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!><!UNSAFE_CALL{LT}!>.<!>length
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!>.length
|
||||||
}
|
}
|
||||||
|
|
||||||
// TESTCASE NUMBER: 7
|
// TESTCASE NUMBER: 7
|
||||||
fun case_7(x: Any?) {
|
fun case_7(x: Any?) {
|
||||||
if (x as String? != null) {
|
if (x as String? != null) {
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!>
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!>
|
||||||
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!><!UNSAFE_CALL{LT}!>.<!>length
|
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & kotlin.String")!>x<!>.length
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user