[FIR] Add SAFE_CALLABLE_REFERENCE_CALL
^KT-59835
This commit is contained in:
committed by
Space Team
parent
4fed4b6640
commit
c55a7dd038
+6
@@ -3580,6 +3580,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
token,
|
token,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
add(FirErrors.SAFE_CALLABLE_REFERENCE_CALL) { firDiagnostic ->
|
||||||
|
SafeCallableReferenceCallImpl(
|
||||||
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
token,
|
||||||
|
)
|
||||||
|
}
|
||||||
add(FirErrors.LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL) { firDiagnostic ->
|
add(FirErrors.LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL) { firDiagnostic ->
|
||||||
LateinitIntrinsicCallOnNonLiteralImpl(
|
LateinitIntrinsicCallOnNonLiteralImpl(
|
||||||
firDiagnostic as KtPsiDiagnostic,
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
|||||||
+4
@@ -2517,6 +2517,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
|||||||
val kind: String
|
val kind: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface SafeCallableReferenceCall : KtFirDiagnostic<KtExpression> {
|
||||||
|
override val diagnosticClass get() = SafeCallableReferenceCall::class
|
||||||
|
}
|
||||||
|
|
||||||
interface LateinitIntrinsicCallOnNonLiteral : KtFirDiagnostic<PsiElement> {
|
interface LateinitIntrinsicCallOnNonLiteral : KtFirDiagnostic<PsiElement> {
|
||||||
override val diagnosticClass get() = LateinitIntrinsicCallOnNonLiteral::class
|
override val diagnosticClass get() = LateinitIntrinsicCallOnNonLiteral::class
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -3029,6 +3029,11 @@ internal class ExplicitTypeArgumentsInPropertyAccessImpl(
|
|||||||
token: KtLifetimeToken,
|
token: KtLifetimeToken,
|
||||||
) : KtAbstractFirDiagnostic<KtExpression>(firDiagnostic, token), KtFirDiagnostic.ExplicitTypeArgumentsInPropertyAccess
|
) : KtAbstractFirDiagnostic<KtExpression>(firDiagnostic, token), KtFirDiagnostic.ExplicitTypeArgumentsInPropertyAccess
|
||||||
|
|
||||||
|
internal class SafeCallableReferenceCallImpl(
|
||||||
|
firDiagnostic: KtPsiDiagnostic,
|
||||||
|
token: KtLifetimeToken,
|
||||||
|
) : KtAbstractFirDiagnostic<KtExpression>(firDiagnostic, token), KtFirDiagnostic.SafeCallableReferenceCall
|
||||||
|
|
||||||
internal class LateinitIntrinsicCallOnNonLiteralImpl(
|
internal class LateinitIntrinsicCallOnNonLiteralImpl(
|
||||||
firDiagnostic: KtPsiDiagnostic,
|
firDiagnostic: KtPsiDiagnostic,
|
||||||
token: KtLifetimeToken,
|
token: KtLifetimeToken,
|
||||||
|
|||||||
+1
@@ -1232,6 +1232,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
|||||||
val EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS by error<KtExpression>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) {
|
val EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS by error<KtExpression>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) {
|
||||||
parameter<String>("kind")
|
parameter<String>("kind")
|
||||||
}
|
}
|
||||||
|
val SAFE_CALLABLE_REFERENCE_CALL by error<KtExpression>()
|
||||||
|
|
||||||
val LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL by error<PsiElement>()
|
val LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL by error<PsiElement>()
|
||||||
val LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT by error<PsiElement>()
|
val LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT by error<PsiElement>()
|
||||||
|
|||||||
@@ -646,6 +646,7 @@ object FirErrors {
|
|||||||
val LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING: KtDiagnosticFactory0 by warning0<KtProperty>(SourceElementPositioningStrategies.TYPE_PARAMETERS_LIST)
|
val LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING: KtDiagnosticFactory0 by warning0<KtProperty>(SourceElementPositioningStrategies.TYPE_PARAMETERS_LIST)
|
||||||
val LOCAL_VARIABLE_WITH_TYPE_PARAMETERS: KtDiagnosticFactory0 by error0<KtProperty>(SourceElementPositioningStrategies.TYPE_PARAMETERS_LIST)
|
val LOCAL_VARIABLE_WITH_TYPE_PARAMETERS: KtDiagnosticFactory0 by error0<KtProperty>(SourceElementPositioningStrategies.TYPE_PARAMETERS_LIST)
|
||||||
val EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS: KtDiagnosticFactory1<String> by error1<KtExpression, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
val EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS: KtDiagnosticFactory1<String> by error1<KtExpression, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||||
|
val SAFE_CALLABLE_REFERENCE_CALL: KtDiagnosticFactory0 by error0<KtExpression>()
|
||||||
val LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL: KtDiagnosticFactory0 by error0<PsiElement>()
|
val LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL: KtDiagnosticFactory0 by error0<PsiElement>()
|
||||||
val LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT: KtDiagnosticFactory0 by error0<PsiElement>()
|
val LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT: KtDiagnosticFactory0 by error0<PsiElement>()
|
||||||
val LATEINIT_INTRINSIC_CALL_IN_INLINE_FUNCTION: KtDiagnosticFactory0 by error0<PsiElement>()
|
val LATEINIT_INTRINSIC_CALL_IN_INLINE_FUNCTION: KtDiagnosticFactory0 by error0<PsiElement>()
|
||||||
|
|||||||
+1
@@ -432,6 +432,7 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set<String> = setOf(
|
|||||||
"ABSTRACT_PROPERTY_IN_PRIMARY_CONSTRUCTOR_PARAMETERS",
|
"ABSTRACT_PROPERTY_IN_PRIMARY_CONSTRUCTOR_PARAMETERS",
|
||||||
"LOCAL_VARIABLE_WITH_TYPE_PARAMETERS",
|
"LOCAL_VARIABLE_WITH_TYPE_PARAMETERS",
|
||||||
"EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS",
|
"EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS",
|
||||||
|
"SAFE_CALLABLE_REFERENCE_CALL",
|
||||||
"LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL",
|
"LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL",
|
||||||
"LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT",
|
"LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT",
|
||||||
"LATEINIT_INTRINSIC_CALL_IN_INLINE_FUNCTION",
|
"LATEINIT_INTRINSIC_CALL_IN_INLINE_FUNCTION",
|
||||||
|
|||||||
+5
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
|||||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.references.resolved
|
import org.jetbrains.kotlin.fir.references.resolved
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
@@ -28,6 +29,10 @@ object FirCallableReferenceChecker : FirQualifiedAccessExpressionChecker() {
|
|||||||
override fun check(expression: FirQualifiedAccessExpression, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(expression: FirQualifiedAccessExpression, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
if (expression !is FirCallableReferenceAccess) return
|
if (expression !is FirCallableReferenceAccess) return
|
||||||
|
|
||||||
|
if (expression.hasQuestionMarkAtLHS && expression.explicitReceiver !is FirResolvedQualifier) {
|
||||||
|
reporter.reportOn(expression.source, FirErrors.SAFE_CALLABLE_REFERENCE_CALL, context)
|
||||||
|
}
|
||||||
|
|
||||||
// UNRESOLVED_REFERENCE will be reported separately.
|
// UNRESOLVED_REFERENCE will be reported separately.
|
||||||
val reference = expression.calleeReference.resolved ?: return
|
val reference = expression.calleeReference.resolved ?: return
|
||||||
val referredSymbol = reference.resolvedSymbol
|
val referredSymbol = reference.resolvedSymbol
|
||||||
|
|||||||
+2
@@ -569,6 +569,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RETURN_TYPE_MISMA
|
|||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RETURN_TYPE_MISMATCH_BY_DELEGATION
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RETURN_TYPE_MISMATCH_BY_DELEGATION
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RETURN_TYPE_MISMATCH_ON_INHERITANCE
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RETURN_TYPE_MISMATCH_ON_INHERITANCE
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RETURN_TYPE_MISMATCH_ON_OVERRIDE
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.RETURN_TYPE_MISMATCH_ON_OVERRIDE
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SAFE_CALLABLE_REFERENCE_CALL
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SAFE_CALL_WILL_CHANGE_NULLABILITY
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SAFE_CALL_WILL_CHANGE_NULLABILITY
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SEALED_CLASS_CONSTRUCTOR_CALL
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SEALED_CLASS_CONSTRUCTOR_CALL
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SEALED_INHERITOR_IN_DIFFERENT_MODULE
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.SEALED_INHERITOR_IN_DIFFERENT_MODULE
|
||||||
@@ -1980,6 +1981,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
|||||||
map.put(LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING, "Type parameters for local variables are deprecated.")
|
map.put(LOCAL_VARIABLE_WITH_TYPE_PARAMETERS_WARNING, "Type parameters for local variables are deprecated.")
|
||||||
map.put(LOCAL_VARIABLE_WITH_TYPE_PARAMETERS, "Local variables cannot have type parameters.")
|
map.put(LOCAL_VARIABLE_WITH_TYPE_PARAMETERS, "Local variables cannot have type parameters.")
|
||||||
map.put(EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS, "{0} access cannot have explicit type arguments.", STRING)
|
map.put(EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS, "{0} access cannot have explicit type arguments.", STRING)
|
||||||
|
map.put(SAFE_CALLABLE_REFERENCE_CALL, "This syntax is reserved for future releases.")
|
||||||
|
|
||||||
map.put(LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL, "This declaration can only be called on a property literal (e.g. 'Foo::bar').")
|
map.put(LATEINIT_INTRINSIC_CALL_ON_NON_LITERAL, "This declaration can only be called on a property literal (e.g. 'Foo::bar').")
|
||||||
map.put(LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT, "This declaration can only be called on a reference to a 'lateinit' property.")
|
map.put(LATEINIT_INTRINSIC_CALL_ON_NON_LATEINIT, "This declaration can only be called on a reference to a 'lateinit' property.")
|
||||||
|
|||||||
Vendored
+3
-3
@@ -19,9 +19,9 @@ class Test {
|
|||||||
|
|
||||||
fun <T> List<T>.testCallable1(): () -> Unit = a::foo
|
fun <T> List<T>.testCallable1(): () -> Unit = a::foo
|
||||||
fun <T> List<T>.testCallable1a(): () -> Unit = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>a<!><T>::foo
|
fun <T> List<T>.testCallable1a(): () -> Unit = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>a<!><T>::foo
|
||||||
fun <T> List<T>.testCallable2(): () -> Unit = b?::<!UNSAFE_CALL!>foo<!>
|
fun <T> List<T>.testCallable2(): () -> Unit = <!SAFE_CALLABLE_REFERENCE_CALL!>b?::<!UNSAFE_CALL!>foo<!><!>
|
||||||
fun <T> List<T>.testCallable3(): () -> Unit = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><T, Any>::<!UNSAFE_CALL!>foo<!>
|
fun <T> List<T>.testCallable3(): () -> Unit = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><T, Any>::<!UNSAFE_CALL!>foo<!>
|
||||||
fun <T> List<T>.testCallable4(): () -> Unit = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><T>?::<!UNSAFE_CALL!>foo<!>
|
fun <T> List<T>.testCallable4(): () -> Unit = <!SAFE_CALLABLE_REFERENCE_CALL!><!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><T>?::<!UNSAFE_CALL!>foo<!><!>
|
||||||
|
|
||||||
fun <T> List<T>.testClassLiteral1() = a::class
|
fun <T> List<T>.testClassLiteral1() = a::class
|
||||||
fun <T> List<T>.testClassLiteral1a() = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>a<!><T>::class
|
fun <T> List<T>.testClassLiteral1a() = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>a<!><T>::class
|
||||||
@@ -31,5 +31,5 @@ class Test {
|
|||||||
fun <T> List<T>.testUnresolved1() = <!UNRESOLVED_REFERENCE!>unresolved<!><T>::foo
|
fun <T> List<T>.testUnresolved1() = <!UNRESOLVED_REFERENCE!>unresolved<!><T>::foo
|
||||||
fun <T> List<T>.testUnresolved2() = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>a<!><<!UNRESOLVED_REFERENCE!>unresolved<!>>::foo
|
fun <T> List<T>.testUnresolved2() = <!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>a<!><<!UNRESOLVED_REFERENCE!>unresolved<!>>::foo
|
||||||
fun <T> List<T>.testUnresolved3() = a<<!SYNTAX!><!>>::foo
|
fun <T> List<T>.testUnresolved3() = a<<!SYNTAX!><!>>::foo
|
||||||
fun <T> List<T>.testUnresolved4() = <!UNRESOLVED_REFERENCE!>unresolved<!>?::foo
|
fun <T> List<T>.testUnresolved4() = <!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>unresolved<!>?::foo<!>
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -4,4 +4,4 @@ package test
|
|||||||
fun nullableFun(): Int? = null
|
fun nullableFun(): Int? = null
|
||||||
fun Int.foo() {}
|
fun Int.foo() {}
|
||||||
|
|
||||||
val test1 = nullableFun()?::<!UNSAFE_CALL!>foo<!>
|
val test1 = <!SAFE_CALLABLE_REFERENCE_CALL!>nullableFun()?::<!UNSAFE_CALL!>foo<!><!>
|
||||||
|
|||||||
Vendored
+2
-2
@@ -24,6 +24,6 @@ class Test {
|
|||||||
val test1: () -> Right = a.b.c::foo
|
val test1: () -> Right = a.b.c::foo
|
||||||
val test1a: () -> Right = a.<!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><Int>.c::foo
|
val test1a: () -> Right = a.<!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><Int>.c::foo
|
||||||
|
|
||||||
val test2: () -> Right = a.b.c?::foo
|
val test2: () -> Right = <!SAFE_CALLABLE_REFERENCE_CALL!>a.b.c?::foo<!>
|
||||||
val test2a: () -> Right = a.<!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><Int>.c?::foo
|
val test2a: () -> Right = <!SAFE_CALLABLE_REFERENCE_CALL!>a.<!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>b<!><Int>.c?::foo<!>
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+2
-2
@@ -55,7 +55,7 @@ fun rain() {
|
|||||||
a.b.c::foo
|
a.b.c::foo
|
||||||
|
|
||||||
<!EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>a.b.c<!>?::class
|
<!EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>a.b.c<!>?::class
|
||||||
a.b.c?::foo
|
<!SAFE_CALLABLE_REFERENCE_CALL!>a.b.c?::foo<!>
|
||||||
|
|
||||||
<!EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>a.b<!UNNECESSARY_SAFE_CALL!>?.<!>c<!>::class
|
<!EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>a.b<!UNNECESSARY_SAFE_CALL!>?.<!>c<!>::class
|
||||||
a.b<!UNNECESSARY_SAFE_CALL!>?.<!>c::<!UNSAFE_CALL!>foo<!>
|
a.b<!UNNECESSARY_SAFE_CALL!>?.<!>c::<!UNSAFE_CALL!>foo<!>
|
||||||
@@ -70,5 +70,5 @@ fun rain() {
|
|||||||
a.b.maybeC::<!UNSAFE_CALL!>foo<!>
|
a.b.maybeC::<!UNSAFE_CALL!>foo<!>
|
||||||
|
|
||||||
<!EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>a.b.maybeC<!>?::class
|
<!EXPRESSION_OF_NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>a.b.maybeC<!>?::class
|
||||||
a.b.maybeC?::<!UNSAFE_CALL!>foo<!>
|
<!SAFE_CALLABLE_REFERENCE_CALL!>a.b.maybeC?::<!UNSAFE_CALL!>foo<!><!>
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-14
@@ -4,24 +4,24 @@
|
|||||||
fun foo() {}
|
fun foo() {}
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val x1 = <!UNRESOLVED_REFERENCE!>logger<!>::info?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x1 = <!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>::info?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x2 = <!UNRESOLVED_REFERENCE!>logger<!>?::info?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x2 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>?::info<!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x3 = <!UNRESOLVED_REFERENCE!>logger<!>?::info::<!UNRESOLVED_REFERENCE!>print<!>
|
val x3 = <!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>?::info<!>::<!UNRESOLVED_REFERENCE!>print<!>
|
||||||
val x4 = <!UNRESOLVED_REFERENCE!>logger<!>?::info?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x4 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>?::info<!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x5 = <!UNRESOLVED_REFERENCE!>logger<!>::info?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x5 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>::info?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x6 = <!UNRESOLVED_REFERENCE!>logger<!>!!::<!UNRESOLVED_REFERENCE!>info<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x6 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>!!::<!UNRESOLVED_REFERENCE!>info<!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x7 = <!UNRESOLVED_REFERENCE!>logger<!>::info<!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x7 = <!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>::info<!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x8 = <!UNRESOLVED_REFERENCE!>logger<!>?::info<!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x8 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>?::info<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x9 = <!UNRESOLVED_REFERENCE!>logger<!>!!::<!UNRESOLVED_REFERENCE!>info<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x9 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>!!::<!UNRESOLVED_REFERENCE!>info<!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x10 = <!UNRESOLVED_REFERENCE!>logger<!>::info?::<!UNRESOLVED_REFERENCE!>print<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>
|
val x10 = <!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>::info?::<!UNRESOLVED_REFERENCE!>print<!><!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>
|
||||||
val x11 = <!UNRESOLVED_REFERENCE!>logger<!>!!::<!UNRESOLVED_REFERENCE!>info<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>
|
val x11 = <!UNRESOLVED_REFERENCE!>logger<!>!!::<!UNRESOLVED_REFERENCE!>info<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>
|
||||||
val x12 = <!UNRESOLVED_REFERENCE!>logger<!>?::info<!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>
|
val x12 = <!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>?::info<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!><!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>::<!UNRESOLVED_REFERENCE!>print<!>
|
||||||
val x13 = 42?::<!UNRESOLVED_REFERENCE!>unresolved<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x13 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!>42?::<!UNRESOLVED_REFERENCE!>unresolved<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
|
|
||||||
val x14 = <!UNRESOLVED_REFERENCE!>logger<!><!SYNTAX!>?!!::info?::print?::print<!>
|
val x14 = <!UNRESOLVED_REFERENCE!>logger<!><!SYNTAX!>?!!::info?::print?::print<!>
|
||||||
val x15 = <!UNRESOLVED_REFERENCE!>logger<!>::info<!SYNTAX!>?!!::print?::print<!>
|
val x15 = <!UNRESOLVED_REFERENCE!>logger<!>::info<!SYNTAX!>?!!::print?::print<!>
|
||||||
val x16 = <!UNRESOLVED_REFERENCE!>logger<!>!!?::<!UNRESOLVED_REFERENCE!>info<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x16 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>!!?::<!UNRESOLVED_REFERENCE!>info<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
val x17 = <!UNRESOLVED_REFERENCE!>logger<!>::info<!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>?::<!UNRESOLVED_REFERENCE!>print<!>?::<!UNRESOLVED_REFERENCE!>print<!>
|
val x17 = <!SAFE_CALLABLE_REFERENCE_CALL!><!SAFE_CALLABLE_REFERENCE_CALL!><!UNRESOLVED_REFERENCE!>logger<!>::info<!NOT_NULL_ASSERTION_ON_CALLABLE_REFERENCE!>!!<!>?::<!UNRESOLVED_REFERENCE!>print<!><!>?::<!UNRESOLVED_REFERENCE!>print<!><!>
|
||||||
|
|
||||||
// It must be OK
|
// It must be OK
|
||||||
val x18 = String?::hashCode <!USELESS_ELVIS!>?: ::foo<!>
|
val x18 = String?::hashCode <!USELESS_ELVIS!>?: ::foo<!>
|
||||||
|
|||||||
Reference in New Issue
Block a user