xref: /aosp_15_r20/external/kotlinpoet/docs/changelog.md (revision 3c321d951dd070fb96f8ba59e952ffc3131379a0)
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