[FE 1.0] Report recursive type checker problem as a warning till 1.9
^KT-48546
This commit is contained in:
committed by
teamcity
parent
2307122089
commit
57a134c543
+6
@@ -8086,6 +8086,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
|||||||
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546.kt");
|
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt48546Strict.kt")
|
||||||
|
public void testKt48546Strict() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546Strict.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("localVariable.kt")
|
@TestMetadata("localVariable.kt")
|
||||||
public void testLocalVariable() throws Exception {
|
public void testLocalVariable() throws Exception {
|
||||||
|
|||||||
+6
@@ -8086,6 +8086,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
|||||||
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546.kt");
|
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt48546Strict.kt")
|
||||||
|
public void testKt48546Strict() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546Strict.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("localVariable.kt")
|
@TestMetadata("localVariable.kt")
|
||||||
public void testLocalVariable() throws Exception {
|
public void testLocalVariable() throws Exception {
|
||||||
|
|||||||
@@ -796,7 +796,8 @@ public interface Errors {
|
|||||||
DiagnosticFactory1<PsiElement, String> NAME_SHADOWING = DiagnosticFactory1.create(WARNING, PositioningStrategies.FOR_REDECLARATION);
|
DiagnosticFactory1<PsiElement, String> NAME_SHADOWING = DiagnosticFactory1.create(WARNING, PositioningStrategies.FOR_REDECLARATION);
|
||||||
DiagnosticFactory0<PsiElement> ACCESSOR_PARAMETER_NAME_SHADOWING = DiagnosticFactory0.create(WARNING);
|
DiagnosticFactory0<PsiElement> ACCESSOR_PARAMETER_NAME_SHADOWING = DiagnosticFactory0.create(WARNING);
|
||||||
|
|
||||||
DiagnosticFactoryForDeprecation0<KtExpression> TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM = DiagnosticFactoryForDeprecation0.create(LanguageFeature.ForbidRecursiveDelegateExpressions);
|
DiagnosticFactoryForDeprecation0<KtExpression> TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM =
|
||||||
|
DiagnosticFactoryForDeprecation0.create(LanguageFeature.ForbidRecursiveDelegateExpressions);
|
||||||
|
|
||||||
// Checking call arguments
|
// Checking call arguments
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -75,7 +75,11 @@ class DiagnosticReporterByTrackingStrategy(
|
|||||||
trace,
|
trace,
|
||||||
(diagnostic as NoValueForParameter).parameterDescriptor
|
(diagnostic as NoValueForParameter).parameterDescriptor
|
||||||
)
|
)
|
||||||
TypeCheckerHasRanIntoRecursion::class.java -> tracingStrategy.recursiveType(trace)
|
TypeCheckerHasRanIntoRecursion::class.java -> {
|
||||||
|
val shouldReportErrorsOnRecursiveTypeInsidePlusAssignment =
|
||||||
|
context.languageVersionSettings.supportsFeature(LanguageFeature.ReportErrorsOnRecursiveTypeInsidePlusAssignment)
|
||||||
|
tracingStrategy.recursiveType(trace, shouldReportErrorsOnRecursiveTypeInsidePlusAssignment)
|
||||||
|
}
|
||||||
InstantiationOfAbstractClass::class.java -> tracingStrategy.instantiationOfAbstractClass(trace)
|
InstantiationOfAbstractClass::class.java -> tracingStrategy.instantiationOfAbstractClass(trace)
|
||||||
AbstractSuperCall::class.java -> {
|
AbstractSuperCall::class.java -> {
|
||||||
val superExpression = (diagnostic as AbstractSuperCall).receiver.psiExpression as? KtSuperExpression
|
val superExpression = (diagnostic as AbstractSuperCall).receiver.psiExpression as? KtSuperExpression
|
||||||
|
|||||||
+9
-2
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||||
|
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory0;
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtilsKt;
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtilsKt;
|
||||||
import org.jetbrains.kotlin.lexer.KtToken;
|
import org.jetbrains.kotlin.lexer.KtToken;
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens;
|
import org.jetbrains.kotlin.lexer.KtTokens;
|
||||||
@@ -138,10 +139,16 @@ public abstract class AbstractTracingStrategy implements TracingStrategy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recursiveType(@NotNull BindingTrace trace) {
|
public void recursiveType(@NotNull BindingTrace trace, boolean shouldReportErrorsOnRecursiveTypeInsidePlusAssignment) {
|
||||||
KtExpression expression = call.getCalleeExpression();
|
KtExpression expression = call.getCalleeExpression();
|
||||||
if (expression == null) return;
|
if (expression == null) return;
|
||||||
trace.report(TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM.getErrorFactory().on(expression));
|
DiagnosticFactory0<KtExpression> factory;
|
||||||
|
if (shouldReportErrorsOnRecursiveTypeInsidePlusAssignment) {
|
||||||
|
factory = TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM.getErrorFactory();
|
||||||
|
} else {
|
||||||
|
factory = TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM.getWarningFactory();
|
||||||
|
}
|
||||||
|
trace.report(factory.on(expression));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.resolve.calls.tasks;
|
package org.jetbrains.kotlin.resolve.calls.tasks;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.kotlin.config.LanguageVersionSettings;
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.psi.Call;
|
import org.jetbrains.kotlin.psi.Call;
|
||||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||||
@@ -82,7 +83,7 @@ public interface TracingStrategy {
|
|||||||
) {}
|
) {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recursiveType(@NotNull BindingTrace trace) {}
|
public void recursiveType(@NotNull BindingTrace trace, boolean shouldReportErrorsOnRecursiveTypeInsidePlusAssignment) {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void instantiationOfAbstractClass(@NotNull BindingTrace trace) {}
|
public void instantiationOfAbstractClass(@NotNull BindingTrace trace) {}
|
||||||
@@ -147,7 +148,7 @@ public interface TracingStrategy {
|
|||||||
@NotNull Collection<? extends ResolvedCall<D>> descriptors
|
@NotNull Collection<? extends ResolvedCall<D>> descriptors
|
||||||
);
|
);
|
||||||
|
|
||||||
void recursiveType(@NotNull BindingTrace trace);
|
void recursiveType(@NotNull BindingTrace trace, boolean shouldReportErrorsOnRecursiveTypeInsidePlusAssignment);
|
||||||
|
|
||||||
void instantiationOfAbstractClass(@NotNull BindingTrace trace);
|
void instantiationOfAbstractClass(@NotNull BindingTrace trace);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -585,7 +585,7 @@ public class ControlStructureTypingUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recursiveType(@NotNull BindingTrace trace) {
|
public void recursiveType(@NotNull BindingTrace trace, boolean shouldReportErrorsOnRecursiveTypeInsidePlusAssignment) {
|
||||||
logError();
|
logError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -273,7 +273,7 @@ class KotlinCallCompleter(
|
|||||||
constraintSystem.errors.forEach(diagnosticsHolder::addError)
|
constraintSystem.errors.forEach(diagnosticsHolder::addError)
|
||||||
|
|
||||||
if (returnType is ErrorType && returnType.kind == ErrorTypeKind.RECURSIVE_TYPE) {
|
if (returnType is ErrorType && returnType.kind == ErrorTypeKind.RECURSIVE_TYPE) {
|
||||||
diagnosticsHolder.addDiagnostic(TypeCheckerHasRanIntoRecursion(resolvedCallAtom))
|
diagnosticsHolder.addDiagnostic(TypeCheckerHasRanIntoRecursion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -116,7 +116,7 @@ class WrongCountOfTypeArguments(
|
|||||||
override fun report(reporter: DiagnosticReporter) = reporter.onTypeArguments(this)
|
override fun report(reporter: DiagnosticReporter) = reporter.onTypeArguments(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
class TypeCheckerHasRanIntoRecursion : KotlinCallDiagnostic(INAPPLICABLE) {
|
object TypeCheckerHasRanIntoRecursion : KotlinCallDiagnostic(INAPPLICABLE) {
|
||||||
override fun report(reporter: DiagnosticReporter) = reporter.onCall(this)
|
override fun report(reporter: DiagnosticReporter) = reporter.onCall(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
// FIR: KT-51648
|
||||||
|
|
||||||
object DelegateTest {
|
object DelegateTest {
|
||||||
var result = ""
|
var result = ""
|
||||||
val f by lazy {
|
val f by lazy {
|
||||||
result += <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>f<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>() // Compiler crash
|
result += <!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: cycle")!>f<!>.toString() // Compiler crash
|
||||||
"hello"
|
"hello"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,7 +12,7 @@ object DelegateTest {
|
|||||||
object DelegateTest2 {
|
object DelegateTest2 {
|
||||||
var result = ""
|
var result = ""
|
||||||
val f by lazy {
|
val f by lazy {
|
||||||
result += <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>f<!>
|
result += <!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: cycle")!>f<!>
|
||||||
"hello"
|
"hello"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
// WITH_STDLIB
|
// WITH_STDLIB
|
||||||
|
// FIR: KT-51648
|
||||||
|
|
||||||
object DelegateTest {
|
object DelegateTest {
|
||||||
var result = ""
|
var result = ""
|
||||||
val f by lazy {
|
val f by lazy {
|
||||||
result += <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>f<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>() // Compiler crash
|
result += <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>f<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>() // Compiler crash
|
||||||
"hello"
|
"hello"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,7 +12,7 @@ object DelegateTest {
|
|||||||
object DelegateTest2 {
|
object DelegateTest2 {
|
||||||
var result = ""
|
var result = ""
|
||||||
val f by lazy {
|
val f by lazy {
|
||||||
result += <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>f<!>
|
result += <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>f<!>
|
||||||
"hello"
|
"hello"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,3 +8,13 @@ public object DelegateTest {
|
|||||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public object DelegateTest2 {
|
||||||
|
private constructor DelegateTest2()
|
||||||
|
public final val f: kotlin.String
|
||||||
|
public final var result: kotlin.String
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// !LANGUAGE: +ReportErrorsOnRecursiveTypeInsidePlusAssignment
|
||||||
|
// WITH_STDLIB
|
||||||
|
// FIR: KT-51648
|
||||||
|
|
||||||
|
object DelegateTest {
|
||||||
|
var result = ""
|
||||||
|
val f by lazy {
|
||||||
|
result += <!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: cycle")!>f<!>.toString() // Compiler crash
|
||||||
|
"hello"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object DelegateTest2 {
|
||||||
|
var result = ""
|
||||||
|
val f by lazy {
|
||||||
|
result += <!DEBUG_INFO_EXPRESSION_TYPE("ERROR CLASS: cycle")!>f<!>
|
||||||
|
"hello"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// !LANGUAGE: +ReportErrorsOnRecursiveTypeInsidePlusAssignment
|
||||||
|
// WITH_STDLIB
|
||||||
|
// FIR: KT-51648
|
||||||
|
|
||||||
|
object DelegateTest {
|
||||||
|
var result = ""
|
||||||
|
val f by lazy {
|
||||||
|
result += <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>f<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>() // Compiler crash
|
||||||
|
"hello"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object DelegateTest2 {
|
||||||
|
var result = ""
|
||||||
|
val f by lazy {
|
||||||
|
result += <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>f<!>
|
||||||
|
"hello"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public object DelegateTest {
|
||||||
|
private constructor DelegateTest()
|
||||||
|
public final val f: kotlin.String
|
||||||
|
public final var result: kotlin.String
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public object DelegateTest2 {
|
||||||
|
private constructor DelegateTest2()
|
||||||
|
public final val f: kotlin.String
|
||||||
|
public final var result: kotlin.String
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
val a by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>a<!>
|
val a by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>a<!>
|
||||||
|
|
||||||
val b by Delegate(<!DEBUG_INFO_MISSING_UNRESOLVED, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>b<!>)
|
val b by Delegate(<!DEBUG_INFO_MISSING_UNRESOLVED, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>b<!>)
|
||||||
|
|
||||||
val c by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, UNINITIALIZED_VARIABLE!>d<!>
|
val c by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, UNINITIALIZED_VARIABLE!>d<!>
|
||||||
val d by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>c<!>
|
val d by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>c<!>
|
||||||
|
|
||||||
class Delegate(i: Int) {
|
class Delegate(i: Int) {
|
||||||
operator fun getValue(t: Any?, p: KProperty<*>): Int {
|
operator fun getValue(t: Any?, p: KProperty<*>): Int {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
object DelegateTest {
|
object DelegateTest {
|
||||||
var result = ""
|
var result = ""
|
||||||
val f by lazy {
|
val f by lazy {
|
||||||
result += <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>f<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>() // Compiler crash
|
result += <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>f<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>() // Compiler crash
|
||||||
"hello"
|
"hello"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,6 @@ suspend fun fib(n: Long) =
|
|||||||
async {
|
async {
|
||||||
when {
|
when {
|
||||||
n < 2 -> n
|
n < 2 -> n
|
||||||
else -> <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!><!DEBUG_INFO_MISSING_UNRESOLVED!>fib<!>(<!DEBUG_INFO_MISSING_UNRESOLVED!>n<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>-<!> 1)<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>await<!>() <!DEBUG_INFO_MISSING_UNRESOLVED!>+<!> <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>fib<!>(n - 2).<!DEBUG_INFO_MISSING_UNRESOLVED!>await<!>()
|
else -> <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!><!DEBUG_INFO_MISSING_UNRESOLVED!>fib<!>(<!DEBUG_INFO_MISSING_UNRESOLVED!>n<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>-<!> 1)<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>await<!>() <!DEBUG_INFO_MISSING_UNRESOLVED!>+<!> <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>fib<!>(n - 2).<!DEBUG_INFO_MISSING_UNRESOLVED!>await<!>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+6
@@ -8092,6 +8092,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546.kt");
|
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt48546Strict.kt")
|
||||||
|
public void testKt48546Strict() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/delegatedProperty/kt48546Strict.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("localVariable.kt")
|
@TestMetadata("localVariable.kt")
|
||||||
public void testLocalVariable() throws Exception {
|
public void testLocalVariable() throws Exception {
|
||||||
|
|||||||
@@ -270,6 +270,7 @@ enum class LanguageFeature(
|
|||||||
ProhibitEnumDeclaringClass(KOTLIN_1_9, kind = BUG_FIX), // KT-49653
|
ProhibitEnumDeclaringClass(KOTLIN_1_9, kind = BUG_FIX), // KT-49653
|
||||||
StopPropagatingDeprecationThroughOverrides(KOTLIN_1_9, kind = BUG_FIX), // KT-47902
|
StopPropagatingDeprecationThroughOverrides(KOTLIN_1_9, kind = BUG_FIX), // KT-47902
|
||||||
ReportTypeVarianceConflictOnQualifierArguments(KOTLIN_1_9, kind = BUG_FIX), // KT-50947
|
ReportTypeVarianceConflictOnQualifierArguments(KOTLIN_1_9, kind = BUG_FIX), // KT-50947
|
||||||
|
ReportErrorsOnRecursiveTypeInsidePlusAssignment(KOTLIN_1_9, kind = BUG_FIX), // KT-48546
|
||||||
|
|
||||||
// Disabled for indefinite time. See KT-48535 and related discussion
|
// Disabled for indefinite time. See KT-48535 and related discussion
|
||||||
ApproximateIntegerLiteralTypesInReceiverPosition(sinceVersion = null),
|
ApproximateIntegerLiteralTypesInReceiverPosition(sinceVersion = null),
|
||||||
|
|||||||
Reference in New Issue
Block a user