diff --git a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 009598833df..462d86f8232 100644 --- a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -16,7 +16,6 @@ import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.types.JetStandardClasses; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeProjection; -import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lexer.JetTokens; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; @@ -1447,8 +1446,7 @@ public class ExpressionCodegen extends JetVisitor { private void pushTypeArguments(JetCall expression) { for (JetTypeProjection jetTypeArgument : expression.getTypeArguments()) { JetType typeArgument = bindingContext.resolveTypeReference(jetTypeArgument.getTypeReference()); - // TODO is the makeNullable() call correct here? - ClassCodegen.newTypeInfo(v, typeArgument.isNullable(), typeMapper.mapType(TypeUtils.makeNullable(typeArgument))); + generateTypeInfo(typeArgument); } } diff --git a/idea/testData/codegen/typeInfo/forwardTypeParameter.jet b/idea/testData/codegen/typeInfo/forwardTypeParameter.jet new file mode 100644 index 00000000000..2e78cd3ae9c --- /dev/null +++ b/idea/testData/codegen/typeInfo/forwardTypeParameter.jet @@ -0,0 +1,12 @@ +class Foo() { } +class Bar() { } + +fun isInstance(obj: Any?) = obj is T + +fun isInstance2(obj: Any?) = isInstance(obj) + +fun box(): String { + if (! isInstance2(Foo())) return "fail 1" + if (isInstance2(Foo())) return "fail 2" + return "OK" +} diff --git a/idea/tests/org/jetbrains/jet/codegen/TypeInfoTest.java b/idea/tests/org/jetbrains/jet/codegen/TypeInfoTest.java index 88db7e87331..e44854c2a09 100644 --- a/idea/tests/org/jetbrains/jet/codegen/TypeInfoTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/TypeInfoTest.java @@ -100,6 +100,10 @@ public class TypeInfoTest extends CodegenTestCase { blackBoxFile("typeInfo/genericFunction.jet"); } + public void testForwardTypeParameter() throws Exception { + blackBoxFile("typeInfo/forwardTypeParameter.jet"); + } + private Runnable newRunnable() { return new Runnable() { @Override