Skip to content

Commit

Permalink
additional coverage + better tests to cover matrix of 4 accessor modi…
Browse files Browse the repository at this point in the history
…fiers
  • Loading branch information
j-roskopf committed Apr 12, 2024
1 parent 70f3355 commit 0d23625
Show file tree
Hide file tree
Showing 3 changed files with 331 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,19 @@ internal class CodeWriter constructor(
emit(KModifier.PUBLIC.keyword)
emit(" ")
}

// public always being an implicit modifier in addition to whatever we inherited.
// we don't want to throw away the implicit modifier we inherited
val implicitModifierContainsAtLeastTwoAccessMonitors = implicitModifiers.count {
it == KModifier.PUBLIC || it == KModifier.PRIVATE || it == KModifier.INTERNAL || it == KModifier.PROTECTED
} >= 2

val uniqueNonPublicExplicitOnlyModifiers =
modifiers
.filterNot { it == KModifier.PUBLIC }
.filterNot { implicitModifiers.contains(it) }
.filterNot { implicitModifiers.contains(it) && implicitModifierContainsAtLeastTwoAccessMonitors.not() }
.toEnumSet()

for (modifier in uniqueNonPublicExplicitOnlyModifiers) {
emit(modifier.keyword)
emit(" ")
Expand Down Expand Up @@ -652,7 +660,10 @@ internal class CodeWriter constructor(
return false
}

if (implicitModifiers.contains(KModifier.INTERNAL)) {
if ((modifiers.contains(KModifier.INTERNAL) || modifiers.contains(KModifier.PRIVATE) || modifiers.contains(KModifier.PROTECTED)).not() &&
(implicitModifiers.contains(KModifier.INTERNAL) || implicitModifiers.contains(KModifier.PRIVATE) || implicitModifiers.contains(KModifier.PROTECTED))
) {
// omit more permissive modifiers on restricted visibility types as long as a modifier was not explicitly declared
return false
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,8 @@ public class TypeSpec private constructor(
EXPECT in modifiers -> setOf(EXPECT)
EXTERNAL in modifiers -> setOf(EXTERNAL)
INTERNAL in modifiers -> setOf(INTERNAL)
PRIVATE in modifiers -> setOf(PRIVATE)
PROTECTED in modifiers -> setOf(PROTECTED)
else -> emptySet()
}
}
Expand All @@ -456,6 +458,8 @@ public class TypeSpec private constructor(
EXPECT in modifiers -> setOf(EXPECT)
EXTERNAL in modifiers -> setOf(EXTERNAL)
INTERNAL in modifiers -> setOf(INTERNAL)
PRIVATE in modifiers -> setOf(PRIVATE)
PROTECTED in modifiers -> setOf(PROTECTED)
else -> emptySet()
}
}
Expand All @@ -465,6 +469,8 @@ public class TypeSpec private constructor(
EXPECT in modifiers -> setOf(EXPECT)
EXTERNAL in modifiers -> setOf(EXTERNAL)
INTERNAL in modifiers -> setOf(INTERNAL)
PRIVATE in modifiers -> setOf(PRIVATE)
PROTECTED in modifiers -> setOf(PROTECTED)
else -> emptySet()
}
}
Expand Down
Loading

0 comments on commit 0d23625

Please sign in to comment.