blob: 467e5e1f5d22ee058e942ad6fd9f9ed51ffd0bf0 [file] [log] [blame]
import java.util.Collection;
import java.util.ArrayList;
interface YO<<warning descr="Type parameter 'T' is never used">T</warning>> {}
interface YO1 extends YO<String> {}
interface YO2 extends YO<Integer> {}
class ConvertibleTest {
YO2 bar (YO1 s) {
return <error descr="Inconvertible types; cannot cast 'YO1' to 'YO2'">(YO2) s</error>;
}
}
//IDEA-1097
interface Interface1 {}
interface Interface2 {}
class Implementation implements Interface1 {}
class InconvertibleTypesTest <E extends Interface2>
{
E thing;
public E getThing() {
return thing;
}
Implementation foo(InconvertibleTypesTest<? extends Interface1> i2) {
//This is a valid cast from intersection type
return (Implementation) i2.getThing();
}
}
class MyCollection extends ArrayList<Integer> {}
class Tester {
Collection<String> x(MyCollection l) {
return <error descr="Inconvertible types; cannot cast 'MyCollection' to 'java.util.Collection<java.lang.String>'">(Collection<String>) l</error>;
}
}
class IDEADEV3978 {
class Constructor<T> {
Class<T> getDeclaringClass() {
return null;
}
}
public static void foo(Constructor<?> constructor) {
if(constructor.getDeclaringClass() == String.class) { //captured wildcard is convertible
System.out.println("yep");
}
}
}
class C2<T> {
void f(T t) {
if (t instanceof Object[]) return;
}
}
class Casting {
void f(Object o)
{
if (o instanceof int[]) return;
Object obj1 = (Object)true; f(obj1);
Object ob = (Number)1; f(ob);
Object ob2 = (Object)1; f(ob2);
}
public static <T> T convert(Class<T> clazz, Object obj) {
if (obj == null) return null;
if (String[].class == clazz)
return <warning descr="Unchecked cast: 'java.lang.String[]' to 'T'">(T) parseArray(obj)</warning>;
return null;
}
private static String[] parseArray(Object obj) {
return obj.toString().split(",");
}
}
class CastPrimitiveToTypeParam<T> {
T foo() {
return <error descr="Inconvertible types; cannot cast 'int' to 'T'">(T)1</error>;
}
}