diff options
author | Zac Sweers <zac.sweers@gmail.com> | 2021-03-29 13:00:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-29 13:00:45 -0400 |
commit | 1fb34d16435f562fe8bf32e42a9fc12ece511273 (patch) | |
tree | ce98bfd36c50362be4cd139f671de204ce07389d /kotlinpoet | |
parent | 9f08e67c724c42dd4f856824b05956ddbeba8313 (diff) | |
download | kotlinpoet-1fb34d16435f562fe8bf32e42a9fc12ece511273.tar.gz |
Omit redundant abstract modifiers on members where possible (#1057)
Diffstat (limited to 'kotlinpoet')
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" } } |