From 3e59df95efa9e4be81e45b30ad93f4dee6221339 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 7 Nov 2011 20:04:58 +0300 Subject: [PATCH] IndexOutOfBounds fixed --- .../org/jetbrains/jet/lang/resolve/TypeResolver.java | 10 ++++++++-- .../quick/regressions/OrphanStarProjection.jet | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/checkerWithErrorTypes/quick/regressions/OrphanStarProjection.jet diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java index fd60a354043..0ca6b450603 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java @@ -210,8 +210,14 @@ public class TypeResolver { JetProjectionKind projectionKind = argumentElement.getProjectionKind(); JetType type; if (projectionKind == JetProjectionKind.STAR) { - TypeParameterDescriptor parameterDescriptor = constructor.getParameters().get(i); - arguments.add(TypeUtils.makeStarProjection(parameterDescriptor)); + List parameters = constructor.getParameters(); + if (parameters.size() > i) { + TypeParameterDescriptor parameterDescriptor = parameters.get(i); + arguments.add(TypeUtils.makeStarProjection(parameterDescriptor)); + } + else { + arguments.add(new TypeProjection(Variance.OUT_VARIANCE, ErrorUtils.createErrorType("*"))); + } } else { // TODO : handle the Foo case diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/OrphanStarProjection.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/OrphanStarProjection.jet new file mode 100644 index 00000000000..793153c8348 --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/OrphanStarProjection.jet @@ -0,0 +1,3 @@ +class B {} + +val b : B<*> = 1