diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 9eef892f33e..c9374b6dfa7 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -2199,7 +2199,7 @@ public class ExpressionCodegen extends JetVisitor { if(getterDescriptor.getReceiverParameter().exists()) { index++; } - for (TypeParameterDescriptor typeParameterDescriptor : getterDescriptor.getTypeParameters()) { + for (TypeParameterDescriptor typeParameterDescriptor : resolvedGetCall.getCandidateDescriptor().getTypeParameters()) { if(typeParameterDescriptor.isReified()) { generateTypeInfo(resolvedGetCall.getTypeArguments().get(typeParameterDescriptor), null); index++; diff --git a/compiler/testData/codegen/regressions/kt796_797.jet b/compiler/testData/codegen/regressions/kt796_797.jet new file mode 100644 index 00000000000..03ae120b510 --- /dev/null +++ b/compiler/testData/codegen/regressions/kt796_797.jet @@ -0,0 +1,8 @@ +fun Array?.get(i : Int?) = this.sure().get(i.sure()) +fun array(vararg t : T) : Array = t + +fun box() : String { + val a : Array? = array("Str", "Str2") + val i : Int? = 1 + return if(a[i] == "Str2") "OK" else "fail" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/VarArgTest.java b/compiler/tests/org/jetbrains/jet/codegen/VarArgTest.java index e08b515771c..4a68f35e678 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/VarArgTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/VarArgTest.java @@ -74,4 +74,8 @@ public class VarArgTest extends CodegenTestCase { createEnvironmentWithFullJdk(); blackBoxFile("regressions/kt581.jet"); } + + public void testKt797() { + blackBoxFile("regressions/kt796_797.jet"); + } }