From 4d4a45f79a2f6fb5311b15f3f387527bf830a1db Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 20 Dec 2011 14:21:45 +0400 Subject: [PATCH] KT-860 ConcurrentModificationException in frontend --- .../inference/ConstraintSystemWithPriorities.java | 2 +- .../diagnostics/tests/regressions/kt860.jet | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/regressions/kt860.jet diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemWithPriorities.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemWithPriorities.java index 3da752a9950..270e5804ff3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemWithPriorities.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemWithPriorities.java @@ -259,7 +259,7 @@ public class ConstraintSystemWithPriorities implements ConstraintSystem { assert constraintQueue.isEmpty() || unsolvedUnknowns.isEmpty() : constraintQueue + " " + unsolvedUnknowns; - for (TypeValue unknown : unsolvedUnknowns) { + for (TypeValue unknown : Sets.newLinkedHashSet(unsolvedUnknowns)) { if (!computeValueFor(unknown)) { listener.error("Not enough data to compute value for ", unknown); solution.registerError("Not enough data to compute value for " + unknown + ". Please, specify type arguments explicitly"); diff --git a/compiler/testData/diagnostics/tests/regressions/kt860.jet b/compiler/testData/diagnostics/tests/regressions/kt860.jet new file mode 100644 index 00000000000..d8acf4fad50 --- /dev/null +++ b/compiler/testData/diagnostics/tests/regressions/kt860.jet @@ -0,0 +1,14 @@ +// KT-860 ConcurrentModificationException in frontend +// +JDK + +namespace std.util + +import java.util.* + +fun > Iterator.to(container: U) : U { + while(hasNext) + container.add(next()) + return container +} + +inline fun Iterator.toArrayList() = to(ArrayList())