Humanize type mismatch diagnostic caused by type projections
#KT-10581 Fixed
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
// !DIAGNOSTICS_NUMBER: 1
|
||||
// !DIAGNOSTICS: MEMBER_PROJECTED_OUT
|
||||
|
||||
fun foo(x: MutableCollection<out CharSequence>) {
|
||||
x.add("")
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
<!-- expectedNothingDueToProjections1 -->
|
||||
Out-projected type 'kotlin.MutableCollection<out kotlin.CharSequence>' prohibits the use of 'public abstract fun add(element: E): kotlin.Boolean defined in kotlin.MutableCollection'
|
||||
@@ -0,0 +1,6 @@
|
||||
// !DIAGNOSTICS_NUMBER: 1
|
||||
// !DIAGNOSTICS: TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS
|
||||
|
||||
fun foo(x: MutableCollection<out CharSequence>, y: MutableCollection<CharSequence>) {
|
||||
x.addAll(y)
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<!-- typeMismatchDueToProjections1 -->
|
||||
<html>
|
||||
Type mismatch.
|
||||
<table>
|
||||
<tr>
|
||||
<td>Required:</td>
|
||||
<td>kotlin.Collection<`kotlin.Nothing></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Found:</td>
|
||||
<td>kotlin.MutableCollection<`kotlin.CharSequence></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
Projected type kotlin.MutableCollection<`out kotlin.CharSequence> restricts use of <br />
|
||||
<b>public</b> <b>abstract</b> <b>fun</b> addAll(elements: kotlin.Collection<`E>): kotlin.Boolean <i>defined in</i> kotlin.MutableCollection
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
// !DIAGNOSTICS_NUMBER: 1
|
||||
// !DIAGNOSTICS: TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS
|
||||
|
||||
interface A<T>
|
||||
interface B<E> {
|
||||
fun foo(x: A<in E>)
|
||||
}
|
||||
|
||||
fun foo(x: B<in CharSequence>, y: A<CharSequence>) {
|
||||
x.foo(y)
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<!-- typeMismatchDueToProjectionsIn1 -->
|
||||
<html>
|
||||
Type mismatch.
|
||||
<table>
|
||||
<tr>
|
||||
<td>Required:</td>
|
||||
<td>A<`kotlin.Any?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Found:</td>
|
||||
<td>A<`kotlin.CharSequence></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
Projected type B<`in kotlin.CharSequence> restricts use of <br />
|
||||
<b>public</b> <b>abstract</b> <b>fun</b> foo(x: A<`in E>): kotlin.Unit <i>defined in</i> B
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
// !DIAGNOSTICS_NUMBER: 1
|
||||
// !DIAGNOSTICS: TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS
|
||||
// !MESSAGE_TYPE: TEXT
|
||||
|
||||
fun foo(x: MutableCollection<out CharSequence>, y: MutableCollection<CharSequence>) {
|
||||
x.addAll(y)
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
<!-- typeMismatchDueToProjectionsTxt1 -->
|
||||
Type mismatch: inferred type is kotlin.MutableCollection<kotlin.CharSequence> but kotlin.Collection<kotlin.Nothing> was expected. Projected type kotlin.MutableCollection<out kotlin.CharSequence> restricts use of public abstract fun addAll(elements: kotlin.Collection<E>): kotlin.Boolean defined in kotlin.MutableCollection
|
||||
Reference in New Issue
Block a user