From 01f2a21192d28b7000a59985820e020892b7a06d Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Mon, 7 Jan 2019 11:48:05 +0100 Subject: [PATCH] [minor] add comment to the "Fix locking in script definition provider" commit --- .../jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 {