From dac522d7a9be20714c2c1f70d7c50a4f1636e120 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 8 Jul 2011 12:09:16 +0200 Subject: [PATCH] use standard generateTypeInfo() call in pushTypeArguments() --- .../org/jetbrains/jet/codegen/ExpressionCodegen.java | 4 +--- .../codegen/typeInfo/forwardTypeParameter.jet | 12 ++++++++++++ .../org/jetbrains/jet/codegen/TypeInfoTest.java | 4 ++++ 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 idea/testData/codegen/typeInfo/forwardTypeParameter.jet 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