unplugged-system/external/kotlinpoet/docs/changelog.md

589 lines
25 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Change Log
==========
## Version 1.12.0
_2022-06-13_
Thanks to [@WhosNickDoglio][WhosNickDoglio], [@sullis][sullis], [@DRSchlaubi][DRSchlaubi],
[@martinbonnin][martinbonnin], [@seriouslyhypersonic][seriouslyhypersonic], [@ephemient][ephemient],
[@dkilmer][dkilmer], [@aksh1618][aksh1618], [@zsqw123][zsqw123], [@roihershberg][roihershberg] for
contributing to this release.
* New: Kotlin 1.7.0.
* New: Add support for context receivers.
* New: Add support for external property getter.
* New: `interop-ksp` API promoted to stable.
* Fix: Resolve enum constants when emitting types.
* Fix: Fix type argument mapping when processing typealiases with KSP.
* Fix: Properly unwrap `KSTypeAlias` with an unused type parameter.
* Fix: Unwrap nested `KSTypeAlias`-es recursively.
* Fix: Add support for context receivers `@PropertySpec` and fix issues with annotations.
* Fix: Treat `header` and `impl` as keywords (workaround for KT-52315).
* Fix: Use `%N` instead of `%L` for annotation arg names so keywords are handled.
* Fix: Improve handling of long `return` expressions.
## Version 1.11.0
_2022-03-24_
Thanks to [@liujingxing][liujingxing] and [@BoD][BoD] for contributing to this release.
* New: Kotlin scripting support in `FileSpec`.
```kotlin
val spec = FileSpec.scriptBuilder("Taco")
.addStatement("println(%S)", "hello world!")
.addKotlinDefaultImports()
.build()
```
Generates a `Taco.kts` file with the following contents:
```kotlin
println("hello world!")
```
* New: Emit trailing commas for multi-line parameters and annotations.
* New: Add `KSAnnotation.toAnnotationSpec()`.
* New: Add `Unit` and `CharSequence` conversions in `javapoet-interop`.
* New: Add support for default imports in `FileSpec`.
* This is particularly oriented at scripting support, but can also be used in non-script files.
* New: Update to Kotlin 1.6.10.
* Fix: Fail compilation if you only pass one string to `ClassName`.
* Fix: Inline `val` property if its getter is `inline`.
* Fix: Add `yield` to the list of reserved keywords.
* Fix: Enforce only allowed parameter modifiers in `ParameterSpec` (i.e. `crossinline`, `vararg`, and `noinline`).
* Fix: Fix `CodeBlock`s in class delegation getting `toString()`'d instead of participating in code writing.
* Fix: Error when attempting to convert KSP error types (i.e. if `KSType.isError` is true) to `TypeName`.
## Version 1.10.2
_2021-10-22_
Thanks to [@glureau][glureau] and [@goooler][goooler] for contributing to this release.
* New: Switch `AnnotationSpec.get()` to use the `arrayOf()` syntax instead of `[]`.
* Fix: Don't wrap aliasing imports with long package names.
* Fix: Don't wrap type names inside line comments.
* Fix: Ignore Java's `@Deprecated` annotations on synthetic methods for annotations.
## Version 1.10.1
_2021-09-21_
Thanks to [@evant][evant] for contributing to this release.
* Fix: Correct generation of typealiases with type args in KSP interop.
* Fix: Add missing default `TypeParameterResolver.EMPTY` argument to
`fun KSTypeArgument.toTypeName` in KSP interop.
## Version 1.10.0
_2021-09-20_
Thanks to [@martinbonnin][martinbonnin], [@idanakav][idanakav], [@goooler][goooler], and
[@anandwana001][anandwana001] for contributing to this release.
* New: Add a new [KSP][ksp] interop artifact. See [docs][ksp-interop-docs] for more details.
* New: Add a new [JavaPoet][javapoet] interop artifact. See [docs][javapoet-interop-docs] for more
details.
* New: Allow copying a `ParameterizedTypeName` with new type arguments via new `copy()` overload.
* kotlinx-metadata artifacts have been consolidated to a single `com.squareup:kotlinpoet-metadata`
maven artifact. The previous `kotlinpoet-metadata-*` subartifacts are no longer published.
* New: `TypeNameAliasTag` has been moved to KotlinPoet's main artifact under `TypeAliasTag`, for
reuse with KSP interop.
* `ImmutableKm*` classes have been removed. They were deemed to be a needless abstraction over the base `kotlinx-metadata` Km types. All usages of these should be substituted with their non-immutable base types.
* Fix: Fix self-referencing type variables in metadata parsing.
* Fix: Use delicate APIs rather than noisy logging ones when converting annotation mirrors in
`AnnotationSpec.get`.
* Fix: Update error message when metadata cannot be read to a more actionable one.
* Fix: Avoid escaping already escaped strings.
* Add docs about `kotlin-reflect` usage.
* Avoid using kotlin-reflect for looking up `Unit` types where possible.
* Test all the way up to JDK 17.
* Update Kotlin to 1.5.31.
## Version 1.9.0
_2021-06-22_
* New: Kotlin 1.5.10.
* New: Previously deprecated API to interop with Java reflection and Mirror API have been
un-deprecated and marked with `@DelicateKotlinPoetApi` annotation.
* New: `CodeBlock.Builder.withIndent` helper function.
* New: Allow changing initializers and default values in `ParameterSpec.Builder` and
`PropertySpec.Builder` after they were set.
* New: `MemberName.isExtension` property that instructs KotlinPoet to always import the member,
even if conflicting declarations are present in the same scope.
* Fix: Escape member names that only contain underscores.
* Fix: Always emit an empty primary constructor if it was set via `TypeSpec.primaryConstructor`.
## Version 1.8.0
_2021-03-29_
* New: Kotlin 1.4.31.
* New: Add `KModifier.VALUE` to support `value class` declarations.
* New: Allow using a custom `ClassLoader` with `ReflectiveClassInspector`.
* New: Update to kotlinx-metadata 0.2.0.
* Fix: Ensure `ImmutableKmProperty.toMutable()` copies `fieldSignature`.
* Fix: Prevent name clashes between an imported `MemberName` and a member in current scope.
* Fix: Prevent name clashes between a type and a supertype with the same name.
* Fix: Don't generate empty body for `expect` and `external` functions.
* Fix: Don't allow `expect` or `external` classes to initialize supertypes.
* Fix: Disallow delegate constructor calls in `external` classes.
* Fix: Allow non-public primary constructors inside inline/value classes.
* Fix: Allow init blocks inside inline/value classes.
* Fix: Omit redundant `abstract` modifiers on members inside interfaces
## Version 1.7.2
_2020-10-20_
* New: Detect expression bodies with `return·` and `throw·` prefixes.
* Fix: Omit visibility modifiers on custom accessors.
## Version 1.7.1
_2020-10-15_
* Fix: 1.7.0 was published using JDK 11 which set `"org.gradle.jvm.version"` to `"11"` in Gradle
metadata, making it impossible to use the library on earlier Java versions (see
[#999][issue-999]). 1.7.1 is published with JDK 8, which fixes the problem.
## Version 1.7.0
_2020-10-14_
* New: Kotlin 1.4.10.
* New: Generated code is now compatible with the [explicit API mode][explicit-api-mode] by default.
* New: Escape soft and modifier keywords, in addition to hard keywords.
* New: Improve enum constants generation for cleaner diffs.
* New: Disallow setters on immutable properties.
* New: Ensure trailing new lines in expression bodies.
* New: Ensure trailing new lines after parameterless custom setters.
* Fix: Don't auto-convert properties with custom accessors to primary constructor properties.
* Fix: Don't allow parameterless setters with body.
* Fix: Prevent auto-wrapping spaces inside escaped keywords.
## Version 1.6.0
_2020-05-28_
* New: Deprecate Mirror API integrations.
Mirror API integrations, such as `TypeElement.asClassName()` and
`FunSpec.overriding(ExecutableElement)`, are being deprecated in this release. These KotlinPoet
APIs are most often used in annotation processors. Since kapt runs annotation processors over
stubs, which are Java files, a lot of the Kotlin-specific information gets lost in translation
and cannot be accessed by KotlinPoet through the Mirror API integrations. Examples include:
- Alias types, such as `kotlin.String`, get converted to their JVM representations, such as
`java.lang.String`.
- Type nullability information is not accessible.
- `suspend` functions are seen as simple functions with an additional `Continuation` parameter.
The correct solution is to switch to [KotlinPoet-metadata][kotlinpoet-metadata] or
[KotlinPoet-metadata-specs][kotlinpoet-metadata-specs] API, which fetches Kotlin-specific
information from the `@Metadata` annotation and produces correct KotlinPoet Specs. We may explore
adding new metadata-based alternatives to the deprecated APIs in the future.
* New: Kotlin 1.3.72.
* New: Improve `MemberName` to support operator overloading.
* New: Support generics in `AnnotationSpec`.
* New: Add support for functional interfaces.
* New: Make more `FunSpec.Builder` members public for easier mutation.
* Fix: Properly propagate implicit type and function modifiers in nested declarations.
* Fix: Properly escape type names containing `$` character.
* Fix: Don't emit `LambdaTypeName` annotations twice.
* Fix: Preserve tags in `TypeName.copy()`.
## Version 1.5.0
_2020-01-09_
KotlinPoet now targets JDK8, which means that executing a build that includes KotlinPoet as a
dependency on a machine with an older version of JDK installed won't work. **This has no effect on
the code that KotlinPoet produces**: the code can still be compiled against JDK6, as long as it
doesn't use any features that were introduced in newer releases.
* New: Kotlin 1.3.61.
* New: Add support for processing FileFacades in KotlinPoet-metadata.
* New: Add support for inner nested and companion objects on annotation classes.
* New: Improve error messages for mismatched open/close statement characters.
* New: Tag `AnnotationSpec`s with the annotation mirror when available.
* New: Include annotations on enum entries when creating `TypeSpec`s from metadata.
* Fix: Fix metadata parsing for types.
* Fix: Allow file names that are Kotlin keywords.
* Fix: Properly escape type alias names with backticks.
* Fix: Allow creating `TypeSpec`s with names that can be escaped with backticks.
* Fix: Properly escape enum constant names with backticks.
* Fix: Maintain proper ordering of properties and initializers when emitting a `TypeSpec`.
**Note**: with this change, any properties declared after any initializer blocks will not be
added to the primary constructor and will instead be emitted inside the `TypeSpec` body.
* Fix: Don't emit a leading new line if type KDoc is empty but parameter KDocs are present.
* Fix: Ensure KotlinPoet-metadata resolves package names properly.
## Version 1.4.4
_2019-11-16_
* Fix: Support reified inline types in KotlinPoet-metadata.
## Version 1.4.3
_2019-10-30_
* Fix: Don't emit stubs for abstract functions in KotlinPoet-metadata.
## Version 1.4.2
_2019-10-28_
* Fix: Properly handle abstract elements in KotlinPoet-metadata.
* Fix: Properly handle typealiases in KotlinPoet-metadata.
* Fix: Properly render % symbols at the end of KDocs.
## Version 1.4.1
_2019-10-18_
* New: Add annotations support to `TypeAliasSpec`.
* New: Read type annotations from Kotlin `Metadata`.
* New: Introduce `ImmutableKmDeclarationContainer`.
* Fix: Use full package name for shading `auto-common`.
* Fix: Support reading self-type variables (e.g. `Asset<A : Asset<A>>`) from Kotlin `Metadata`.
## Version 1.4.0
_2019-09-24_
* New: This release introduces the new KotlinPoet-metadata API that makes it easy to introspect
Kotlin types and build KotlinPoet Specs based on that data.
The strategy for type introspection is driven by `ClassInspector`, which is a basic interface for
looking up JVM information about a given Class. This optionally is used by the
`toTypeSpec()`/`toFileSpec()` APIs in `kotlinpoet-metadata-specs` artifact to inform about
Classes with information that isnt present in metadata (overrides, JVM modifiers, etc). There
are two batteries-included implementations available in `ReflectiveClassInspector`
(for reflection) and `ElementsClassInspector` (for the javax Elements API in annotation
processing). These implementations are available through their respective
`kotlinpoet-classinspector-*` artifacts. For more information refer to the
[KotlinPoet-metadata-specs README][kotlinpoet-metadata-specs].
At the time of this release the API is in experimental mode and has to be opted into via the
`KotlinPoetMetadataPreview` annotation.
* New: Kotlin 1.3.50.
* New: A new constructor to simplify creation of `ParameterSpec` instances.
* New: New `ClassName` constructors.
* New: `TypeName` and subclasses can now store tags.
* New: Optional parameters added to `toBuilder()` methods of most Specs.
* New: `List` overrides for Spec methods that accept `vararg`s.
* New: `CodeBlock.Builder.clear()` helper method.
* New: `FunSpec.Builder.clearBody()` helper method.
* Fix: Properly escape enum constant names.
* Fix: Ensure trailing newlines in KDoc and function bodies.
* Fix: `TypeVariableName`s with empty bounds will now default to `Any?`.
* Fix: Don't emit parens for primary constructors.
* Fix: `ClassName`s with empty simple names are not allowed anymore.
* Fix: Throw if names contain illegal characters that can't be escaped with backticks.
## Version 1.3.0
_2019-05-30_
* New: Don't inline annotations in the primary constructor.
* New: Force new lines when emitting primary constructors.
* New: Support using MemberNames as arguments to %N.
* New: Add more ClassName constants: ClassName.STRING, ClassName.LIST, etc.
* New: Add ClassName.constructorReference() and MemberName.reference().
* New: Make %N accept MemberNames.
* New: Escape spaces in import aliases.
* New: Escape spaces in ClassNames.
* New: Escape spaces in MemberNames.
* New: Escape imports containing spaces.
* New: Escape package name containing spaces.
* New: Use 2-space indents.
* New: Only indent one level on annotation values.
* Fix: Pass only unique originating elements to Filer.
* Fix: Fix bug with MemberNames in same package nested inside a class.
## Version 1.2.0
_2019-03-28_
* New: Add writeTo(Filer) and originating element API.
* New: Make *Spec types taggable.
* New: Make FunSpec.Builder#addCode take vararg Any?.
* Fix: Import members from default package.
* Fix: Add non-wrapping spaces in control flow creation methods.
* Fix: Named "value" argument being omitted in annotation array types.
## Version 1.1.0
_2019-02-28_
* New: Kotlin 1.3.21.
* New: Support referencing members using `%M` and `MemberName` type.
* New: Add extensions for getting a `MemberName` from a `ClassName`, `KClass` and `Class`.
* New: Allow passing `CodeBlock`s as arguments to `%P`.
* New: Allow interface delegation for objects.
* Fix: Don't emit visible whitespace in `toString()`.
* Fix: Prevent line wrapping in weird places inside function signature.
* Fix: No line wrapping between val and property name.
* Fix: Allow passing line prefix into `LineWrapper` to enable proper line wrapping in KDoc.
* Fix: Add newline for `TypeSpec` Kdoc with no tags.
* Fix: Add newline for remaining Specs.
* Fix: Fix kdoc formatting for property getter/setters.
* Fix: Don't wrap single line comments inside `FunSpec`.
* Fix: Add non-wrapping package name.
* Fix: Remove n^2 algorithm in `CodeWriter.resolve()` by precomputing all of the nested simple names of a `TypeSpec`.
* Fix: Fix edge case with empty enum classes.
* Fix: Fix Nullable Type Parameter handling in `KType.asTypeName()`.
* Fix: Fix incorrect long comment wrapping in `FileSpec`.
* Fix: Attach primary constructor param/property KDoc to the element vs emitting it inside the type header.
## Version 1.0.1
_2019-01-02_
* New: Allow enums without constants.
* New: Improved formatting of TypeSpec KDoc.
* New: Support @property and @param KDoc tags in TypeSpec.
* Fix: Use pre-formatted strings for arguments to %P.
## Version 1.0.0
_2018-12-10_
* New: Kotlin 1.3.11.
* Fix: Prevent wrapping in import statements.
## Version 1.0.0-RC3
_2018-11-28_
* New: Kotlin 1.3.10.
* New: Add `%P` placeholder for string templates.
* New: Add support for receiver kdoc.
* New: Avoid emitting `Unit` as return type.
* New: Add support for empty setters.
* New: Add checks for inline classes.
* New: Escape property and variable names if keywords.
* New: Replace `%>`, `%<`, `%[`, `%]` placeholders with `⇥`, `⇤`, `«`, `»`.
* New: Replace `%W` with space, and add `·` as a non-breaking space.
* New: Change `TypeName` to sealed class.
* New: Documentation improvements.
* New: Replace `TypeName` modifier methods with `copy()`.
* New: Rename members of `WildcardTypeName` to match with the producer/consumer generics model.
* New: Rename `TypeName.nullable` into `TypeName.isNullable`.
* New: Rename `LambdaTypeName.suspending` into `LambdaTypeName.isSuspending`.
* New: Rename `TypeVariableName.reified` into `TypeVariableName.isReified`.
* Fix: Emit star-projection only for types with `Any?` upper bound.
* Fix: Fold property with escaped name.
## Version 1.0.0-RC2
_2018-10-22_
* New: Kotlin 1.2.71.
* New: README improvements.
* New: Allow opening braces and params in `beginControlFlow()`.
* New: Add KDoc to `ParameterSpec`, collapse into parent KDoc.
* New: Support `TypeVariable`s in `PropertySpec`.
* New: Add parens for annotated types in `LambdaTypeName`.
* New: Improve error messaging and documentation for inline properties.
* New: Allow sealed classes to declare abstract properties.
* New: Added `buildCodeBlock()` helper function.
* New: Allow using `CodeBlock`s with statements as property initializers and default parameter values.
* New: Rename `NameAllocator.clone()` into `NameAllocator.copy().
* New: Rename `TypeName.asNonNullable()` to `TypeName.asNonNull()`.
* New: Remove `PropertySpec.varBuilder()` (use `mutable()` instead).
* New: Allow importing top-level members in default package.
* New: Add overloads to add KDoc to return type.
* Fix: Distinguishing `IntArray` and `Array<Int>` when creating `TypeName`.
* Fix: Use `TypeName` instead of `ClassName` as parameter type of `plusParameter()`.
* Fix: Keep type-parameter variance when constructing `TypeName` from `KType`.
* Fix: Don't validate modifiers when merging properties with primary constructor parameters.
* Fix: Escape $ characters in formatted strings.
* Fix: `FileSpec.Builder` blank package and subfolder fix.
* Fix: Append new line at end of parameter KDoc.
* Fix: Add parameter KDoc in `toBuilder()`.
## Version 1.0.0-RC1
_2018-07-16_
* New: Escape keywords in imports and canonical class names.
* New: Improve `external` support.
* New: Extensions for `KType` and `KTypeParameter`.
* New: Add builder methods to simplify adding common kotlin.jvm annotations.
* New: Enums are able to have companion objects.
* New: Add missing primaryConstructor & companionObject to `TypeSpec#toBuilder()`.
* New: Make subtype checking vals inside Kind public.
* New: Escape (class/property/function/variable) names automatically if they contain space, hyphen, or other symbols.
* New: Improve `ParameterizedTypeName` API.
* New: Add `WildcardTypeName.STAR` constant.
* New: Expose mutable builder properties and move their validations to build-time.
* Fix: Use regular indents for parameter lists.
* Fix: Inline annotations on properties defined in primary constructor.
* Fix: Use `Any?` as the default type variable bounds.
* Fix: Fix importing annotated `TypeName`.
* Fix: If any primary constructor property has KDoc, put properties on new lines.
* Fix: Properly emit where block in type signature.
* Fix: Avoid type name collisions in primary constructor.
* Fix: Remove implicit `TypeVariable` bound when more bounds are added.
* Fix: Combine annotations and modifiers from constructor params and properties.
* Fix: Replace delegate constructor args along with the constructor.
## Version 0.7.0
_2018-02-16_
* New: Increase indent to 4 spaces.
* New: Delegate super interfaces as constructor parameters.
* New: Support `PropertySpec`s as `CodeBlock` literals.
* New: Support KDoc for `TypeAliasSpec`.
* New: Allow for adding an initializer block inside a companion object.
* New: Escape name in `ParameterSpec` which is also a keyword.
* New: Escape names in statements.
* New: Set com.squareup.kotlinpoet as automatic module name.
* New: Support suspending lambda types.
* New: Support named `LambdaTypeName` parameters.
* New: Support dynamic type.
* New: Disallow wildcard imports.
* New: Depend on Kotlin 1.2.21.
* Fix: Correct handling of super-classes/interfaces on anonymous classes.
* Fix: Fix boundary filtering to `Any?`.
* Fix: Wrap long property initializers.
* Fix: Fix formatting and indentation of parameter lists.
## Version 0.6.0
_2017-11-03_
* New: Support lambda extensions.
* New: Support renames in imports like `import bar.Bar as bBar`.
* New: Support extension and inline properties.
* New: Support reified types.
* New: Expose enclosed types inside `LambdaTypeName`.
* New: Depend on Kotlin Kotlin 1.1.51.
* New: Improved API and formatting of annotations.
* New: Improved multiplatform support.
* Fix: Escape function and package names if they are a Kotlin keyword.
* Fix: Properly format WildcardTypeName's class declaration.
## Version 0.5.0
_2017-09-13_
* New: Rename `addFun()` to `addFunction()`.
* New: Rename `KotlinFile` to `FileSpec`.
* New: Rename `KotlinFile.addFileAnnotation()` to `addAnnotation()`.
* New: Rename `KotlinFile.addFileComment()` to `addComment()`.
* New: Support cross-platform code, including `HEADER` and `IMPL` modifiers.
* New: Support type variables for type aliases.
* New: Support constructor delegation.
* New: Support named companion objects.
* New: Depend on Kotlin 1.1.4-3.
* Fix: Format one parameter per line when there are more than two parameters.
* Fix: Don't emit braces when the constructor body is empty.
* Fix: Do not invoke superclass constructor when no primary constructor.
* Fix: Enforce the right modifiers on functions.
## Version 0.4.0
_2017-08-08_
* New: Change KotlinPoet's extensions like `asClassName()` to be top-level functions.
* New: Add declaration-site variance support.
* New: Improve handling of single expression bodies.
* New: Support file annotations.
* New: Support imports from the top-level file.
* New: Accept superclass constructor parameters.
* New: Support primary constructors using the `constructor` keyword.
* Fix: Don't emit setter parameter types.
* Fix: Support Kotlin keywords in `NameAllocator`.
* Fix: Emit the right default parameters for primary constructors.
* Fix: Format annotations properly when used as parameters.
* Fix: Recognize imports when emitting nullable types.
* Fix: Call through to the superclass constructor when superclass has a no-args constructor.
* Fix: Omit class braces if all properties are declared in primary constructor.
* Fix: Don't emit empty class bodies.
* Fix: Emit the right syntax for declaring multiple generic type constraints.
* Fix: Support properties on objects, companions and interfaces.
* Fix: Use `AnnotationSpec` for throws.
## Version 0.3.0
_2017-06-11_
* New: Objects and companion objects.
* New: `TypeAliasSpec` to create type aliases.
* New: `LambdaTypeName` to create lambda types.
* New: Collapse property declarations into constructor params.
* New: Extension and invoke functions for creating type names: `Runnable::class.asClassName()`.
* New: Basic support for expression bodies.
* New: Basic support for custom accessors.
* New: Remove `Filer` writing and originating elements concept. These stem from `javac` annotation
processors.
* Fix: Generate valid annotation classes.
* Fix: Use `KModifier` for varargs.
* Fix: Use `ParameterizedTypeName` for array types.
* Fix: Extract Kotlin name from `KClass` instead of Java name.
* Fix: Emit valid class literals: `Double::class` instead of `Double.class`.
* Fix: Emit modifiers in the expected order.
* Fix: Emit the correct syntax for enum classes and overridden members.
## Version 0.2.0
_2017-05-21_
* New: Flip API signatures to be (name, type) instead of (type, name).
* New: Support for nullable types.
* New: Support delegated properties.
* New: Extension functions.
* New: Support top-level properties.
* Fix: Inheritance should use `:` instead of `extends` and `implements`.
* Fix: Make initializerBlock emit `init {}`.
## Version 0.1.0
_2017-05-16_
* Initial public release.
[kotlinpoet-metadata]: ../kotlinpoet_metadata
[kotlinpoet-metadata-specs]: ../kotlinpoet_metadata_specs
[explicit-api-mode]: https://kotlinlang.org/docs/reference/whatsnew14.html#explicit-api-mode-for-library-authors
[issue-999]: https://github.com/square/kotlinpoet/issues/999
[ksp]: https://github.com/google/ksp
[ksp-interop-docs]: https://square.github.io/kotlinpoet/interop-ksp/
[javapoet]: https://github.com/square/javapoet
[javapoet-interop-docs]: https://square.github.io/kotlinpoet/interop-javapoet/
[martinbonnin]: https://github.com/martinbonnin
[idanakav]: https://github.com/idanakav
[goooler]: https://github.com/goooler
[anandwana001]: https://github.com/anandwana001
[evant]: https://github.com/evant
[glureau]: https://github.com/glureau
[liujingxing]: https://github.com/liujingxing
[BoD]: https://github.com/BoD
[WhosNickDoglio]: https://github.com/WhosNickDoglio
[sullis]: https://github.com/sullis
[DRSchlaubi]: https://github.com/DRSchlaubi
[seriouslyhypersonic]: https://github.com/seriouslyhypersonic
[ephemient]: https://github.com/ephemient
[dkilmer]: https://github.com/dkilmer
[aksh1618]: https://github.com/aksh1618
[zsqw123]: https://github.com/zsqw123
[roihershberg]: https://github.com/roihershberg