Do not throw assertion on recursion in typealias declaration,
return empty list of descriptors instead, allowing for proper error reporting later. #KT-18344 fixed
This commit is contained in:
+1
-1
@@ -50,7 +50,7 @@ protected constructor(
|
|||||||
private val propertyDescriptors: MemoizedFunctionToNotNull<Name, Collection<PropertyDescriptor>> =
|
private val propertyDescriptors: MemoizedFunctionToNotNull<Name, Collection<PropertyDescriptor>> =
|
||||||
storageManager.createMemoizedFunction { doGetProperties(it) }
|
storageManager.createMemoizedFunction { doGetProperties(it) }
|
||||||
private val typeAliasDescriptors: MemoizedFunctionToNotNull<Name, Collection<TypeAliasDescriptor>> =
|
private val typeAliasDescriptors: MemoizedFunctionToNotNull<Name, Collection<TypeAliasDescriptor>> =
|
||||||
storageManager.createMemoizedFunction { doGetTypeAliases(it) }
|
storageManager.createMemoizedFunction( { doGetTypeAliases(it) }, onRecursiveCall = { _,_ -> emptyList() })
|
||||||
|
|
||||||
private val declaredFunctionDescriptors: MemoizedFunctionToNotNull<Name, Collection<SimpleFunctionDescriptor>> =
|
private val declaredFunctionDescriptors: MemoizedFunctionToNotNull<Name, Collection<SimpleFunctionDescriptor>> =
|
||||||
storageManager.createMemoizedFunction { getDeclaredFunctions(it) }
|
storageManager.createMemoizedFunction { getDeclaredFunctions(it) }
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||||
|
|
||||||
|
typealias R<T: List<R>> = List<T>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||||
|
|
||||||
|
typealias R<T: <!BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED!>List<<!UNRESOLVED_REFERENCE!>R<!>><!>> = List<T>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public typealias R</*0*/ T : kotlin.collections.List<[ERROR : R]>> = kotlin.collections.List<T>
|
||||||
Generated
+6
@@ -28653,6 +28653,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/typealias/boundsViolationInTypeAliasRHS.kt");
|
runTest("compiler/testData/diagnostics/tests/typealias/boundsViolationInTypeAliasRHS.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("boundsViolationRecursive.kt")
|
||||||
|
public void testBoundsViolationRecursive() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/typealias/boundsViolationRecursive.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("capturingTypeParametersFromOuterClass.kt")
|
@TestMetadata("capturingTypeParametersFromOuterClass.kt")
|
||||||
public void testCapturingTypeParametersFromOuterClass() throws Exception {
|
public void testCapturingTypeParametersFromOuterClass() throws Exception {
|
||||||
|
|||||||
+6
@@ -28557,6 +28557,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
|||||||
runTest("compiler/testData/diagnostics/tests/typealias/boundsViolationInTypeAliasRHS.kt");
|
runTest("compiler/testData/diagnostics/tests/typealias/boundsViolationInTypeAliasRHS.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("boundsViolationRecursive.kt")
|
||||||
|
public void testBoundsViolationRecursive() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/typealias/boundsViolationRecursive.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("capturingTypeParametersFromOuterClass.kt")
|
@TestMetadata("capturingTypeParametersFromOuterClass.kt")
|
||||||
public void testCapturingTypeParametersFromOuterClass() throws Exception {
|
public void testCapturingTypeParametersFromOuterClass() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user