diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt index 27f6d277ddf..902a3b288b3 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Modifier.kt @@ -33,7 +33,9 @@ enum class Modifier(val name: String) { val ACCESS_MODIFIERS = setOf(Modifier.PUBLIC, Modifier.PROTECTED, Modifier.PRIVATE) -class Modifiers(val modifiers: Collection) : Element() { +class Modifiers(modifiers: Collection) : Element() { + val modifiers = modifiers.toSet() + override fun generateCode(builder: CodeBuilder) { builder.append(modifiers.sortBy { it.ordinal() }.map { it.toKotlin() }.joinToString(" ")) } @@ -44,10 +46,8 @@ class Modifiers(val modifiers: Collection) : Element() { fun with(modifier: Modifier?): Modifiers = if (modifier != null) Modifiers(modifiers + listOf(modifier)).assignPrototypesFrom(this) else this fun without(modifier: Modifier?): Modifiers { - if (modifier == null) return this - val set = HashSet(modifiers) - set.remove(modifier) - return Modifiers(set).assignPrototypesFrom(this) + if (modifier == null || !modifiers.contains(modifier)) return this + return Modifiers(modifiers.filter { it != modifier }).assignPrototypesFrom(this) } fun contains(modifier: Modifier): Boolean = modifiers.contains(modifier) diff --git a/j2k/tests/testData/fileOrElement/settings/openByDefault.kt b/j2k/tests/testData/fileOrElement/settings/openByDefault.kt index 6390c7849cd..c8fb4b47d8b 100644 --- a/j2k/tests/testData/fileOrElement/settings/openByDefault.kt +++ b/j2k/tests/testData/fileOrElement/settings/openByDefault.kt @@ -1,7 +1,7 @@ // !openByDefault: true open class A { - open open fun foo1() { + open fun foo1() { } private fun foo2() {