1*3c321d95SSadaf EbrahimiChange Log 2*3c321d95SSadaf Ebrahimi========== 3*3c321d95SSadaf Ebrahimi 4*3c321d95SSadaf Ebrahimi## Unreleased 5*3c321d95SSadaf Ebrahimi 6*3c321d95SSadaf Ebrahimi## Version 1.18.1 7*3c321d95SSadaf Ebrahimi 8*3c321d95SSadaf EbrahimiThanks to [@mitasov-ra][mitasov-ra] for contributing to this release. 9*3c321d95SSadaf Ebrahimi 10*3c321d95SSadaf Ebrahimi_2024-07-15_ 11*3c321d95SSadaf Ebrahimi 12*3c321d95SSadaf Ebrahimi * Fix: Workaround for [KT-18706][kt-18706]: KotlinPoet now generates import aliases without backticks (#1920). 13*3c321d95SSadaf Ebrahimi 14*3c321d95SSadaf Ebrahimi ```kotlin 15*3c321d95SSadaf Ebrahimi // before, doesn't compile due to KT-18706 16*3c321d95SSadaf Ebrahimi import com.example.one.`$Foo` as `One$Foo` 17*3c321d95SSadaf Ebrahimi import com.example.two.`$Foo` as `Two$Foo` 18*3c321d95SSadaf Ebrahimi 19*3c321d95SSadaf Ebrahimi // now, compiles 20*3c321d95SSadaf Ebrahimi import com.example.one.`$Foo` as One__Foo 21*3c321d95SSadaf Ebrahimi import com.example.two.`$Foo` as Two__Foo 22*3c321d95SSadaf Ebrahimi ``` 23*3c321d95SSadaf Ebrahimi 24*3c321d95SSadaf Ebrahimi## Version 1.18.0 25*3c321d95SSadaf Ebrahimi 26*3c321d95SSadaf EbrahimiThanks to [@DanielGronau][DanielGronau] for contributing to this release. 27*3c321d95SSadaf Ebrahimi 28*3c321d95SSadaf Ebrahimi_2024-07-05_ 29*3c321d95SSadaf Ebrahimi 30*3c321d95SSadaf Ebrahimi * New: Kotlin 2.0.0. 31*3c321d95SSadaf Ebrahimi * New: KSP 2.0.0-1.0.22. 32*3c321d95SSadaf Ebrahimi * New: Promote `kotlinpoet-metadata` out of preview to stable. 33*3c321d95SSadaf Ebrahimi * New: Migrate `kotlinpoet-metadata` to stable `org.jetbrains.kotlin:kotlin-metadata-jvm` artifact for Metadata parsing. 34*3c321d95SSadaf Ebrahimi * New: Make enum entry references in `KSAnnotation.toAnnotationSpec()` and `KSClassDeclaration.toClassName()` more robust. 35*3c321d95SSadaf Ebrahimi * Fix: Don't expand typealiases of function types to `LambdaTypeName`s in `KSTypeReference.toTypeName()`. 36*3c321d95SSadaf Ebrahimi * Fix: Avoid rounding small double and float values in `%L` translation (#1927). 37*3c321d95SSadaf Ebrahimi * Fix: Fix typealias type argument resolution in KSP2 (#1929). 38*3c321d95SSadaf Ebrahimi 39*3c321d95SSadaf Ebrahimi## Version 1.17.0 40*3c321d95SSadaf Ebrahimi 41*3c321d95SSadaf EbrahimiThanks to [@jisungbin][jisungbin], [@hfhbd][hfhbd], [@evant][evant], [@sgjesse][sgjesse], [@sebek64][sebek64] for 42*3c321d95SSadaf Ebrahimicontributing to this release. 43*3c321d95SSadaf Ebrahimi 44*3c321d95SSadaf Ebrahimi_2024-05-24_ 45*3c321d95SSadaf Ebrahimi 46*3c321d95SSadaf Ebrahimi* Change: kotlinx-metadata 0.9.0. Note that the `KotlinClassMetadata.read` is deprecated in 0.9.0 and replaced with 47*3c321d95SSadaf Ebrahimi `readStrict` (#1830). 48*3c321d95SSadaf Ebrahimi * Note: we now also provide `lenient` parameters to map to the underlying `readStrict()` and `readLenient()` calls 49*3c321d95SSadaf Ebrahimi (#1766). 50*3c321d95SSadaf Ebrahimi * We have also removed various `Class`/`TypeElement`/`Metadata`-to-`KmClass` APIs from the public API, as these are 51*3c321d95SSadaf Ebrahimi trivial to write now with kotlinx-metadata's newer APIs and allows us to focus the API surface area of this artifact 52*3c321d95SSadaf Ebrahimi better (#1891). 53*3c321d95SSadaf Ebrahimi* New: Supertype list wraps to one-per-line if the primary constructor spans multiple lines (#1866). 54*3c321d95SSadaf Ebrahimi* New: Extract `MemberSpecHolder` interface for constructs that can hold `PropertySpec`s and `FunSpec`s and their 55*3c321d95SSadaf Ebrahimi builders (#1877). 56*3c321d95SSadaf Ebrahimi* New: `joinToCode` variant which operates on any type, but requires a transform lambda to convert each element into a 57*3c321d95SSadaf Ebrahimi `CodeBlock` (#1874). 58*3c321d95SSadaf Ebrahimi* New: Support annotation type arguments in `KSAnnotation.toAnnotationSpec()` (#1889). 59*3c321d95SSadaf Ebrahimi* Fix: Prevent name clashes between a function in class and a function call in current scope (#1850). 60*3c321d95SSadaf Ebrahimi* Fix: Fix extension function imports (#1814). 61*3c321d95SSadaf Ebrahimi* Fix: Omit implicit modifiers on `FileSpec.scriptBuilder` (#1813). 62*3c321d95SSadaf Ebrahimi* Fix: Fix trailing newline in `PropertySpec` (#1827). 63*3c321d95SSadaf Ebrahimi* Fix: `KSAnnotation.toAnnotationSpec` writes varargs in place instead of making them an array to work around a Kotlin 64*3c321d95SSadaf Ebrahimi issue with `OptIn` annotations (#1833). 65*3c321d95SSadaf Ebrahimi* Fix: `MemberName`s without a package are now correctly imported (#1841) 66*3c321d95SSadaf Ebrahimi* Fix: Throw if primary constructor delegates to other constructors (#1859). 67*3c321d95SSadaf Ebrahimi* Fix: Aliased imports with nested class (#1876). 68*3c321d95SSadaf Ebrahimi* Fix: Check for error types in `KSType.toClassName()` (#1890). 69*3c321d95SSadaf Ebrahimi* Fix: Support generating a single import for overloaded `MemberName`s (#1909). 70*3c321d95SSadaf Ebrahimi 71*3c321d95SSadaf Ebrahimi## Version 1.16.0 72*3c321d95SSadaf Ebrahimi 73*3c321d95SSadaf EbrahimiThanks to [@drawers][drawers], [@rickclephas][rickclephas] for contributing to this release. 74*3c321d95SSadaf Ebrahimi 75*3c321d95SSadaf Ebrahimi_2024-01-18_ 76*3c321d95SSadaf Ebrahimi 77*3c321d95SSadaf Ebrahimi * New: Kotlin 1.9.22. 78*3c321d95SSadaf Ebrahimi * New: KSP 1.9.22-1.0.16. 79*3c321d95SSadaf Ebrahimi * New: Add `NameAllocator` API to control keyword pre-allocation (#1803). 80*3c321d95SSadaf Ebrahimi * Fix: Fix issue with missing `suspend` modifier in `KSTypeReference.toTypeName` (#1793). 81*3c321d95SSadaf Ebrahimi * Fix: Honour same-package import aliases (#1794). 82*3c321d95SSadaf Ebrahimi * Fix: Always include parameter docs in the type header (#1800). 83*3c321d95SSadaf Ebrahimi 84*3c321d95SSadaf Ebrahimi## Version 1.15.3 85*3c321d95SSadaf Ebrahimi 86*3c321d95SSadaf EbrahimiThanks to [@gabrielittner][gabrielittner] for contributing to this release. 87*3c321d95SSadaf Ebrahimi 88*3c321d95SSadaf Ebrahimi_2023-12-04_ 89*3c321d95SSadaf Ebrahimi 90*3c321d95SSadaf Ebrahimi * Fix: Fix nullability of lambdas in `KSTypeReference.toTypeName` (#1756). 91*3c321d95SSadaf Ebrahimi 92*3c321d95SSadaf Ebrahimi## Version 1.15.2 93*3c321d95SSadaf Ebrahimi 94*3c321d95SSadaf EbrahimiThanks to [@evant][evant] for contributing to this release. 95*3c321d95SSadaf Ebrahimi 96*3c321d95SSadaf Ebrahimi_2023-11-30_ 97*3c321d95SSadaf Ebrahimi 98*3c321d95SSadaf Ebrahimi * New: Kotlin 1.9.21. 99*3c321d95SSadaf Ebrahimi * New: KSP 1.9.21-1.0.15. 100*3c321d95SSadaf Ebrahimi * New: KSP: more accurately represent function types (#1742). 101*3c321d95SSadaf Ebrahimi 102*3c321d95SSadaf Ebrahimi## Version 1.15.1 103*3c321d95SSadaf Ebrahimi 104*3c321d95SSadaf Ebrahimi_2023-11-19_ 105*3c321d95SSadaf Ebrahimi 106*3c321d95SSadaf Ebrahimi * Fix: Fix a regression introduced by #1637, where a superfluous newline is added to a type's KDoc 107*3c321d95SSadaf Ebrahimi if it has a primary constructor with no docs (#1727). 108*3c321d95SSadaf Ebrahimi 109*3c321d95SSadaf Ebrahimi## Version 1.15.0 110*3c321d95SSadaf Ebrahimi 111*3c321d95SSadaf Ebrahimi_2023-11-18_ 112*3c321d95SSadaf Ebrahimi 113*3c321d95SSadaf EbrahimiThanks to [@drawers][drawers], [@fejesjoco][fejesjoco], [@takahirom][takahirom], 114*3c321d95SSadaf Ebrahimi[@martinbonnin][martinbonnin], [@mcarleio][mcarleio] for contributing to this release. 115*3c321d95SSadaf Ebrahimi 116*3c321d95SSadaf EbrahimiIn this release the `:kotlinpoet` module has been converted to a Kotlin Multiplatform module 117*3c321d95SSadaf Ebrahimi(#1654), though for now it only supports the JVM target. **Important**: unless you're building 118*3c321d95SSadaf Ebrahimiwith Gradle, you will now need to depend on the `kotlinpoet-jvm` artifact, instead of `kotlinpoet` - 119*3c321d95SSadaf Ebrahimisee [Downloads](index.md#download) for instructions. 120*3c321d95SSadaf Ebrahimi 121*3c321d95SSadaf Ebrahimi * New: Kotlin 1.9.20. 122*3c321d95SSadaf Ebrahimi * New: KSP 1.9.20-1.0.14. 123*3c321d95SSadaf Ebrahimi * New: Extract `TypeSpecHolder` interface for constructs that can hold a TypeSpec and their builders (#1723). 124*3c321d95SSadaf Ebrahimi * New: Expose relative path from `FileSpec` (#1720). 125*3c321d95SSadaf Ebrahimi * New: Return the generated path from `FileSpec.writeTo()`. (#1514). 126*3c321d95SSadaf Ebrahimi * New: Remove default compatibility from unstable types (#1662). 127*3c321d95SSadaf Ebrahimi * New: Deprecate `TypeSpec.expectClassBuilder()` and `TypeSpec.valueClassBuilder()` (#1589). 128*3c321d95SSadaf Ebrahimi * New: Add option to convert `KSAnnotation` to `AnnotationSpec` while omitting default values (#1538). 129*3c321d95SSadaf Ebrahimi * New: Add `FileSpec.builder` convenience for `MemberName` (#1585). 130*3c321d95SSadaf Ebrahimi * Fix: Set `DecimalFormatSymbols.minusSign` for consistency across locales (#1658). 131*3c321d95SSadaf Ebrahimi * Fix: Fix link to incremental KSP in KDoc (#1638). 132*3c321d95SSadaf Ebrahimi * Fix: Emit primary constructor KDoc (#1637). 133*3c321d95SSadaf Ebrahimi * Change: kotlinx-metadata 0.7.0. This is a breaking change for users of the `:kotlinpoet-metadata` 134*3c321d95SSadaf Ebrahimi module, as most `Flags`-API extensions have been removed in favor of the now-available first-party versions. 135*3c321d95SSadaf Ebrahimi 136*3c321d95SSadaf Ebrahimi## Version 1.14.2 137*3c321d95SSadaf Ebrahimi 138*3c321d95SSadaf Ebrahimi_2023-05-30_ 139*3c321d95SSadaf Ebrahimi 140*3c321d95SSadaf Ebrahimi * Fix: Fix one more missing API in binary compatibility override in `Annotatable.Builder` (#1581). 141*3c321d95SSadaf Ebrahimi 142*3c321d95SSadaf Ebrahimi## Version 1.14.1 143*3c321d95SSadaf Ebrahimi 144*3c321d95SSadaf Ebrahimi_2023-05-29_ 145*3c321d95SSadaf Ebrahimi 146*3c321d95SSadaf Ebrahimi * Fix: Restore ABI stability for annotatable and documentable builders (#1580). 147*3c321d95SSadaf Ebrahimi 148*3c321d95SSadaf Ebrahimi## Version 1.14.0 149*3c321d95SSadaf Ebrahimi 150*3c321d95SSadaf Ebrahimi_2023-05-29_ 151*3c321d95SSadaf Ebrahimi 152*3c321d95SSadaf EbrahimiThanks to [@Omico][Omico], [@drawers][drawers], [@RBusarow][RBusarow] for contributing to this release. 153*3c321d95SSadaf Ebrahimi 154*3c321d95SSadaf Ebrahimi * New: Kotlin 1.8.21. 155*3c321d95SSadaf Ebrahimi * New: KSP 1.8.21-1.0.11. 156*3c321d95SSadaf Ebrahimi * New: Enable default methods in Java bytecode (#1561). 157*3c321d95SSadaf Ebrahimi * New: Group Kotlin and Renovate updates together in Renovate (#1562). 158*3c321d95SSadaf Ebrahimi * New: Extract trait interface for annotatable constructs and their builders (#1564). 159*3c321d95SSadaf Ebrahimi * New: Extract trait interface for documentable constructs and their builders (#1571). 160*3c321d95SSadaf Ebrahimi * New: Document the usage of `STAR` (#1572). 161*3c321d95SSadaf Ebrahimi * New: Add builder for `FunSpec` which accepts a `MemberName` (#1574). 162*3c321d95SSadaf Ebrahimi * Fix: Omit public modifier on override function or constructor parameters (#1550). 163*3c321d95SSadaf Ebrahimi * Fix: Correct handling of members in various types (#1558). 164*3c321d95SSadaf Ebrahimi * Fix: Function return types now default to `Unit` unless explicitly set (#1559). 165*3c321d95SSadaf Ebrahimi 166*3c321d95SSadaf Ebrahimi Previously, when `FunSpec` didn't have a return type specified and an expression body was produced, no return 167*3c321d95SSadaf Ebrahimi type would be emitted. However, starting from `1.14.0`, KotlinPoet will not add `Unit` as a return type in such 168*3c321d95SSadaf Ebrahimi cases. In order to correct the generated output, you are to specify the actual return type of the `FunSpec`. 169*3c321d95SSadaf Ebrahimi 170*3c321d95SSadaf Ebrahimi Before `1.14.0`, if omitted, no return type is produced: 171*3c321d95SSadaf Ebrahimi ```kotlin 172*3c321d95SSadaf Ebrahimi val funSpec = FunSpec.builder("foo") 173*3c321d95SSadaf Ebrahimi .addStatement("return 1") 174*3c321d95SSadaf Ebrahimi .build() 175*3c321d95SSadaf Ebrahimi ``` 176*3c321d95SSadaf Ebrahimi ```kotlin 177*3c321d95SSadaf Ebrahimi public fun foo() = 1 178*3c321d95SSadaf Ebrahimi ``` 179*3c321d95SSadaf Ebrahimi 180*3c321d95SSadaf Ebrahimi From `1.14.0`, the return type defaults to `Unit` if not otherwise set: 181*3c321d95SSadaf Ebrahimi ```kotlin 182*3c321d95SSadaf Ebrahimi val funSpec = FunSpec.builder("foo") 183*3c321d95SSadaf Ebrahimi .addStatement("return 1") 184*3c321d95SSadaf Ebrahimi .build() 185*3c321d95SSadaf Ebrahimi ``` 186*3c321d95SSadaf Ebrahimi ```kotlin 187*3c321d95SSadaf Ebrahimi public fun foo(): Unit = 1 // ❌ 188*3c321d95SSadaf Ebrahimi ``` 189*3c321d95SSadaf Ebrahimi 190*3c321d95SSadaf Ebrahimi To fix it, explicitly define the return type: 191*3c321d95SSadaf Ebrahimi ```diff 192*3c321d95SSadaf Ebrahimi val funSpec = FunSpec.builder("foo") 193*3c321d95SSadaf Ebrahimi + .returns(INT) 194*3c321d95SSadaf Ebrahimi .addStatement("return 1") 195*3c321d95SSadaf Ebrahimi .build() 196*3c321d95SSadaf Ebrahimi ``` 197*3c321d95SSadaf Ebrahimi ```kotlin 198*3c321d95SSadaf Ebrahimi public fun foo(): Int = 1 // ✅ 199*3c321d95SSadaf Ebrahimi ``` 200*3c321d95SSadaf Ebrahimi 201*3c321d95SSadaf Ebrahimi Additionally, as part of this change, `FunSpec.returnType` has changed to be non-nullable. This is a source- and 202*3c321d95SSadaf Ebrahimi binary-compatible change, although if you were performing null-checks then new warnings may appear after upgrade. 203*3c321d95SSadaf Ebrahimi 204*3c321d95SSadaf Ebrahimi * Fix: Append nested class names to alias during name lookup (#1568). 205*3c321d95SSadaf Ebrahimi * Fix: Allow PropertySpec with context receivers and without getter or setter (#1575). 206*3c321d95SSadaf Ebrahimi 207*3c321d95SSadaf Ebrahimi## Version 1.13.2 208*3c321d95SSadaf Ebrahimi 209*3c321d95SSadaf Ebrahimi_2023-05-05_ 210*3c321d95SSadaf Ebrahimi 211*3c321d95SSadaf EbrahimiThanks to [@Squiry][Squiry] for contributing to this release. 212*3c321d95SSadaf Ebrahimi 213*3c321d95SSadaf Ebrahimi* Fix: `KSType.toTypeName` fixed to work with aliased types (#1534). 214*3c321d95SSadaf Ebrahimi 215*3c321d95SSadaf Ebrahimi## Version 1.13.1 216*3c321d95SSadaf Ebrahimi 217*3c321d95SSadaf Ebrahimi_2023-04-28_ 218*3c321d95SSadaf Ebrahimi 219*3c321d95SSadaf EbrahimiThanks to [@rickclephas][rickclephas] for contributing to this release. 220*3c321d95SSadaf Ebrahimi 221*3c321d95SSadaf Ebrahimi * Fix: Look at canonical names instead of just package names when generating import aliases (#1519). 222*3c321d95SSadaf Ebrahimi * Fix: Ignore KSP annotation arguments without a value (#1523). 223*3c321d95SSadaf Ebrahimi * Fix: Fix arguments handling in `KSType.toTypeName()` (#1529). 224*3c321d95SSadaf Ebrahimi 225*3c321d95SSadaf Ebrahimi## Version 1.13.0 226*3c321d95SSadaf Ebrahimi 227*3c321d95SSadaf Ebrahimi_2023-04-06_ 228*3c321d95SSadaf Ebrahimi 229*3c321d95SSadaf EbrahimiThanks to [@popematt][popematt], [@bitPogo][bitPogo], [@mars885][mars885], [@sjudd][sjudd], [@Sironheart][Sironheart], 230*3c321d95SSadaf Ebrahimi[@polarene][polarene], [@DeoTimeTheGithubUser][DeoTimeTheGithubUser], [@drawers][drawers] for contributing to this release. 231*3c321d95SSadaf Ebrahimi 232*3c321d95SSadaf Ebrahimi * New: Kotlin 1.8.0. 233*3c321d95SSadaf Ebrahimi * New: KSP 1.8.0-1.0.9. 234*3c321d95SSadaf Ebrahimi * New: Support context receivers on TypeSpecs + extract ContextReceivable API (#1269). 235*3c321d95SSadaf Ebrahimi * New: Optimize `OriginatingElements` and `TagMap` implementations (#1270). 236*3c321d95SSadaf Ebrahimi * New: Auto-generate import aliases for types and members (#1355). 237*3c321d95SSadaf Ebrahimi * New: Insert underscores into large decimal literals (#1384). 238*3c321d95SSadaf Ebrahimi * New: New factory function `FileSpec.builder(ClassName)` (#1397). 239*3c321d95SSadaf Ebrahimi * Fix: Fix StackOverflowError when calling `KSTypeArgument.toTypeName()` for a wildcard in a recursive type bound (#1272). 240*3c321d95SSadaf Ebrahimi * Fix: Fix transitive aliases (#1306). 241*3c321d95SSadaf Ebrahimi * Fix: Fix Aliases as TypeArgument (#1321). 242*3c321d95SSadaf Ebrahimi * Fix: Don't escape special characters inside raw strings (#1331). 243*3c321d95SSadaf Ebrahimi * Fix: Fix KSP interop's output of the annotation parameter value of type Char (#1338). 244*3c321d95SSadaf Ebrahimi * Fix: Fix KSP interop's output for primitive arrays (#1340). 245*3c321d95SSadaf Ebrahimi * Fix: Avoid emitting public if `shouldEmitPublicModifier` returns false (#1342). 246*3c321d95SSadaf Ebrahimi * Fix: Fix context receivers being rendered in an incorrect position when on a nullable/suspending `LambdaTypeName` (#1454). 247*3c321d95SSadaf Ebrahimi * Fix: Do not use `bestGuess` for `KClass.asClassName` (#1469). 248*3c321d95SSadaf Ebrahimi * Fix: Handle fake nested types with platform mapped parents (#1472). 249*3c321d95SSadaf Ebrahimi * Fix: Fix `TypeName` equals (#1477). 250*3c321d95SSadaf Ebrahimi * Fix: Make equals consistent with compareTo for `ClassName` (#1506). 251*3c321d95SSadaf Ebrahimi 252*3c321d95SSadaf Ebrahimi## Version 1.12.0 253*3c321d95SSadaf Ebrahimi 254*3c321d95SSadaf Ebrahimi_2022-06-13_ 255*3c321d95SSadaf Ebrahimi 256*3c321d95SSadaf EbrahimiThanks to [@WhosNickDoglio][WhosNickDoglio], [@sullis][sullis], [@DRSchlaubi][DRSchlaubi], 257*3c321d95SSadaf Ebrahimi[@martinbonnin][martinbonnin], [@seriouslyhypersonic][seriouslyhypersonic], [@ephemient][ephemient], 258*3c321d95SSadaf Ebrahimi[@dkilmer][dkilmer], [@aksh1618][aksh1618], [@zsqw123][zsqw123], [@roihershberg][roihershberg] for 259*3c321d95SSadaf Ebrahimicontributing to this release. 260*3c321d95SSadaf Ebrahimi 261*3c321d95SSadaf Ebrahimi * New: Kotlin 1.7.0. 262*3c321d95SSadaf Ebrahimi * New: Add support for context receivers. 263*3c321d95SSadaf Ebrahimi * New: Add support for external property getter. 264*3c321d95SSadaf Ebrahimi * New: `interop-ksp` API promoted to stable. 265*3c321d95SSadaf Ebrahimi * Fix: Resolve enum constants when emitting types. 266*3c321d95SSadaf Ebrahimi * Fix: Fix type argument mapping when processing typealiases with KSP. 267*3c321d95SSadaf Ebrahimi * Fix: Properly unwrap `KSTypeAlias` with an unused type parameter. 268*3c321d95SSadaf Ebrahimi * Fix: Unwrap nested `KSTypeAlias`-es recursively. 269*3c321d95SSadaf Ebrahimi * Fix: Add support for context receivers `@PropertySpec` and fix issues with annotations. 270*3c321d95SSadaf Ebrahimi * Fix: Treat `header` and `impl` as keywords (workaround for KT-52315). 271*3c321d95SSadaf Ebrahimi * Fix: Use `%N` instead of `%L` for annotation arg names so keywords are handled. 272*3c321d95SSadaf Ebrahimi * Fix: Improve handling of long `return` expressions. 273*3c321d95SSadaf Ebrahimi 274*3c321d95SSadaf Ebrahimi## Version 1.11.0 275*3c321d95SSadaf Ebrahimi 276*3c321d95SSadaf Ebrahimi_2022-03-24_ 277*3c321d95SSadaf Ebrahimi 278*3c321d95SSadaf EbrahimiThanks to [@liujingxing][liujingxing] and [@BoD][BoD] for contributing to this release. 279*3c321d95SSadaf Ebrahimi 280*3c321d95SSadaf Ebrahimi* New: Kotlin scripting support in `FileSpec`. 281*3c321d95SSadaf Ebrahimi 282*3c321d95SSadaf Ebrahimi```kotlin 283*3c321d95SSadaf Ebrahimival spec = FileSpec.scriptBuilder("Taco") 284*3c321d95SSadaf Ebrahimi .addStatement("println(%S)", "hello world!") 285*3c321d95SSadaf Ebrahimi .addKotlinDefaultImports() 286*3c321d95SSadaf Ebrahimi .build() 287*3c321d95SSadaf Ebrahimi``` 288*3c321d95SSadaf Ebrahimi 289*3c321d95SSadaf EbrahimiGenerates a `Taco.kts` file with the following contents: 290*3c321d95SSadaf Ebrahimi 291*3c321d95SSadaf Ebrahimi```kotlin 292*3c321d95SSadaf Ebrahimiprintln("hello world!") 293*3c321d95SSadaf Ebrahimi``` 294*3c321d95SSadaf Ebrahimi 295*3c321d95SSadaf Ebrahimi* New: Emit trailing commas for multi-line parameters and annotations. 296*3c321d95SSadaf Ebrahimi* New: Add `KSAnnotation.toAnnotationSpec()`. 297*3c321d95SSadaf Ebrahimi* New: Add `Unit` and `CharSequence` conversions in `javapoet-interop`. 298*3c321d95SSadaf Ebrahimi* New: Add support for default imports in `FileSpec`. 299*3c321d95SSadaf Ebrahimi * This is particularly oriented at scripting support, but can also be used in non-script files. 300*3c321d95SSadaf Ebrahimi* New: Update to Kotlin 1.6.10. 301*3c321d95SSadaf Ebrahimi* Fix: Fail compilation if you only pass one string to `ClassName`. 302*3c321d95SSadaf Ebrahimi* Fix: Inline `val` property if its getter is `inline`. 303*3c321d95SSadaf Ebrahimi* Fix: Add `yield` to the list of reserved keywords. 304*3c321d95SSadaf Ebrahimi* Fix: Enforce only allowed parameter modifiers in `ParameterSpec` (i.e. `crossinline`, `vararg`, and `noinline`). 305*3c321d95SSadaf Ebrahimi* Fix: Fix `CodeBlock`s in class delegation getting `toString()`'d instead of participating in code writing. 306*3c321d95SSadaf Ebrahimi* Fix: Error when attempting to convert KSP error types (i.e. if `KSType.isError` is true) to `TypeName`. 307*3c321d95SSadaf Ebrahimi 308*3c321d95SSadaf Ebrahimi## Version 1.10.2 309*3c321d95SSadaf Ebrahimi 310*3c321d95SSadaf Ebrahimi_2021-10-22_ 311*3c321d95SSadaf Ebrahimi 312*3c321d95SSadaf EbrahimiThanks to [@glureau][glureau] and [@goooler][goooler] for contributing to this release. 313*3c321d95SSadaf Ebrahimi 314*3c321d95SSadaf Ebrahimi* New: Switch `AnnotationSpec.get()` to use the `arrayOf()` syntax instead of `[]`. 315*3c321d95SSadaf Ebrahimi* Fix: Don't wrap aliasing imports with long package names. 316*3c321d95SSadaf Ebrahimi* Fix: Don't wrap type names inside line comments. 317*3c321d95SSadaf Ebrahimi* Fix: Ignore Java's `@Deprecated` annotations on synthetic methods for annotations. 318*3c321d95SSadaf Ebrahimi 319*3c321d95SSadaf Ebrahimi## Version 1.10.1 320*3c321d95SSadaf Ebrahimi 321*3c321d95SSadaf Ebrahimi_2021-09-21_ 322*3c321d95SSadaf Ebrahimi 323*3c321d95SSadaf EbrahimiThanks to [@evant][evant] for contributing to this release. 324*3c321d95SSadaf Ebrahimi 325*3c321d95SSadaf Ebrahimi * Fix: Correct generation of typealiases with type args in KSP interop. 326*3c321d95SSadaf Ebrahimi * Fix: Add missing default `TypeParameterResolver.EMPTY` argument to 327*3c321d95SSadaf Ebrahimi `fun KSTypeArgument.toTypeName` in KSP interop. 328*3c321d95SSadaf Ebrahimi 329*3c321d95SSadaf Ebrahimi## Version 1.10.0 330*3c321d95SSadaf Ebrahimi 331*3c321d95SSadaf Ebrahimi_2021-09-20_ 332*3c321d95SSadaf Ebrahimi 333*3c321d95SSadaf EbrahimiThanks to [@martinbonnin][martinbonnin], [@idanakav][idanakav], [@goooler][goooler], and 334*3c321d95SSadaf Ebrahimi[@anandwana001][anandwana001] for contributing to this release. 335*3c321d95SSadaf Ebrahimi 336*3c321d95SSadaf Ebrahimi * New: Add a new [KSP][ksp] interop artifact. See [docs][ksp-interop-docs] for more details. 337*3c321d95SSadaf Ebrahimi * New: Add a new [JavaPoet][javapoet] interop artifact. See [docs][javapoet-interop-docs] for more 338*3c321d95SSadaf Ebrahimi details. 339*3c321d95SSadaf Ebrahimi * New: Allow copying a `ParameterizedTypeName` with new type arguments via new `copy()` overload. 340*3c321d95SSadaf Ebrahimi * kotlinx-metadata artifacts have been consolidated to a single `com.squareup:kotlinpoet-metadata` 341*3c321d95SSadaf Ebrahimi maven artifact. The previous `kotlinpoet-metadata-*` subartifacts are no longer published. 342*3c321d95SSadaf Ebrahimi * New: `TypeNameAliasTag` has been moved to KotlinPoet's main artifact under `TypeAliasTag`, for 343*3c321d95SSadaf Ebrahimi reuse with KSP interop. 344*3c321d95SSadaf Ebrahimi * `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. 345*3c321d95SSadaf Ebrahimi * Fix: Fix self-referencing type variables in metadata parsing. 346*3c321d95SSadaf Ebrahimi * Fix: Use delicate APIs rather than noisy logging ones when converting annotation mirrors in 347*3c321d95SSadaf Ebrahimi `AnnotationSpec.get`. 348*3c321d95SSadaf Ebrahimi * Fix: Update error message when metadata cannot be read to a more actionable one. 349*3c321d95SSadaf Ebrahimi * Fix: Avoid escaping already escaped strings. 350*3c321d95SSadaf Ebrahimi * Add docs about `kotlin-reflect` usage. 351*3c321d95SSadaf Ebrahimi * Avoid using kotlin-reflect for looking up `Unit` types where possible. 352*3c321d95SSadaf Ebrahimi * Test all the way up to JDK 17. 353*3c321d95SSadaf Ebrahimi * Update Kotlin to 1.5.31. 354*3c321d95SSadaf Ebrahimi 355*3c321d95SSadaf Ebrahimi## Version 1.9.0 356*3c321d95SSadaf Ebrahimi 357*3c321d95SSadaf Ebrahimi_2021-06-22_ 358*3c321d95SSadaf Ebrahimi 359*3c321d95SSadaf Ebrahimi * New: Kotlin 1.5.10. 360*3c321d95SSadaf Ebrahimi * New: Previously deprecated API to interop with Java reflection and Mirror API have been 361*3c321d95SSadaf Ebrahimi un-deprecated and marked with `@DelicateKotlinPoetApi` annotation. 362*3c321d95SSadaf Ebrahimi * New: `CodeBlock.Builder.withIndent` helper function. 363*3c321d95SSadaf Ebrahimi * New: Allow changing initializers and default values in `ParameterSpec.Builder` and 364*3c321d95SSadaf Ebrahimi `PropertySpec.Builder` after they were set. 365*3c321d95SSadaf Ebrahimi * New: `MemberName.isExtension` property that instructs KotlinPoet to always import the member, 366*3c321d95SSadaf Ebrahimi even if conflicting declarations are present in the same scope. 367*3c321d95SSadaf Ebrahimi * Fix: Escape member names that only contain underscores. 368*3c321d95SSadaf Ebrahimi * Fix: Always emit an empty primary constructor if it was set via `TypeSpec.primaryConstructor`. 369*3c321d95SSadaf Ebrahimi 370*3c321d95SSadaf Ebrahimi## Version 1.8.0 371*3c321d95SSadaf Ebrahimi 372*3c321d95SSadaf Ebrahimi_2021-03-29_ 373*3c321d95SSadaf Ebrahimi 374*3c321d95SSadaf Ebrahimi * New: Kotlin 1.4.31. 375*3c321d95SSadaf Ebrahimi * New: Add `KModifier.VALUE` to support `value class` declarations. 376*3c321d95SSadaf Ebrahimi * New: Allow using a custom `ClassLoader` with `ReflectiveClassInspector`. 377*3c321d95SSadaf Ebrahimi * New: Update to kotlinx-metadata 0.2.0. 378*3c321d95SSadaf Ebrahimi * Fix: Ensure `ImmutableKmProperty.toMutable()` copies `fieldSignature`. 379*3c321d95SSadaf Ebrahimi * Fix: Prevent name clashes between an imported `MemberName` and a member in current scope. 380*3c321d95SSadaf Ebrahimi * Fix: Prevent name clashes between a type and a supertype with the same name. 381*3c321d95SSadaf Ebrahimi * Fix: Don't generate empty body for `expect` and `external` functions. 382*3c321d95SSadaf Ebrahimi * Fix: Don't allow `expect` or `external` classes to initialize supertypes. 383*3c321d95SSadaf Ebrahimi * Fix: Disallow delegate constructor calls in `external` classes. 384*3c321d95SSadaf Ebrahimi * Fix: Allow non-public primary constructors inside inline/value classes. 385*3c321d95SSadaf Ebrahimi * Fix: Allow init blocks inside inline/value classes. 386*3c321d95SSadaf Ebrahimi * Fix: Omit redundant `abstract` modifiers on members inside interfaces 387*3c321d95SSadaf Ebrahimi 388*3c321d95SSadaf Ebrahimi## Version 1.7.2 389*3c321d95SSadaf Ebrahimi 390*3c321d95SSadaf Ebrahimi_2020-10-20_ 391*3c321d95SSadaf Ebrahimi 392*3c321d95SSadaf Ebrahimi * New: Detect expression bodies with `return·` and `throw·` prefixes. 393*3c321d95SSadaf Ebrahimi * Fix: Omit visibility modifiers on custom accessors. 394*3c321d95SSadaf Ebrahimi 395*3c321d95SSadaf Ebrahimi## Version 1.7.1 396*3c321d95SSadaf Ebrahimi 397*3c321d95SSadaf Ebrahimi_2020-10-15_ 398*3c321d95SSadaf Ebrahimi 399*3c321d95SSadaf Ebrahimi * Fix: 1.7.0 was published using JDK 11 which set `"org.gradle.jvm.version"` to `"11"` in Gradle 400*3c321d95SSadaf Ebrahimi metadata, making it impossible to use the library on earlier Java versions (see 401*3c321d95SSadaf Ebrahimi [#999][issue-999]). 1.7.1 is published with JDK 8, which fixes the problem. 402*3c321d95SSadaf Ebrahimi 403*3c321d95SSadaf Ebrahimi## Version 1.7.0 404*3c321d95SSadaf Ebrahimi 405*3c321d95SSadaf Ebrahimi_2020-10-14_ 406*3c321d95SSadaf Ebrahimi 407*3c321d95SSadaf Ebrahimi * New: Kotlin 1.4.10. 408*3c321d95SSadaf Ebrahimi * New: Generated code is now compatible with the [explicit API mode][explicit-api-mode] by default. 409*3c321d95SSadaf Ebrahimi * New: Escape soft and modifier keywords, in addition to hard keywords. 410*3c321d95SSadaf Ebrahimi * New: Improve enum constants generation for cleaner diffs. 411*3c321d95SSadaf Ebrahimi * New: Disallow setters on immutable properties. 412*3c321d95SSadaf Ebrahimi * New: Ensure trailing new lines in expression bodies. 413*3c321d95SSadaf Ebrahimi * New: Ensure trailing new lines after parameterless custom setters. 414*3c321d95SSadaf Ebrahimi * Fix: Don't auto-convert properties with custom accessors to primary constructor properties. 415*3c321d95SSadaf Ebrahimi * Fix: Don't allow parameterless setters with body. 416*3c321d95SSadaf Ebrahimi * Fix: Prevent auto-wrapping spaces inside escaped keywords. 417*3c321d95SSadaf Ebrahimi 418*3c321d95SSadaf Ebrahimi## Version 1.6.0 419*3c321d95SSadaf Ebrahimi 420*3c321d95SSadaf Ebrahimi_2020-05-28_ 421*3c321d95SSadaf Ebrahimi 422*3c321d95SSadaf Ebrahimi * New: Deprecate Mirror API integrations. 423*3c321d95SSadaf Ebrahimi 424*3c321d95SSadaf Ebrahimi Mirror API integrations, such as `TypeElement.asClassName()` and 425*3c321d95SSadaf Ebrahimi `FunSpec.overriding(ExecutableElement)`, are being deprecated in this release. These KotlinPoet 426*3c321d95SSadaf Ebrahimi APIs are most often used in annotation processors. Since kapt runs annotation processors over 427*3c321d95SSadaf Ebrahimi stubs, which are Java files, a lot of the Kotlin-specific information gets lost in translation 428*3c321d95SSadaf Ebrahimi and cannot be accessed by KotlinPoet through the Mirror API integrations. Examples include: 429*3c321d95SSadaf Ebrahimi 430*3c321d95SSadaf Ebrahimi - Alias types, such as `kotlin.String`, get converted to their JVM representations, such as 431*3c321d95SSadaf Ebrahimi `java.lang.String`. 432*3c321d95SSadaf Ebrahimi - Type nullability information is not accessible. 433*3c321d95SSadaf Ebrahimi - `suspend` functions are seen as simple functions with an additional `Continuation` parameter. 434*3c321d95SSadaf Ebrahimi 435*3c321d95SSadaf Ebrahimi The correct solution is to switch to [KotlinPoet-metadata][kotlinpoet-metadata] or 436*3c321d95SSadaf Ebrahimi [KotlinPoet-metadata-specs][kotlinpoet-metadata-specs] API, which fetches Kotlin-specific 437*3c321d95SSadaf Ebrahimi information from the `@Metadata` annotation and produces correct KotlinPoet Specs. We may explore 438*3c321d95SSadaf Ebrahimi adding new metadata-based alternatives to the deprecated APIs in the future. 439*3c321d95SSadaf Ebrahimi 440*3c321d95SSadaf Ebrahimi * New: Kotlin 1.3.72. 441*3c321d95SSadaf Ebrahimi * New: Improve `MemberName` to support operator overloading. 442*3c321d95SSadaf Ebrahimi * New: Support generics in `AnnotationSpec`. 443*3c321d95SSadaf Ebrahimi * New: Add support for functional interfaces. 444*3c321d95SSadaf Ebrahimi * New: Make more `FunSpec.Builder` members public for easier mutation. 445*3c321d95SSadaf Ebrahimi * Fix: Properly propagate implicit type and function modifiers in nested declarations. 446*3c321d95SSadaf Ebrahimi * Fix: Properly escape type names containing `$` character. 447*3c321d95SSadaf Ebrahimi * Fix: Don't emit `LambdaTypeName` annotations twice. 448*3c321d95SSadaf Ebrahimi * Fix: Preserve tags in `TypeName.copy()`. 449*3c321d95SSadaf Ebrahimi 450*3c321d95SSadaf Ebrahimi## Version 1.5.0 451*3c321d95SSadaf Ebrahimi 452*3c321d95SSadaf Ebrahimi_2020-01-09_ 453*3c321d95SSadaf Ebrahimi 454*3c321d95SSadaf Ebrahimi KotlinPoet now targets JDK8, which means that executing a build that includes KotlinPoet as a 455*3c321d95SSadaf Ebrahimi dependency on a machine with an older version of JDK installed won't work. **This has no effect on 456*3c321d95SSadaf Ebrahimi the code that KotlinPoet produces**: the code can still be compiled against JDK6, as long as it 457*3c321d95SSadaf Ebrahimi doesn't use any features that were introduced in newer releases. 458*3c321d95SSadaf Ebrahimi 459*3c321d95SSadaf Ebrahimi * New: Kotlin 1.3.61. 460*3c321d95SSadaf Ebrahimi * New: Add support for processing FileFacades in KotlinPoet-metadata. 461*3c321d95SSadaf Ebrahimi * New: Add support for inner nested and companion objects on annotation classes. 462*3c321d95SSadaf Ebrahimi * New: Improve error messages for mismatched open/close statement characters. 463*3c321d95SSadaf Ebrahimi * New: Tag `AnnotationSpec`s with the annotation mirror when available. 464*3c321d95SSadaf Ebrahimi * New: Include annotations on enum entries when creating `TypeSpec`s from metadata. 465*3c321d95SSadaf Ebrahimi * Fix: Fix metadata parsing for types. 466*3c321d95SSadaf Ebrahimi * Fix: Allow file names that are Kotlin keywords. 467*3c321d95SSadaf Ebrahimi * Fix: Properly escape type alias names with backticks. 468*3c321d95SSadaf Ebrahimi * Fix: Allow creating `TypeSpec`s with names that can be escaped with backticks. 469*3c321d95SSadaf Ebrahimi * Fix: Properly escape enum constant names with backticks. 470*3c321d95SSadaf Ebrahimi * Fix: Maintain proper ordering of properties and initializers when emitting a `TypeSpec`. 471*3c321d95SSadaf Ebrahimi **Note**: with this change, any properties declared after any initializer blocks will not be 472*3c321d95SSadaf Ebrahimi added to the primary constructor and will instead be emitted inside the `TypeSpec` body. 473*3c321d95SSadaf Ebrahimi * Fix: Don't emit a leading new line if type KDoc is empty but parameter KDocs are present. 474*3c321d95SSadaf Ebrahimi * Fix: Ensure KotlinPoet-metadata resolves package names properly. 475*3c321d95SSadaf Ebrahimi 476*3c321d95SSadaf Ebrahimi ## Version 1.4.4 477*3c321d95SSadaf Ebrahimi 478*3c321d95SSadaf Ebrahimi_2019-11-16_ 479*3c321d95SSadaf Ebrahimi 480*3c321d95SSadaf Ebrahimi * Fix: Support reified inline types in KotlinPoet-metadata. 481*3c321d95SSadaf Ebrahimi 482*3c321d95SSadaf Ebrahimi## Version 1.4.3 483*3c321d95SSadaf Ebrahimi 484*3c321d95SSadaf Ebrahimi_2019-10-30_ 485*3c321d95SSadaf Ebrahimi 486*3c321d95SSadaf Ebrahimi * Fix: Don't emit stubs for abstract functions in KotlinPoet-metadata. 487*3c321d95SSadaf Ebrahimi 488*3c321d95SSadaf Ebrahimi## Version 1.4.2 489*3c321d95SSadaf Ebrahimi 490*3c321d95SSadaf Ebrahimi_2019-10-28_ 491*3c321d95SSadaf Ebrahimi 492*3c321d95SSadaf Ebrahimi * Fix: Properly handle abstract elements in KotlinPoet-metadata. 493*3c321d95SSadaf Ebrahimi * Fix: Properly handle typealiases in KotlinPoet-metadata. 494*3c321d95SSadaf Ebrahimi * Fix: Properly render % symbols at the end of KDocs. 495*3c321d95SSadaf Ebrahimi 496*3c321d95SSadaf Ebrahimi## Version 1.4.1 497*3c321d95SSadaf Ebrahimi 498*3c321d95SSadaf Ebrahimi_2019-10-18_ 499*3c321d95SSadaf Ebrahimi 500*3c321d95SSadaf Ebrahimi * New: Add annotations support to `TypeAliasSpec`. 501*3c321d95SSadaf Ebrahimi * New: Read type annotations from Kotlin `Metadata`. 502*3c321d95SSadaf Ebrahimi * New: Introduce `ImmutableKmDeclarationContainer`. 503*3c321d95SSadaf Ebrahimi * Fix: Use full package name for shading `auto-common`. 504*3c321d95SSadaf Ebrahimi * Fix: Support reading self-type variables (e.g. `Asset<A : Asset<A>>`) from Kotlin `Metadata`. 505*3c321d95SSadaf Ebrahimi 506*3c321d95SSadaf Ebrahimi## Version 1.4.0 507*3c321d95SSadaf Ebrahimi 508*3c321d95SSadaf Ebrahimi_2019-09-24_ 509*3c321d95SSadaf Ebrahimi 510*3c321d95SSadaf Ebrahimi * New: This release introduces the new KotlinPoet-metadata API that makes it easy to introspect 511*3c321d95SSadaf Ebrahimi Kotlin types and build KotlinPoet Specs based on that data. 512*3c321d95SSadaf Ebrahimi 513*3c321d95SSadaf Ebrahimi The strategy for type introspection is driven by `ClassInspector`, which is a basic interface for 514*3c321d95SSadaf Ebrahimi looking up JVM information about a given Class. This optionally is used by the 515*3c321d95SSadaf Ebrahimi `toTypeSpec()`/`toFileSpec()` APIs in `kotlinpoet-metadata-specs` artifact to inform about 516*3c321d95SSadaf Ebrahimi Classes with information that isn’t present in metadata (overrides, JVM modifiers, etc). There 517*3c321d95SSadaf Ebrahimi are two batteries-included implementations available in `ReflectiveClassInspector` 518*3c321d95SSadaf Ebrahimi (for reflection) and `ElementsClassInspector` (for the javax Elements API in annotation 519*3c321d95SSadaf Ebrahimi processing). These implementations are available through their respective 520*3c321d95SSadaf Ebrahimi `kotlinpoet-classinspector-*` artifacts. For more information refer to the 521*3c321d95SSadaf Ebrahimi [KotlinPoet-metadata-specs README][kotlinpoet-metadata-specs]. 522*3c321d95SSadaf Ebrahimi 523*3c321d95SSadaf Ebrahimi At the time of this release the API is in experimental mode and has to be opted into via the 524*3c321d95SSadaf Ebrahimi `KotlinPoetMetadataPreview` annotation. 525*3c321d95SSadaf Ebrahimi 526*3c321d95SSadaf Ebrahimi * New: Kotlin 1.3.50. 527*3c321d95SSadaf Ebrahimi * New: A new constructor to simplify creation of `ParameterSpec` instances. 528*3c321d95SSadaf Ebrahimi * New: New `ClassName` constructors. 529*3c321d95SSadaf Ebrahimi * New: `TypeName` and subclasses can now store tags. 530*3c321d95SSadaf Ebrahimi * New: Optional parameters added to `toBuilder()` methods of most Specs. 531*3c321d95SSadaf Ebrahimi * New: `List` overrides for Spec methods that accept `vararg`s. 532*3c321d95SSadaf Ebrahimi * New: `CodeBlock.Builder.clear()` helper method. 533*3c321d95SSadaf Ebrahimi * New: `FunSpec.Builder.clearBody()` helper method. 534*3c321d95SSadaf Ebrahimi * Fix: Properly escape enum constant names. 535*3c321d95SSadaf Ebrahimi * Fix: Ensure trailing newlines in KDoc and function bodies. 536*3c321d95SSadaf Ebrahimi * Fix: `TypeVariableName`s with empty bounds will now default to `Any?`. 537*3c321d95SSadaf Ebrahimi * Fix: Don't emit parens for primary constructors. 538*3c321d95SSadaf Ebrahimi * Fix: `ClassName`s with empty simple names are not allowed anymore. 539*3c321d95SSadaf Ebrahimi * Fix: Throw if names contain illegal characters that can't be escaped with backticks. 540*3c321d95SSadaf Ebrahimi 541*3c321d95SSadaf Ebrahimi## Version 1.3.0 542*3c321d95SSadaf Ebrahimi 543*3c321d95SSadaf Ebrahimi_2019-05-30_ 544*3c321d95SSadaf Ebrahimi 545*3c321d95SSadaf Ebrahimi * New: Don't inline annotations in the primary constructor. 546*3c321d95SSadaf Ebrahimi * New: Force new lines when emitting primary constructors. 547*3c321d95SSadaf Ebrahimi * New: Support using MemberNames as arguments to %N. 548*3c321d95SSadaf Ebrahimi * New: Add more ClassName constants: ClassName.STRING, ClassName.LIST, etc. 549*3c321d95SSadaf Ebrahimi * New: Add ClassName.constructorReference() and MemberName.reference(). 550*3c321d95SSadaf Ebrahimi * New: Make %N accept MemberNames. 551*3c321d95SSadaf Ebrahimi * New: Escape spaces in import aliases. 552*3c321d95SSadaf Ebrahimi * New: Escape spaces in ClassNames. 553*3c321d95SSadaf Ebrahimi * New: Escape spaces in MemberNames. 554*3c321d95SSadaf Ebrahimi * New: Escape imports containing spaces. 555*3c321d95SSadaf Ebrahimi * New: Escape package name containing spaces. 556*3c321d95SSadaf Ebrahimi * New: Use 2-space indents. 557*3c321d95SSadaf Ebrahimi * New: Only indent one level on annotation values. 558*3c321d95SSadaf Ebrahimi * Fix: Pass only unique originating elements to Filer. 559*3c321d95SSadaf Ebrahimi * Fix: Fix bug with MemberNames in same package nested inside a class. 560*3c321d95SSadaf Ebrahimi 561*3c321d95SSadaf Ebrahimi## Version 1.2.0 562*3c321d95SSadaf Ebrahimi 563*3c321d95SSadaf Ebrahimi_2019-03-28_ 564*3c321d95SSadaf Ebrahimi 565*3c321d95SSadaf Ebrahimi * New: Add writeTo(Filer) and originating element API. 566*3c321d95SSadaf Ebrahimi * New: Make *Spec types taggable. 567*3c321d95SSadaf Ebrahimi * New: Make FunSpec.Builder#addCode take vararg Any?. 568*3c321d95SSadaf Ebrahimi * Fix: Import members from default package. 569*3c321d95SSadaf Ebrahimi * Fix: Add non-wrapping spaces in control flow creation methods. 570*3c321d95SSadaf Ebrahimi * Fix: Named "value" argument being omitted in annotation array types. 571*3c321d95SSadaf Ebrahimi 572*3c321d95SSadaf Ebrahimi## Version 1.1.0 573*3c321d95SSadaf Ebrahimi 574*3c321d95SSadaf Ebrahimi_2019-02-28_ 575*3c321d95SSadaf Ebrahimi 576*3c321d95SSadaf Ebrahimi * New: Kotlin 1.3.21. 577*3c321d95SSadaf Ebrahimi * New: Support referencing members using `%M` and `MemberName` type. 578*3c321d95SSadaf Ebrahimi * New: Add extensions for getting a `MemberName` from a `ClassName`, `KClass` and `Class`. 579*3c321d95SSadaf Ebrahimi * New: Allow passing `CodeBlock`s as arguments to `%P`. 580*3c321d95SSadaf Ebrahimi * New: Allow interface delegation for objects. 581*3c321d95SSadaf Ebrahimi * Fix: Don't emit visible whitespace in `toString()`. 582*3c321d95SSadaf Ebrahimi * Fix: Prevent line wrapping in weird places inside function signature. 583*3c321d95SSadaf Ebrahimi * Fix: No line wrapping between val and property name. 584*3c321d95SSadaf Ebrahimi * Fix: Allow passing line prefix into `LineWrapper` to enable proper line wrapping in KDoc. 585*3c321d95SSadaf Ebrahimi * Fix: Add newline for `TypeSpec` Kdoc with no tags. 586*3c321d95SSadaf Ebrahimi * Fix: Add newline for remaining Specs. 587*3c321d95SSadaf Ebrahimi * Fix: Fix kdoc formatting for property getter/setters. 588*3c321d95SSadaf Ebrahimi * Fix: Don't wrap single line comments inside `FunSpec`. 589*3c321d95SSadaf Ebrahimi * Fix: Add non-wrapping package name. 590*3c321d95SSadaf Ebrahimi * Fix: Remove n^2 algorithm in `CodeWriter.resolve()` by precomputing all of the nested simple names of a `TypeSpec`. 591*3c321d95SSadaf Ebrahimi * Fix: Fix edge case with empty enum classes. 592*3c321d95SSadaf Ebrahimi * Fix: Fix Nullable Type Parameter handling in `KType.asTypeName()`. 593*3c321d95SSadaf Ebrahimi * Fix: Fix incorrect long comment wrapping in `FileSpec`. 594*3c321d95SSadaf Ebrahimi * Fix: Attach primary constructor param/property KDoc to the element vs emitting it inside the type header. 595*3c321d95SSadaf Ebrahimi 596*3c321d95SSadaf Ebrahimi## Version 1.0.1 597*3c321d95SSadaf Ebrahimi 598*3c321d95SSadaf Ebrahimi_2019-01-02_ 599*3c321d95SSadaf Ebrahimi 600*3c321d95SSadaf Ebrahimi * New: Allow enums without constants. 601*3c321d95SSadaf Ebrahimi * New: Improved formatting of TypeSpec KDoc. 602*3c321d95SSadaf Ebrahimi * New: Support @property and @param KDoc tags in TypeSpec. 603*3c321d95SSadaf Ebrahimi * Fix: Use pre-formatted strings for arguments to %P. 604*3c321d95SSadaf Ebrahimi 605*3c321d95SSadaf Ebrahimi## Version 1.0.0 606*3c321d95SSadaf Ebrahimi 607*3c321d95SSadaf Ebrahimi_2018-12-10_ 608*3c321d95SSadaf Ebrahimi 609*3c321d95SSadaf Ebrahimi * New: Kotlin 1.3.11. 610*3c321d95SSadaf Ebrahimi * Fix: Prevent wrapping in import statements. 611*3c321d95SSadaf Ebrahimi 612*3c321d95SSadaf Ebrahimi## Version 1.0.0-RC3 613*3c321d95SSadaf Ebrahimi 614*3c321d95SSadaf Ebrahimi_2018-11-28_ 615*3c321d95SSadaf Ebrahimi 616*3c321d95SSadaf Ebrahimi * New: Kotlin 1.3.10. 617*3c321d95SSadaf Ebrahimi * New: Add `%P` placeholder for string templates. 618*3c321d95SSadaf Ebrahimi * New: Add support for receiver kdoc. 619*3c321d95SSadaf Ebrahimi * New: Avoid emitting `Unit` as return type. 620*3c321d95SSadaf Ebrahimi * New: Add support for empty setters. 621*3c321d95SSadaf Ebrahimi * New: Add checks for inline classes. 622*3c321d95SSadaf Ebrahimi * New: Escape property and variable names if keywords. 623*3c321d95SSadaf Ebrahimi * New: Replace `%>`, `%<`, `%[`, `%]` placeholders with `⇥`, `⇤`, `«`, `»`. 624*3c321d95SSadaf Ebrahimi * New: Replace `%W` with space, and add `·` as a non-breaking space. 625*3c321d95SSadaf Ebrahimi * New: Change `TypeName` to sealed class. 626*3c321d95SSadaf Ebrahimi * New: Documentation improvements. 627*3c321d95SSadaf Ebrahimi * New: Replace `TypeName` modifier methods with `copy()`. 628*3c321d95SSadaf Ebrahimi * New: Rename members of `WildcardTypeName` to match with the producer/consumer generics model. 629*3c321d95SSadaf Ebrahimi * New: Rename `TypeName.nullable` into `TypeName.isNullable`. 630*3c321d95SSadaf Ebrahimi * New: Rename `LambdaTypeName.suspending` into `LambdaTypeName.isSuspending`. 631*3c321d95SSadaf Ebrahimi * New: Rename `TypeVariableName.reified` into `TypeVariableName.isReified`. 632*3c321d95SSadaf Ebrahimi * Fix: Emit star-projection only for types with `Any?` upper bound. 633*3c321d95SSadaf Ebrahimi * Fix: Fold property with escaped name. 634*3c321d95SSadaf Ebrahimi 635*3c321d95SSadaf Ebrahimi## Version 1.0.0-RC2 636*3c321d95SSadaf Ebrahimi 637*3c321d95SSadaf Ebrahimi_2018-10-22_ 638*3c321d95SSadaf Ebrahimi 639*3c321d95SSadaf Ebrahimi * New: Kotlin 1.2.71. 640*3c321d95SSadaf Ebrahimi * New: README improvements. 641*3c321d95SSadaf Ebrahimi * New: Allow opening braces and params in `beginControlFlow()`. 642*3c321d95SSadaf Ebrahimi * New: Add KDoc to `ParameterSpec`, collapse into parent KDoc. 643*3c321d95SSadaf Ebrahimi * New: Support `TypeVariable`s in `PropertySpec`. 644*3c321d95SSadaf Ebrahimi * New: Add parens for annotated types in `LambdaTypeName`. 645*3c321d95SSadaf Ebrahimi * New: Improve error messaging and documentation for inline properties. 646*3c321d95SSadaf Ebrahimi * New: Allow sealed classes to declare abstract properties. 647*3c321d95SSadaf Ebrahimi * New: Added `buildCodeBlock()` helper function. 648*3c321d95SSadaf Ebrahimi * New: Allow using `CodeBlock`s with statements as property initializers and default parameter values. 649*3c321d95SSadaf Ebrahimi * New: Rename `NameAllocator.clone()` into `NameAllocator.copy(). 650*3c321d95SSadaf Ebrahimi * New: Rename `TypeName.asNonNullable()` to `TypeName.asNonNull()`. 651*3c321d95SSadaf Ebrahimi * New: Remove `PropertySpec.varBuilder()` (use `mutable()` instead). 652*3c321d95SSadaf Ebrahimi * New: Allow importing top-level members in default package. 653*3c321d95SSadaf Ebrahimi * New: Add overloads to add KDoc to return type. 654*3c321d95SSadaf Ebrahimi * Fix: Distinguishing `IntArray` and `Array<Int>` when creating `TypeName`. 655*3c321d95SSadaf Ebrahimi * Fix: Use `TypeName` instead of `ClassName` as parameter type of `plusParameter()`. 656*3c321d95SSadaf Ebrahimi * Fix: Keep type-parameter variance when constructing `TypeName` from `KType`. 657*3c321d95SSadaf Ebrahimi * Fix: Don't validate modifiers when merging properties with primary constructor parameters. 658*3c321d95SSadaf Ebrahimi * Fix: Escape $ characters in formatted strings. 659*3c321d95SSadaf Ebrahimi * Fix: `FileSpec.Builder` blank package and subfolder fix. 660*3c321d95SSadaf Ebrahimi * Fix: Append new line at end of parameter KDoc. 661*3c321d95SSadaf Ebrahimi * Fix: Add parameter KDoc in `toBuilder()`. 662*3c321d95SSadaf Ebrahimi 663*3c321d95SSadaf Ebrahimi## Version 1.0.0-RC1 664*3c321d95SSadaf Ebrahimi 665*3c321d95SSadaf Ebrahimi_2018-07-16_ 666*3c321d95SSadaf Ebrahimi 667*3c321d95SSadaf Ebrahimi * New: Escape keywords in imports and canonical class names. 668*3c321d95SSadaf Ebrahimi * New: Improve `external` support. 669*3c321d95SSadaf Ebrahimi * New: Extensions for `KType` and `KTypeParameter`. 670*3c321d95SSadaf Ebrahimi * New: Add builder methods to simplify adding common kotlin.jvm annotations. 671*3c321d95SSadaf Ebrahimi * New: Enums are able to have companion objects. 672*3c321d95SSadaf Ebrahimi * New: Add missing primaryConstructor & companionObject to `TypeSpec#toBuilder()`. 673*3c321d95SSadaf Ebrahimi * New: Make subtype checking vals inside Kind public. 674*3c321d95SSadaf Ebrahimi * New: Escape (class/property/function/variable) names automatically if they contain space, hyphen, or other symbols. 675*3c321d95SSadaf Ebrahimi * New: Improve `ParameterizedTypeName` API. 676*3c321d95SSadaf Ebrahimi * New: Add `WildcardTypeName.STAR` constant. 677*3c321d95SSadaf Ebrahimi * New: Expose mutable builder properties and move their validations to build-time. 678*3c321d95SSadaf Ebrahimi * Fix: Use regular indents for parameter lists. 679*3c321d95SSadaf Ebrahimi * Fix: Inline annotations on properties defined in primary constructor. 680*3c321d95SSadaf Ebrahimi * Fix: Use `Any?` as the default type variable bounds. 681*3c321d95SSadaf Ebrahimi * Fix: Fix importing annotated `TypeName`. 682*3c321d95SSadaf Ebrahimi * Fix: If any primary constructor property has KDoc, put properties on new lines. 683*3c321d95SSadaf Ebrahimi * Fix: Properly emit where block in type signature. 684*3c321d95SSadaf Ebrahimi * Fix: Avoid type name collisions in primary constructor. 685*3c321d95SSadaf Ebrahimi * Fix: Remove implicit `TypeVariable` bound when more bounds are added. 686*3c321d95SSadaf Ebrahimi * Fix: Combine annotations and modifiers from constructor params and properties. 687*3c321d95SSadaf Ebrahimi * Fix: Replace delegate constructor args along with the constructor. 688*3c321d95SSadaf Ebrahimi 689*3c321d95SSadaf Ebrahimi## Version 0.7.0 690*3c321d95SSadaf Ebrahimi 691*3c321d95SSadaf Ebrahimi_2018-02-16_ 692*3c321d95SSadaf Ebrahimi 693*3c321d95SSadaf Ebrahimi * New: Increase indent to 4 spaces. 694*3c321d95SSadaf Ebrahimi * New: Delegate super interfaces as constructor parameters. 695*3c321d95SSadaf Ebrahimi * New: Support `PropertySpec`s as `CodeBlock` literals. 696*3c321d95SSadaf Ebrahimi * New: Support KDoc for `TypeAliasSpec`. 697*3c321d95SSadaf Ebrahimi * New: Allow for adding an initializer block inside a companion object. 698*3c321d95SSadaf Ebrahimi * New: Escape name in `ParameterSpec` which is also a keyword. 699*3c321d95SSadaf Ebrahimi * New: Escape names in statements. 700*3c321d95SSadaf Ebrahimi * New: Set com.squareup.kotlinpoet as automatic module name. 701*3c321d95SSadaf Ebrahimi * New: Support suspending lambda types. 702*3c321d95SSadaf Ebrahimi * New: Support named `LambdaTypeName` parameters. 703*3c321d95SSadaf Ebrahimi * New: Support dynamic type. 704*3c321d95SSadaf Ebrahimi * New: Disallow wildcard imports. 705*3c321d95SSadaf Ebrahimi * New: Depend on Kotlin 1.2.21. 706*3c321d95SSadaf Ebrahimi * Fix: Correct handling of super-classes/interfaces on anonymous classes. 707*3c321d95SSadaf Ebrahimi * Fix: Fix boundary filtering to `Any?`. 708*3c321d95SSadaf Ebrahimi * Fix: Wrap long property initializers. 709*3c321d95SSadaf Ebrahimi * Fix: Fix formatting and indentation of parameter lists. 710*3c321d95SSadaf Ebrahimi 711*3c321d95SSadaf Ebrahimi## Version 0.6.0 712*3c321d95SSadaf Ebrahimi 713*3c321d95SSadaf Ebrahimi_2017-11-03_ 714*3c321d95SSadaf Ebrahimi 715*3c321d95SSadaf Ebrahimi * New: Support lambda extensions. 716*3c321d95SSadaf Ebrahimi * New: Support renames in imports like `import bar.Bar as bBar`. 717*3c321d95SSadaf Ebrahimi * New: Support extension and inline properties. 718*3c321d95SSadaf Ebrahimi * New: Support reified types. 719*3c321d95SSadaf Ebrahimi * New: Expose enclosed types inside `LambdaTypeName`. 720*3c321d95SSadaf Ebrahimi * New: Depend on Kotlin Kotlin 1.1.51. 721*3c321d95SSadaf Ebrahimi * New: Improved API and formatting of annotations. 722*3c321d95SSadaf Ebrahimi * New: Improved multiplatform support. 723*3c321d95SSadaf Ebrahimi * Fix: Escape function and package names if they are a Kotlin keyword. 724*3c321d95SSadaf Ebrahimi * Fix: Properly format WildcardTypeName's class declaration. 725*3c321d95SSadaf Ebrahimi 726*3c321d95SSadaf Ebrahimi 727*3c321d95SSadaf Ebrahimi## Version 0.5.0 728*3c321d95SSadaf Ebrahimi 729*3c321d95SSadaf Ebrahimi_2017-09-13_ 730*3c321d95SSadaf Ebrahimi 731*3c321d95SSadaf Ebrahimi * New: Rename `addFun()` to `addFunction()`. 732*3c321d95SSadaf Ebrahimi * New: Rename `KotlinFile` to `FileSpec`. 733*3c321d95SSadaf Ebrahimi * New: Rename `KotlinFile.addFileAnnotation()` to `addAnnotation()`. 734*3c321d95SSadaf Ebrahimi * New: Rename `KotlinFile.addFileComment()` to `addComment()`. 735*3c321d95SSadaf Ebrahimi * New: Support cross-platform code, including `HEADER` and `IMPL` modifiers. 736*3c321d95SSadaf Ebrahimi * New: Support type variables for type aliases. 737*3c321d95SSadaf Ebrahimi * New: Support constructor delegation. 738*3c321d95SSadaf Ebrahimi * New: Support named companion objects. 739*3c321d95SSadaf Ebrahimi * New: Depend on Kotlin 1.1.4-3. 740*3c321d95SSadaf Ebrahimi * Fix: Format one parameter per line when there are more than two parameters. 741*3c321d95SSadaf Ebrahimi * Fix: Don't emit braces when the constructor body is empty. 742*3c321d95SSadaf Ebrahimi * Fix: Do not invoke superclass constructor when no primary constructor. 743*3c321d95SSadaf Ebrahimi * Fix: Enforce the right modifiers on functions. 744*3c321d95SSadaf Ebrahimi 745*3c321d95SSadaf Ebrahimi 746*3c321d95SSadaf Ebrahimi## Version 0.4.0 747*3c321d95SSadaf Ebrahimi 748*3c321d95SSadaf Ebrahimi_2017-08-08_ 749*3c321d95SSadaf Ebrahimi 750*3c321d95SSadaf Ebrahimi * New: Change KotlinPoet's extensions like `asClassName()` to be top-level functions. 751*3c321d95SSadaf Ebrahimi * New: Add declaration-site variance support. 752*3c321d95SSadaf Ebrahimi * New: Improve handling of single expression bodies. 753*3c321d95SSadaf Ebrahimi * New: Support file annotations. 754*3c321d95SSadaf Ebrahimi * New: Support imports from the top-level file. 755*3c321d95SSadaf Ebrahimi * New: Accept superclass constructor parameters. 756*3c321d95SSadaf Ebrahimi * New: Support primary constructors using the `constructor` keyword. 757*3c321d95SSadaf Ebrahimi * Fix: Don't emit setter parameter types. 758*3c321d95SSadaf Ebrahimi * Fix: Support Kotlin keywords in `NameAllocator`. 759*3c321d95SSadaf Ebrahimi * Fix: Emit the right default parameters for primary constructors. 760*3c321d95SSadaf Ebrahimi * Fix: Format annotations properly when used as parameters. 761*3c321d95SSadaf Ebrahimi * Fix: Recognize imports when emitting nullable types. 762*3c321d95SSadaf Ebrahimi * Fix: Call through to the superclass constructor when superclass has a no-args constructor. 763*3c321d95SSadaf Ebrahimi * Fix: Omit class braces if all properties are declared in primary constructor. 764*3c321d95SSadaf Ebrahimi * Fix: Don't emit empty class bodies. 765*3c321d95SSadaf Ebrahimi * Fix: Emit the right syntax for declaring multiple generic type constraints. 766*3c321d95SSadaf Ebrahimi * Fix: Support properties on objects, companions and interfaces. 767*3c321d95SSadaf Ebrahimi * Fix: Use `AnnotationSpec` for throws. 768*3c321d95SSadaf Ebrahimi 769*3c321d95SSadaf Ebrahimi 770*3c321d95SSadaf Ebrahimi## Version 0.3.0 771*3c321d95SSadaf Ebrahimi 772*3c321d95SSadaf Ebrahimi_2017-06-11_ 773*3c321d95SSadaf Ebrahimi 774*3c321d95SSadaf Ebrahimi * New: Objects and companion objects. 775*3c321d95SSadaf Ebrahimi * New: `TypeAliasSpec` to create type aliases. 776*3c321d95SSadaf Ebrahimi * New: `LambdaTypeName` to create lambda types. 777*3c321d95SSadaf Ebrahimi * New: Collapse property declarations into constructor params. 778*3c321d95SSadaf Ebrahimi * New: Extension and invoke functions for creating type names: `Runnable::class.asClassName()`. 779*3c321d95SSadaf Ebrahimi * New: Basic support for expression bodies. 780*3c321d95SSadaf Ebrahimi * New: Basic support for custom accessors. 781*3c321d95SSadaf Ebrahimi * New: Remove `Filer` writing and originating elements concept. These stem from `javac` annotation 782*3c321d95SSadaf Ebrahimi processors. 783*3c321d95SSadaf Ebrahimi * Fix: Generate valid annotation classes. 784*3c321d95SSadaf Ebrahimi * Fix: Use `KModifier` for varargs. 785*3c321d95SSadaf Ebrahimi * Fix: Use `ParameterizedTypeName` for array types. 786*3c321d95SSadaf Ebrahimi * Fix: Extract Kotlin name from `KClass` instead of Java name. 787*3c321d95SSadaf Ebrahimi * Fix: Emit valid class literals: `Double::class` instead of `Double.class`. 788*3c321d95SSadaf Ebrahimi * Fix: Emit modifiers in the expected order. 789*3c321d95SSadaf Ebrahimi * Fix: Emit the correct syntax for enum classes and overridden members. 790*3c321d95SSadaf Ebrahimi 791*3c321d95SSadaf Ebrahimi 792*3c321d95SSadaf Ebrahimi## Version 0.2.0 793*3c321d95SSadaf Ebrahimi 794*3c321d95SSadaf Ebrahimi_2017-05-21_ 795*3c321d95SSadaf Ebrahimi 796*3c321d95SSadaf Ebrahimi * New: Flip API signatures to be (name, type) instead of (type, name). 797*3c321d95SSadaf Ebrahimi * New: Support for nullable types. 798*3c321d95SSadaf Ebrahimi * New: Support delegated properties. 799*3c321d95SSadaf Ebrahimi * New: Extension functions. 800*3c321d95SSadaf Ebrahimi * New: Support top-level properties. 801*3c321d95SSadaf Ebrahimi * Fix: Inheritance should use `:` instead of `extends` and `implements`. 802*3c321d95SSadaf Ebrahimi * Fix: Make initializerBlock emit `init {}`. 803*3c321d95SSadaf Ebrahimi 804*3c321d95SSadaf Ebrahimi 805*3c321d95SSadaf Ebrahimi## Version 0.1.0 806*3c321d95SSadaf Ebrahimi 807*3c321d95SSadaf Ebrahimi_2017-05-16_ 808*3c321d95SSadaf Ebrahimi 809*3c321d95SSadaf Ebrahimi * Initial public release. 810*3c321d95SSadaf Ebrahimi 811*3c321d95SSadaf Ebrahimi [kotlinpoet-metadata]: ../kotlinpoet_metadata 812*3c321d95SSadaf Ebrahimi [kotlinpoet-metadata-specs]: ../kotlinpoet_metadata_specs 813*3c321d95SSadaf Ebrahimi [explicit-api-mode]: https://kotlinlang.org/docs/reference/whatsnew14.html#explicit-api-mode-for-library-authors 814*3c321d95SSadaf Ebrahimi [issue-999]: https://github.com/square/kotlinpoet/issues/999 815*3c321d95SSadaf Ebrahimi [ksp]: https://github.com/google/ksp 816*3c321d95SSadaf Ebrahimi [ksp-interop-docs]: https://square.github.io/kotlinpoet/interop-ksp/ 817*3c321d95SSadaf Ebrahimi [javapoet]: https://github.com/square/javapoet 818*3c321d95SSadaf Ebrahimi [javapoet-interop-docs]: https://square.github.io/kotlinpoet/interop-javapoet/ 819*3c321d95SSadaf Ebrahimi [kt-18706]: https://youtrack.jetbrains.com/issue/KT-18706 820*3c321d95SSadaf Ebrahimi 821*3c321d95SSadaf Ebrahimi [martinbonnin]: https://github.com/martinbonnin 822*3c321d95SSadaf Ebrahimi [idanakav]: https://github.com/idanakav 823*3c321d95SSadaf Ebrahimi [goooler]: https://github.com/goooler 824*3c321d95SSadaf Ebrahimi [anandwana001]: https://github.com/anandwana001 825*3c321d95SSadaf Ebrahimi [evant]: https://github.com/evant 826*3c321d95SSadaf Ebrahimi [glureau]: https://github.com/glureau 827*3c321d95SSadaf Ebrahimi [liujingxing]: https://github.com/liujingxing 828*3c321d95SSadaf Ebrahimi [BoD]: https://github.com/BoD 829*3c321d95SSadaf Ebrahimi [WhosNickDoglio]: https://github.com/WhosNickDoglio 830*3c321d95SSadaf Ebrahimi [sullis]: https://github.com/sullis 831*3c321d95SSadaf Ebrahimi [DRSchlaubi]: https://github.com/DRSchlaubi 832*3c321d95SSadaf Ebrahimi [seriouslyhypersonic]: https://github.com/seriouslyhypersonic 833*3c321d95SSadaf Ebrahimi [ephemient]: https://github.com/ephemient 834*3c321d95SSadaf Ebrahimi [dkilmer]: https://github.com/dkilmer 835*3c321d95SSadaf Ebrahimi [aksh1618]: https://github.com/aksh1618 836*3c321d95SSadaf Ebrahimi [zsqw123]: https://github.com/zsqw123 837*3c321d95SSadaf Ebrahimi [roihershberg]: https://github.com/roihershberg 838*3c321d95SSadaf Ebrahimi [popematt]: https://github.com/popematt 839*3c321d95SSadaf Ebrahimi [bitPogo]: https://github.com/bitPogo 840*3c321d95SSadaf Ebrahimi [mars885]: https://github.com/mars885 841*3c321d95SSadaf Ebrahimi [sjudd]: https://github.com/sjudd 842*3c321d95SSadaf Ebrahimi [Sironheart]: https://github.com/Sironheart 843*3c321d95SSadaf Ebrahimi [polarene]: https://github.com/polarene 844*3c321d95SSadaf Ebrahimi [DeoTimeTheGithubUser]: https://github.com/DeoTimeTheGithubUser 845*3c321d95SSadaf Ebrahimi [drawers]: https://github.com/drawers 846*3c321d95SSadaf Ebrahimi [rickclephas]: https://github.com/rickclephas 847*3c321d95SSadaf Ebrahimi [Squiry]: https://github.com/Squiry 848*3c321d95SSadaf Ebrahimi [Omico]: https://github.com/Omico 849*3c321d95SSadaf Ebrahimi [RBusarow]: https://github.com/RBusarow 850*3c321d95SSadaf Ebrahimi [fejesjoco]: https://github.com/fejesjoco 851*3c321d95SSadaf Ebrahimi [takahirom]: https://github.com/takahirom 852*3c321d95SSadaf Ebrahimi [mcarleio]: https://github.com/mcarleio 853*3c321d95SSadaf Ebrahimi [gabrielittner]: https://github.com/gabrielittner 854*3c321d95SSadaf Ebrahimi [jisungbin]: https://github.com/jisungbin 855*3c321d95SSadaf Ebrahimi [hfhbd]: https://github.com/hfhbd 856*3c321d95SSadaf Ebrahimi [sgjesse]: https://github.com/sgjesse 857*3c321d95SSadaf Ebrahimi [sebek64]: https://github.com/sebek64 858*3c321d95SSadaf Ebrahimi [DanielGronau]: https://github.com/DanielGronau 859*3c321d95SSadaf Ebrahimi [mitasov-ra]: https://github.com/mitasov-ra 860