diff --git a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt b/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt index 5e2bbd2d7da..55696e8b715 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt @@ -128,7 +128,9 @@ private class CachingSequence(from: Sequence) : Sequence { private var cacheCursor = 0 override fun hasNext(): Boolean = - lock.read { cacheCursor < cache.size } || lock.write { cacheCursor < cache.size || sequenceIterator.hasNext() } + lock.read { cacheCursor < cache.size } + // iterator's hasNext can mutate the iterator's state, therefore write lock is needed + || lock.write { cacheCursor < cache.size || sequenceIterator.hasNext() } override fun next(): T { lock.read {