aboutsummaryrefslogtreecommitdiff
path: root/kotlinpoet
diff options
context:
space:
mode:
authorZac Sweers <zac.sweers@gmail.com>2021-03-29 13:00:45 -0400
committerGitHub <noreply@github.com>2021-03-29 13:00:45 -0400
commit1fb34d16435f562fe8bf32e42a9fc12ece511273 (patch)
treece98bfd36c50362be4cd139f671de204ce07389d /kotlinpoet
parent9f08e67c724c42dd4f856824b05956ddbeba8313 (diff)
downloadkotlinpoet-1fb34d16435f562fe8bf32e42a9fc12ece511273.tar.gz
Omit redundant abstract modifiers on members where possible (#1057)
Diffstat (limited to 'kotlinpoet')
-rw-r--r--kotlinpoet/src/main/java/com/squareup/kotlinpoet/FunSpec.kt5
-rw-r--r--kotlinpoet/src/main/java/com/squareup/kotlinpoet/TypeSpec.kt2
-rw-r--r--kotlinpoet/src/test/java/com/squareup/kotlinpoet/TypeSpecTest.kt27
3 files changed, 25 insertions, 9 deletions
diff --git a/kotlinpoet/src/main/java/com/squareup/kotlinpoet/FunSpec.kt b/kotlinpoet/src/main/java/com/squareup/kotlinpoet/FunSpec.kt
index 9d8561ae..0ab3ea1b 100644
--- a/kotlinpoet/src/main/java/com/squareup/kotlinpoet/FunSpec.kt
+++ b/kotlinpoet/src/main/java/com/squareup/kotlinpoet/FunSpec.kt
@@ -128,8 +128,9 @@ public class FunSpec private constructor(
private fun canNotHaveBody(implicitModifiers: Set<KModifier>) =
ABSTRACT in modifiers || EXPECT in modifiers + implicitModifiers
- private fun canBodyBeOmitted(implicitModifiers: Set<KModifier>) =
- isConstructor || (modifiers + implicitModifiers).containsAnyOf(ABSTRACT, EXTERNAL)
+ private fun canBodyBeOmitted(implicitModifiers: Set<KModifier>) = isConstructor ||
+ EXTERNAL in (modifiers + implicitModifiers) ||
+ ABSTRACT in modifiers
private fun emitSignature(codeWriter: CodeWriter, enclosingName: String?) {
if (isConstructor) {
diff --git a/kotlinpoet/src/main/java/com/squareup/kotlinpoet/TypeSpec.kt b/kotlinpoet/src/main/java/com/squareup/kotlinpoet/TypeSpec.kt
index 44afec06..4e89df5d 100644
--- a/kotlinpoet/src/main/java/com/squareup/kotlinpoet/TypeSpec.kt
+++ b/kotlinpoet/src/main/java/com/squareup/kotlinpoet/TypeSpec.kt
@@ -420,7 +420,7 @@ public class TypeSpec private constructor(
) {
CLASS("class", setOf(PUBLIC), setOf(PUBLIC), setOf()),
OBJECT("object", setOf(PUBLIC), setOf(PUBLIC), setOf()),
- INTERFACE("interface", setOf(PUBLIC), setOf(PUBLIC), setOf());
+ INTERFACE("interface", setOf(PUBLIC, ABSTRACT), setOf(PUBLIC, ABSTRACT), setOf());
internal fun implicitPropertyModifiers(modifiers: Set<KModifier>): Set<KModifier> {
return defaultImplicitPropertyModifiers + when {
diff --git a/kotlinpoet/src/test/java/com/squareup/kotlinpoet/TypeSpecTest.kt b/kotlinpoet/src/test/java/com/squareup/kotlinpoet/TypeSpecTest.kt
index bd03e7ee..7f6d3754 100644
--- a/kotlinpoet/src/test/java/com/squareup/kotlinpoet/TypeSpecTest.kt
+++ b/kotlinpoet/src/test/java/com/squareup/kotlinpoet/TypeSpecTest.kt
@@ -423,7 +423,7 @@ class TypeSpecTest {
| "User-Agent: foobar"
| )
| @POST("/foo/bar")
- | public abstract fun fooBar(
+ | public fun fooBar(
| @Body things: Things<Thing>,
| @QueryMap(encodeValues = false) query: Map<String, String>,
| @Header("Authorization") authorization: String
@@ -1127,7 +1127,7 @@ class TypeSpecTest {
|import kotlin.Unit
|
|public fun interface Taco {
- | public abstract fun sam(): Unit
+ | public fun sam(): Unit
|
| public fun notSam(): Unit {
| }
@@ -1600,7 +1600,7 @@ class TypeSpecTest {
|import kotlin.Unit
|
|public interface Taco {
- | public abstract fun aMethod(): Unit
+ | public fun aMethod(): Unit
|
| public fun aDefaultMethod(): Unit {
| }
@@ -4949,12 +4949,21 @@ class TypeSpecTest {
.addType(
TypeSpec.interfaceBuilder("Taco")
.addProperty("foo", String::class, ABSTRACT)
+ .addProperty(
+ PropertySpec.builder("fooWithDefault", String::class)
+ .initializer("%S", "defaultValue")
+ .build()
+ )
.addFunction(
FunSpec.builder("bar")
.addModifiers(ABSTRACT)
.returns(String::class)
.build()
)
+ .addFunction(
+ FunSpec.builder("barWithDefault")
+ .build()
+ )
.build()
)
.build()
@@ -4964,11 +4973,17 @@ class TypeSpecTest {
package com.squareup.tacos
import kotlin.String
+ import kotlin.Unit
public interface Taco {
- public abstract val foo: String
+ public val foo: String
+
+ public val fooWithDefault: String = "defaultValue"
- public abstract fun bar(): String
+ public fun bar(): String
+
+ public fun barWithDefault(): Unit {
+ }
}
""".trimIndent()
@@ -4976,6 +4991,6 @@ class TypeSpecTest {
}
companion object {
- private val donutsPackage = "com.squareup.donuts"
+ private const val donutsPackage = "com.squareup.donuts"
}
}