From eaf6798684f50a55ada0bebe5817f6ade6ccbb00 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Tue, 24 Jan 2023 20:09:26 +0100 Subject: [PATCH] [SLC] introduce SimpleModifiersBox ^KT-56046 --- .../classes/symbol/modifierLists/LazyModifiersBox.kt | 4 ++-- .../light/classes/symbol/modifierLists/ModifiersBox.kt | 10 ++++++++++ .../classes/symbol/modifierLists/SimpleModifiersBox.kt | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt create mode 100644 analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SimpleModifiersBox.kt diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/LazyModifiersBox.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/LazyModifiersBox.kt index 081af64c0ee..f536296a95c 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/LazyModifiersBox.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/LazyModifiersBox.kt @@ -24,10 +24,10 @@ internal typealias LazyModifiersComputer = (modifier: String) -> Map, private val computer: LazyModifiersComputer, -) { +) : ModifiersBox { private val modifiersMapReference: AtomicReference> = AtomicReference(initialValue.toPersistentHashMap()) - fun hasModifier(modifier: String): Boolean { + override fun hasModifier(modifier: String): Boolean { modifiersMapReference.get()[modifier]?.let { return it } val newValues = computer(modifier) ?: mapOf(modifier to false) modifiersMapReference.updateAndGet { diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt new file mode 100644 index 00000000000..0218863daef --- /dev/null +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.light.classes.symbol.modifierLists + +internal sealed interface ModifiersBox { + fun hasModifier(modifier: String): Boolean +} diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SimpleModifiersBox.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SimpleModifiersBox.kt new file mode 100644 index 00000000000..284065801c6 --- /dev/null +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SimpleModifiersBox.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.light.classes.symbol.modifierLists + +internal class SimpleModifiersBox(private val modifiers: Set) : ModifiersBox { + override fun hasModifier(modifier: String): Boolean = modifier in modifiers +}