actions/cache
### [`v3.2.2`](https://togithub.com/actions/cache/releases/tag/v3.2.2)
[Compare Source](https://togithub.com/actions/cache/compare/v3.2.1...v3.2.2)
#### What's Changed
- Fix formatting error in restore/README.md by [@me-and](https://togithub.com/me-and) in [https://github.com/actions/cache/pull/1044](https://togithub.com/actions/cache/pull/1044)
- save/README.md: Fix typo in example by [@mmuetzel](https://togithub.com/mmuetzel) in [https://github.com/actions/cache/pull/1040](https://togithub.com/actions/cache/pull/1040)
- README.md: remove outdated Windows cache tip link by [@me-and](https://togithub.com/me-and) in [https://github.com/actions/cache/pull/1042](https://togithub.com/actions/cache/pull/1042)
- Revert compression changes related to windows but keep version logging by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1049](https://togithub.com/actions/cache/pull/1049)
#### New Contributors
- [@me-and](https://togithub.com/me-and) made their first contribution in [https://github.com/actions/cache/pull/1044](https://togithub.com/actions/cache/pull/1044)
- [@mmuetzel](https://togithub.com/mmuetzel) made their first contribution in [https://github.com/actions/cache/pull/1040](https://togithub.com/actions/cache/pull/1040)
**Full Changelog**: https://github.com/actions/cache/compare/v3.2.1...v3.2.2
### [`v3.2.1`](https://togithub.com/actions/cache/releases/tag/v3.2.1)
[Compare Source](https://togithub.com/actions/cache/compare/v3.2.0...v3.2.1)
##### What's Changed
- Release compression related changes for windows by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1039](https://togithub.com/actions/cache/pull/1039)
- Upgrade codeql to v2 by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1023](https://togithub.com/actions/cache/pull/1023)
**Full Changelog**: https://github.com/actions/cache/compare/v3.2.0...v3.2.1
### [`v3.2.0`](https://togithub.com/actions/cache/releases/tag/v3.2.0)
[Compare Source](https://togithub.com/actions/cache/compare/v3.0.11...v3.2.0)
#### What's Changed
- fix wrong timeout env var key in README.md by [@walterddr](https://togithub.com/walterddr) in [https://github.com/actions/cache/pull/959](https://togithub.com/actions/cache/pull/959)
- Updated release doc with correct env variable by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/960](https://togithub.com/actions/cache/pull/960)
- Create pull_request_template.md by [@pdotl](https://togithub.com/pdotl) in [https://github.com/actions/cache/pull/963](https://togithub.com/actions/cache/pull/963)
- Update README with clearer info about cache-hit and its value by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/961](https://togithub.com/actions/cache/pull/961)
- Change datadog/squid to Ubuntu/squid in CI check by [@bishal-pdMSFT](https://togithub.com/bishal-pdMSFT) in [https://github.com/actions/cache/pull/976](https://togithub.com/actions/cache/pull/976)
- Add more details to version section in readme by [@bishal-pdMSFT](https://togithub.com/bishal-pdMSFT) in [https://github.com/actions/cache/pull/971](https://togithub.com/actions/cache/pull/971)
- Update hashFiles documentation reference by [@asaf400](https://togithub.com/asaf400) in [https://github.com/actions/cache/pull/979](https://togithub.com/actions/cache/pull/979)
- Updated link for cache segment download info by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/986](https://togithub.com/actions/cache/pull/986)
- Readme update for deleting caches by [@t-dedah](https://togithub.com/t-dedah) in [https://github.com/actions/cache/pull/981](https://togithub.com/actions/cache/pull/981)
- Add oncall logic to assign issues and PRs by [@vsvipul](https://togithub.com/vsvipul) in [https://github.com/actions/cache/pull/997](https://togithub.com/actions/cache/pull/997)
- Bump minimatch from 3.0.4 to 3.1.2 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/actions/cache/pull/998](https://togithub.com/actions/cache/pull/998)
- Revert "Bump minimatch from 3.0.4 to 3.1.2" by [@vsvipul](https://togithub.com/vsvipul) in [https://github.com/actions/cache/pull/1005](https://togithub.com/actions/cache/pull/1005)
- Fix npm vulnerability by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1007](https://togithub.com/actions/cache/pull/1007)
- refactor: Use early return pattern to avoid nested conditions by [@jongwooo](https://togithub.com/jongwooo) in [https://github.com/actions/cache/pull/1013](https://togithub.com/actions/cache/pull/1013)
- Use cache in check-dist.yml by [@jongwooo](https://togithub.com/jongwooo) in [https://github.com/actions/cache/pull/1004](https://togithub.com/actions/cache/pull/1004)
- chore: Use built-in cache action to cache dependencies by [@jongwooo](https://togithub.com/jongwooo) in [https://github.com/actions/cache/pull/1014](https://togithub.com/actions/cache/pull/1014)
- Updated node example by [@t-dedah](https://togithub.com/t-dedah) in [https://github.com/actions/cache/pull/1008](https://togithub.com/actions/cache/pull/1008)
- Fix: Node npm doc example by [@apascualm](https://togithub.com/apascualm) in [https://github.com/actions/cache/pull/1026](https://togithub.com/actions/cache/pull/1026)
- docs: fix an invalid link in workarounds.md by [@teatimeguest](https://togithub.com/teatimeguest) in [https://github.com/actions/cache/pull/929](https://togithub.com/actions/cache/pull/929)
- General Availability release for granular cache by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/1035](https://togithub.com/actions/cache/pull/1035) More details here on [beta](https://togithub.com/actions/cache/discussions/1020) release.
#### New Contributors
- [@walterddr](https://togithub.com/walterddr) made their first contribution in [https://github.com/actions/cache/pull/959](https://togithub.com/actions/cache/pull/959)
- [@asaf400](https://togithub.com/asaf400) made their first contribution in [https://github.com/actions/cache/pull/979](https://togithub.com/actions/cache/pull/979)
- [@jongwooo](https://togithub.com/jongwooo) made their first contribution in [https://github.com/actions/cache/pull/1013](https://togithub.com/actions/cache/pull/1013)
- [@apascualm](https://togithub.com/apascualm) made their first contribution in [https://github.com/actions/cache/pull/1026](https://togithub.com/actions/cache/pull/1026)
- [@teatimeguest](https://togithub.com/teatimeguest) made their first contribution in [https://github.com/actions/cache/pull/929](https://togithub.com/actions/cache/pull/929)
**Full Changelog**: https://github.com/actions/cache/compare/v3...v3.2.0
actions/checkout
### [`v3.3.0`](https://togithub.com/actions/checkout/releases/tag/v3.3.0)
[Compare Source](https://togithub.com/actions/checkout/compare/v3.2.0...v3.3.0)
##### What's Changed
- Implement branch list using callbacks from exec function by [@cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1045](https://togithub.com/actions/checkout/pull/1045)
- Add in explicit reference to private checkout options by [@vanZeben](https://togithub.com/vanZeben) in [https://github.com/actions/checkout/pull/1050](https://togithub.com/actions/checkout/pull/1050)
- Fix comment typos (that got added in [#770](https://togithub.com/actions/checkout/issues/770)) by [@lurch](https://togithub.com/lurch) in [https://github.com/actions/checkout/pull/1057](https://togithub.com/actions/checkout/pull/1057)
##### New Contributors
- [@vanZeben](https://togithub.com/vanZeben) made their first contribution in [https://github.com/actions/checkout/pull/1050](https://togithub.com/actions/checkout/pull/1050)
- [@lurch](https://togithub.com/lurch) made their first contribution in [https://github.com/actions/checkout/pull/1057](https://togithub.com/actions/checkout/pull/1057)
**Full Changelog**: https://github.com/actions/checkout/compare/v3.2.0...v3.3.0
### [`v3.2.0`](https://togithub.com/actions/checkout/releases/tag/v3.2.0)
[Compare Source](https://togithub.com/actions/checkout/compare/v3.1.0...v3.2.0)
##### What's Changed
- Add GitHub Action to perform release by [@rentziass](https://togithub.com/rentziass) in [https://github.com/actions/checkout/pull/942](https://togithub.com/actions/checkout/pull/942)
- Fix status badge by [@ScottBrenner](https://togithub.com/ScottBrenner) in [https://github.com/actions/checkout/pull/967](https://togithub.com/actions/checkout/pull/967)
- Replace datadog/squid with ubuntu/squid Docker image by [@cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1002](https://togithub.com/actions/checkout/pull/1002)
- Wrap pipeline commands for submoduleForeach in quotes by [@jokreliable](https://togithub.com/jokreliable) in [https://github.com/actions/checkout/pull/964](https://togithub.com/actions/checkout/pull/964)
- Update [@actions/io](https://togithub.com/actions/io) to 1.1.2 by [@cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1029](https://togithub.com/actions/checkout/pull/1029)
- Upgrading version to 3.2.0 by [@vmjoseph](https://togithub.com/vmjoseph) in [https://github.com/actions/checkout/pull/1039](https://togithub.com/actions/checkout/pull/1039)
##### New Contributors
- [@ScottBrenner](https://togithub.com/ScottBrenner) made their first contribution in [https://github.com/actions/checkout/pull/967](https://togithub.com/actions/checkout/pull/967)
- [@cory-miller](https://togithub.com/cory-miller) made their first contribution in [https://github.com/actions/checkout/pull/1002](https://togithub.com/actions/checkout/pull/1002)
- [@jokreliable](https://togithub.com/jokreliable) made their first contribution in [https://github.com/actions/checkout/pull/964](https://togithub.com/actions/checkout/pull/964)
- [@vmjoseph](https://togithub.com/vmjoseph) made their first contribution in [https://github.com/actions/checkout/pull/1039](https://togithub.com/actions/checkout/pull/1039)
**Full Changelog**: https://github.com/actions/checkout/compare/v3.1.0...v3.2.0
actions/upload-artifact
### [`v3.1.2`](https://togithub.com/actions/upload-artifact/releases/tag/v3.1.2)
[Compare Source](https://togithub.com/actions/upload-artifact/compare/v3.1.1...v3.1.2)
- Update all `@actions/*` NPM packages to their latest versions- [#374](https://togithub.com/actions/upload-artifact/issues/374)
- Update all dev dependencies to their most recent versions - [#375](https://togithub.com/actions/upload-artifact/issues/375)
detekt/detekt
### [`v1.22.0`](https://togithub.com/detekt/detekt/releases/tag/v1.22.0)
We're extremely excited to announce the next upcoming stable release of Detekt: 1.22.0 🚀
This release is coming with 16 new rules, 2 new rulesets and several new functionalities & APIs.
We've also introduced the [**Detekt Marketplace**](https://detekt.dev/marketplace), a place for users to share their 3rd party rules and extensions.
We want to take the opportunity to thank [our Sponsors](https://togithub.com/sponsors/detekt) and our Contributors for testing, bug reporting and helping us release this new version of Detekt. You're more than welcome to join our community on the [#detekt](https://kotlinlang.slack.com/archives/C88E12QH4) channel on KotlinLang's Slack (you can [get an invite here](https://surveys.jetbrains.com/s3/kotlin-slack-sign-up)).
##### Notable Changes
- We're introducing the [**Detekt Marketplace**](https://detekt.dev/marketplace), a place where you can add your own 3rd party extension such as rule, plugins, custom reporter, etc. - [#5191](https://togithub.com/detekt/detekt/pull/5191)
- Our website is now versioned. You can find the changes for each version using the dropdown menu on the top bar. Documentation for the upcoming version (next) [can be found here](https://detekt.dev/docs/next/intro).
- We added **16** new Rules to Detekt
- `AlsoCouldBeApply` - [#5333](https://togithub.com/detekt/detekt/pull/5333)
- `MultilineRawStringIndentation` - [#5058](https://togithub.com/detekt/detekt/pull/5058)
- `TrimMultilineRawString` - [#5051](https://togithub.com/detekt/detekt/pull/5051)
- `UnnecessaryNotNullCheck` - [#5218](https://togithub.com/detekt/detekt/pull/5218)
- `UnnecessaryPartOfBinaryExpression` - [#5203](https://togithub.com/detekt/detekt/pull/5203)
- `UseSumOfInsteadOfFlatMapSize` - [#5405](https://togithub.com/detekt/detekt/pull/5405)
- `FunctionReturnTypeSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256)
- `FunctionSignature` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256)
- `FunctionStartOfBodySpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256)
- `NullableTypeSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256)
- `ParameterListSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256)
- `SpacingBetweenFunctionNameAndOpeningParenthesis` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256)
- `TrailingCommaOnCallSite` from KtLint - [#5312](https://togithub.com/detekt/detekt/pull/5312)
- `TrailingCommaOnDeclarationSite` from KtLint - [#5312](https://togithub.com/detekt/detekt/pull/5312)
- `TypeParameterListSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256)
- We added a new ruleset called `detekt-rules-ruleauthors` containing rules for Rule Authors to enforce best practices on Detekt rules such as the new `ViolatesTypeResolutionRequirements` - [#5129](https://togithub.com/detekt/detekt/pull/5129) [#5182](https://togithub.com/detekt/detekt/pull/5182)
- We added a new ruleset called `detekt-rules-libraries` containing rules mostly useful for Library Authors - We moved the following rules inside `ForbiddenPublicDataClass`, `LibraryCodeMustSpecifyReturnType`, `LibraryEntitiesShouldNotBePublic` this new ruleset - See Migration below on how to migrate [#5360](https://togithub.com/detekt/detekt/pull/5360)
- We added support for JVM toolchain. This means that Detekt will now respect the JDK toolchain you specify on your Gradle configuration. You will also be able to specify a custom JDK home with the `--jdk-home` CLI parameter - [#5269](https://togithub.com/detekt/detekt/pull/5269)
- Improvement for Type Resolution
- We will now skip rules annotated with `@RequiresTypeResolution` when without Type Resolution - [#5176](https://togithub.com/detekt/detekt/pull/5176)
- We will warn users if they run rules requiring Type Resolution when Type Resolution is disabled, so they're not silently skipped - [#5226](https://togithub.com/detekt/detekt/pull/5226)
- Improvement for Config Management
- We added exhaustiveness check during config validation. You can enable it `checkExhaustiveness: true` in your config file. This is disabled by default. - [#5089](https://togithub.com/detekt/detekt/pull/5089)
- We added support for generating custom configuration for rule authors - [#5080](https://togithub.com/detekt/detekt/pull/5080)
- Deprecations & Removals
- We deprecated the MultiRule class as it was overly complicated. The suggested approach is to just provide separated rules. - [#5161](https://togithub.com/detekt/detekt/pull/5161)
- The `--fail-fast` CLI flag (and `failFast` Gradle property) has been removed. It was deprecated since 1.16.x - [#5290](https://togithub.com/detekt/detekt/pull/5290)
- We **deprecated** the following rules `DuplicateCaseInWhenExpression`, `MissingWhenCase`, `RedundantElseInWhen` as the Kotlin Compiler is already reporting errors for those scenarios - [#5309](https://togithub.com/detekt/detekt/pull/5309)
- We removed the `--print-ast` CLI flag as [PsiViewer](https://www.jetbrains.com/help/idea/psi-viewer.html) provides the same features - [#5418](https://togithub.com/detekt/detekt/pull/5418)
- Notable changes to existing rules
- `ArrayPrimitive` is now working only with Type Resolution - [#5175](https://togithub.com/detekt/detekt/pull/5175)
- `WildcardImport` is now running also on tests by default - [#5121](https://togithub.com/detekt/detekt/pull/5121)
- `ForbiddenImport` allows now to specify a reason for every forbidden import - [#4909](https://togithub.com/detekt/detekt/pull/4909)
- `IgnoredReturnValue`: option `restrictToAnnotatedMethods` is now deprecated in favor of `restrictToConfig` - [#4922](https://togithub.com/detekt/detekt/pull/4922)
- This version of Detekt is built with Gradle `v7.5.1`, AGP `7.3.1`, Kotlin `1.7.21` and KtLint `0.47.1` (see [#5363](https://togithub.com/detekt/detekt/pull/5363) [#5189](https://togithub.com/detekt/detekt/pull/5189) [#5411](https://togithub.com/detekt/detekt/pull/5411) [#5312](https://togithub.com/detekt/detekt/pull/5312) [#5519](https://togithub.com/detekt/detekt/pull/5519))
- The minimum supported Gradle version is now `v6.7.1` - [#4964](https://togithub.com/detekt/detekt/pull/4964)
##### Migration
We deprecated a number of rules in this release.
You should update your config file as follows:
```diff
potential-bugs:
active: true
...
- DuplicateCaseInWhenExpression:
- active: true
...
- MissingWhenCase:
- active: true
- allowElseExpression: true
...
- RedundantElseInWhen:
- active: true
style:
active: true
...
- ForbiddenPublicDataClass:
- active: true
- excludes: ['**']
- ignorePackages:
- - '*.internal'
- - '*.internal.*'
...
- LibraryCodeMustSpecifyReturnType:
- active: true
- excludes: ['**']
...
- LibraryEntitiesShouldNotBePublic:
- active: true
- excludes: ['**']
```
If you wish to use the `libraries` ruleset we introduced you should add the following to your config file:
```diff
+ libraries:
+ active: true
+ ForbiddenPublicDataClass:
+ active: false
+ LibraryEntitiesShouldNotBePublic:
+ active: false
+ LibraryCodeMustSpecifyReturnType:
+ active: true
```
and add the following to you `build.gradle` file:
```kotlin
detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:$version")
```
If you're using our KtLint wrapper (i.e. `detekt-formatting`) you should also update your config file as follows:
```diff
formatting:
active: true
...
- TrailingComma:
- active: false
- autoCorrect: true
- allowTrailingComma: false
- allowTrailingCommaOnCallSite: false
...
+ TrailingCommaOnCallSite:
+ active: false
+ autoCorrect: true
+ useTrailingCommaOnCallSite: false
+ TrailingCommaOnDeclarationSite:
+ active: false
+ autoCorrect: true
+ useTrailingCommaOnDeclarationSite: false
```
##### Changelog
- ReturnCount: correctly count assignment expressions with elvis return as guard clauses - [#5539](https://togithub.com/detekt/detekt/pull/5539)
- UnnecessaryPartOfBinaryExpression: fix false positive with pair creation - [#5516](https://togithub.com/detekt/detekt/pull/5516)
- False positive at `UnnecessaryPartOfBinaryExpression` - [#5514](https://togithub.com/detekt/detekt/issues/5514)
- Update documentation for TrailingComma rules - [#5513](https://togithub.com/detekt/detekt/pull/5513)
- `TrimMultilineRawString` false-positive on annotation parameters - [#5476](https://togithub.com/detekt/detekt/issues/5476)
- Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks UnreachableCode - [#5435](https://togithub.com/detekt/detekt/issues/5435)
- Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks ignoreAnnotated - [#5427](https://togithub.com/detekt/detekt/issues/5427)
- Fix issues introduced by [#5152](https://togithub.com/detekt/detekt/issues/5152) - [#5508](https://togithub.com/detekt/detekt/pull/5508)
- MultilineLambdaItParameter: fix false positive for one-line statements with a lambda argument - [#5505](https://togithub.com/detekt/detekt/pull/5505)
- UseArrayLiteralsInAnnotations: fix false negative with primitive array factory calls - [#5482](https://togithub.com/detekt/detekt/pull/5482)
- TrimMultilineRawString: fix false positive when it's expected as constant - [#5480](https://togithub.com/detekt/detekt/pull/5480)
- Fix false negative `SafeCast` with no braces - [#5479](https://togithub.com/detekt/detekt/pull/5479)
- Update gradle/wrapper-validation-action digest to [`55e685c`](https://togithub.com/detekt/detekt/commit/55e685c) - [#5472](https://togithub.com/detekt/detekt/pull/5472)
- Grant permission for type resolution Gradle job - [#5470](https://togithub.com/detekt/detekt/pull/5470)
- Fix ObjectPropertyNaming Rule false positive - [#5466](https://togithub.com/detekt/detekt/pull/5466)
- Fix LambdaParameterNaming rule false positive - [#5465](https://togithub.com/detekt/detekt/pull/5465)
- Fix ReturnCount false positive when excludeReturnFromLambda is enabled - [#5459](https://togithub.com/detekt/detekt/pull/5459)
- CognitiveComplexity: count else/else-if as one complexity - [#5458](https://togithub.com/detekt/detekt/pull/5458)
- Fix false positive MultilineRawStringIndentation with tab indentation - [#5453](https://togithub.com/detekt/detekt/pull/5453)
- Don't show the number of issues generating the BindingContext - [#5449](https://togithub.com/detekt/detekt/pull/5449)
- Make detekt less noisy - [#5448](https://togithub.com/detekt/detekt/pull/5448)
- New ruleauthors rule for Entity.from(x.nameIdentifier ?: x) -> Entity.atName(x) - [#5444](https://togithub.com/detekt/detekt/pull/5444)
- Separating ComplexMethod rule into CyclomaticComplexMethod and CognitiveComplexMethod - [#5442](https://togithub.com/detekt/detekt/pull/5442)
- Improve error reporting for CascadingCallWrapping - [#5439](https://togithub.com/detekt/detekt/pull/5439)
- TrimMultilineRawString: fix false positive with not a raw string - [#5438](https://togithub.com/detekt/detekt/pull/5438)
- BooleanPropertyNaming highlight only the name of the variable - [#5431](https://togithub.com/detekt/detekt/pull/5431)
- Deprecate `TrailingComma` as it's now split in two rules - [#5423](https://togithub.com/detekt/detekt/pull/5423)
- Remove unused constant - [#5421](https://togithub.com/detekt/detekt/pull/5421)
- Report if/else as issue location instead of block - [#5407](https://togithub.com/detekt/detekt/pull/5407)
- Remove some unnecessary suppressions - [#5400](https://togithub.com/detekt/detekt/pull/5400)
- Check FormattingRule is auto-correctable by information provided by ktlint - [#5398](https://togithub.com/detekt/detekt/pull/5398)
- Fix false negative MultilineLambdaItParameter on complex multiline single statement - [#5397](https://togithub.com/detekt/detekt/pull/5397)
- ObjectPropertyNaming: fix false positive with top level properties - [#5390](https://togithub.com/detekt/detekt/pull/5390)
- Remove usage of MPP targets function for JVM-only projects - [#5383](https://togithub.com/detekt/detekt/pull/5383)
- UnnecessaryNotNullCheck: fix false negative with smart casted arguments - [#5380](https://togithub.com/detekt/detekt/pull/5380)
- Add missing overlapping info & fix rules URLs - [#5378](https://togithub.com/detekt/detekt/pull/5378)
- AlsoCouldBeApply: fix false positive when all statements are not `it`-started expressions - [#5376](https://togithub.com/detekt/detekt/pull/5376)
- UnusedPrivateMember: fix false negative with named arguments - [#5374](https://togithub.com/detekt/detekt/pull/5374)
- Change requires type resolution rule warning to debug level to not spam the user console - [#5353](https://togithub.com/detekt/detekt/pull/5353)
- Report UseDataClass findings on class name - [#5352](https://togithub.com/detekt/detekt/pull/5352)
- Report LabeledExpression as the label instead of the whole expression - [#5351](https://togithub.com/detekt/detekt/pull/5351)
- Report CastToNullableType at the cast operator instead of the whole expression - [#5350](https://togithub.com/detekt/detekt/pull/5350)
- Convert previously known string property to list based on default value - [#5347](https://togithub.com/detekt/detekt/pull/5347)
- CastToNullableType: highlights too much - [#5346](https://togithub.com/detekt/detekt/issues/5346)
- UseDataClass flags the whole class body, not just the name - [#5338](https://togithub.com/detekt/detekt/issues/5338)
- CanBeNonNullable: explain why the rule does what it does. - [#5332](https://togithub.com/detekt/detekt/pull/5332)
- Differentiate between correctable and non-correctable KtLint rules - [#5324](https://togithub.com/detekt/detekt/pull/5324)
- ReturnCount 1.22.0 crashes on valid 1.21.0 config property excludedFunctions when using --all-rules cli flag - [#5323](https://togithub.com/detekt/detekt/issues/5323)
- LabeledExpression to highlight only label - [#5316](https://togithub.com/detekt/detekt/issues/5316)
- Use the correct source directory set on JVM - [#5163](https://togithub.com/detekt/detekt/pull/5163)
- Get Android variant compile classpath from compileConfiguration - [#5152](https://togithub.com/detekt/detekt/pull/5152)
- Use list config for `FunctionOnlyReturningConstant>excludedFunctions` - [#5120](https://togithub.com/detekt/detekt/pull/5120)
- MaxLineLength: raw typo and test cleanup - [#5315](https://togithub.com/detekt/detekt/pull/5315)
- EndOfSentenceFormat: fix HTML tag heuristic - [#5313](https://togithub.com/detekt/detekt/pull/5313)
- Fix EndOfSentenceFormat highlight - [#5311](https://togithub.com/detekt/detekt/pull/5311)
- Introduce configFile property on DetektGenerateTask - [#5308](https://togithub.com/detekt/detekt/pull/5308)
- Improve debug suggestion message - [#5300](https://togithub.com/detekt/detekt/pull/5300)
- Fat-Jar version of detekt-generator module - [#5297](https://togithub.com/detekt/detekt/pull/5297)
- Toolchains docs - [#5293](https://togithub.com/detekt/detekt/pull/5293)
- Adopt new AGP dsl - [#5288](https://togithub.com/detekt/detekt/pull/5288)
- NonBooleanPropertyPrefixedWithIs: Allow boolean functions - [#5285](https://togithub.com/detekt/detekt/pull/5285)
- Provide the current classpath inside `KotlinEnvironmentResolver` - [#5275](https://togithub.com/detekt/detekt/pull/5275)
- Fix false-positive on `NestedScopeFunctions` - [#5274](https://togithub.com/detekt/detekt/pull/5274)
- Use convention method to set task property defaults - [#5272](https://togithub.com/detekt/detekt/pull/5272)
- Update docusaurus monorepo to v2.1.0 - [#5270](https://togithub.com/detekt/detekt/pull/5270)
- detektVersionReplace.js plugin is not replacing all \[detekt_version] tags on website - [#5266](https://togithub.com/detekt/detekt/pull/5266)
- Update ktlint rule doc links - [#5258](https://togithub.com/detekt/detekt/pull/5258)
- Remove redundant rule config for rules enabled by default - [#5257](https://togithub.com/detekt/detekt/pull/5257)
- UnusedPrivateMember: fix false positive with backtick parameters - [#5252](https://togithub.com/detekt/detekt/pull/5252)
- Improve MultilineRawStringIndentation - [#5245](https://togithub.com/detekt/detekt/pull/5245)
- UnnecessaryLet: fix false positive with with invoke operator calls - [#5240](https://togithub.com/detekt/detekt/pull/5240)
- Introduce baseline tooling api - [#5239](https://togithub.com/detekt/detekt/pull/5239)
- Allow secondary constructors to reference CoroutineDispatchers - [#5227](https://togithub.com/detekt/detekt/pull/5227)
- Update `UnnecessaryAbstractClass` issue description to be less verbose - [#5224](https://togithub.com/detekt/detekt/pull/5224)
- Update plugin com.gradle.common-custom-user-data-gradle-plugin to v1.8.0 - [#5223](https://togithub.com/detekt/detekt/pull/5223)
- Pin dependencies - [#5222](https://togithub.com/detekt/detekt/pull/5222)
- Remove rule from NamingRules multi rule - [#5212](https://togithub.com/detekt/detekt/pull/5212)
- Run all rules from EmptyBlocks multi rule individually - [#5208](https://togithub.com/detekt/detekt/pull/5208)
- Run all rules from KDocStyle multi rule individually - [#5207](https://togithub.com/detekt/detekt/pull/5207)
- Docs: GitHub - Add link to configure Sarif severity alert level - [#5206](https://togithub.com/detekt/detekt/pull/5206)
- Fix errors with `detektGenerateConfig` - [#5199](https://togithub.com/detekt/detekt/pull/5199)
- Forbid constructors with `ForbiddenMethodCall` - [#5195](https://togithub.com/detekt/detekt/pull/5195)
- Update github/codeql-action digest to [`2ca79b6`](https://togithub.com/detekt/detekt/commit/2ca79b6) - [#5177](https://togithub.com/detekt/detekt/pull/5177)
- Allow to ignore overloaded methods for the complex interface rule ([#5165](https://togithub.com/detekt/detekt/issues/5165)) - [#5173](https://togithub.com/detekt/detekt/pull/5173)
- Add excludesRawStrings in MaxLineLength - [#5171](https://togithub.com/detekt/detekt/pull/5171)
- Enable Predictive Test Selection for local builds - [#5170](https://togithub.com/detekt/detekt/pull/5170)
- Update dependency org.kohsuke:github-api to v1.307 - [#5168](https://togithub.com/detekt/detekt/pull/5168)
- Update dependency com.github.ajalt:clikt to v2.8.0 - [#5167](https://togithub.com/detekt/detekt/pull/5167)
- Update docusaurus monorepo to v2.0.1 - [#5166](https://togithub.com/detekt/detekt/pull/5166)
- Run build-logic Kotlin compilation out of process on CI - [#5162](https://togithub.com/detekt/detekt/pull/5162)
- Add information about exhaustiveness check to documentation - [#5160](https://togithub.com/detekt/detekt/pull/5160)
- Use getter when determining whether custom config path is set in DetektGenerateConfigTask - [#5157](https://togithub.com/detekt/detekt/pull/5157)
- Limit Kotlin version warning suppression scope in build - [#5156](https://togithub.com/detekt/detekt/pull/5156)
- Re-enable warnings as errors for detekt-gradle-plugin - [#5155](https://togithub.com/detekt/detekt/pull/5155)
- Bundle slf4j-nop in detekt-formatting JAR - [#5153](https://togithub.com/detekt/detekt/pull/5153)
- Fix false negative for UseRequire when thrown in conditional block - [#5147](https://togithub.com/detekt/detekt/pull/5147)
- Allow parentheses for unclear precedence with range operator - [#5143](https://togithub.com/detekt/detekt/pull/5143)
- Mark apiDump task as incompatible with configuration cache - [#5134](https://togithub.com/detekt/detekt/pull/5134)
- Improve binding context management - [#5130](https://togithub.com/detekt/detekt/pull/5130)
- `RedundantExplicitType` add annotation `@RequiresTypeResolution` - [#5128](https://togithub.com/detekt/detekt/pull/5128)
- Disable `ExitOutsideMain` if `contextBinding` is empty - [#5127](https://togithub.com/detekt/detekt/pull/5127)
- Use list config for `DataClassContainsFunctions>conversionFunctionPrefix` - [#5119](https://togithub.com/detekt/detekt/pull/5119)
- Support proper globbing in `ReturnCount` - [#5118](https://togithub.com/detekt/detekt/pull/5118)
- Improve finding message of ExplicitItLambdaParameter - [#5117](https://togithub.com/detekt/detekt/pull/5117)
- Update JamesIves/github-pages-deploy-action digest to [`13046b6`](https://togithub.com/detekt/detekt/commit/13046b6) - [#5110](https://togithub.com/detekt/detekt/pull/5110)
- UnusedUnaryOperator: fix false positive with var assignment and if expression - [#5106](https://togithub.com/detekt/detekt/pull/5106)
- Tag publishPlugins task as incompatible with configuration cache - [#5101](https://togithub.com/detekt/detekt/pull/5101)
- Make verifyGeneratorOutput task configuration cache compatible - [#5100](https://togithub.com/detekt/detekt/pull/5100)
- Remove obsolete FeatureInAlphaState opt in - [#5099](https://togithub.com/detekt/detekt/pull/5099)
- Remove explicit RequiresOptIn compiler flag - [#5098](https://togithub.com/detekt/detekt/pull/5098)
- Use Gradle's configuration cache by default - [#5095](https://togithub.com/detekt/detekt/pull/5095)
- Detect undocumented protected classes, properties, and functions - [#5083](https://togithub.com/detekt/detekt/pull/5083)
- ReturnCount.excludedFunctions should be a List\ - [#5081](https://togithub.com/detekt/detekt/pull/5081)
- Make ForbiddenMethodCall to support property getters/setters and method references - [#5078](https://togithub.com/detekt/detekt/pull/5078)
- Refactor Gradle tasks to use Gradle's managed properties - [#4966](https://togithub.com/detekt/detekt/pull/4966)
- Add option to add a reason to `ForbiddenMethodCall` - [#4910](https://togithub.com/detekt/detekt/pull/4910)
- UnnecessaryParentheses: add options to allow in ambiguous cases - [#4881](https://togithub.com/detekt/detekt/pull/4881)
##### Dependency Updates
- Update dependency com.android.tools.build:gradle to v7.3.1 - [#5411](https://togithub.com/detekt/detekt/pull/5411)
- Update plugin com.gradle.enterprise to v3.11.2 - [#5406](https://togithub.com/detekt/detekt/pull/5406)
- Update dependency org.jetbrains.dokka to v1.7.20 - [#5401](https://togithub.com/detekt/detekt/pull/5401)
- Update dependency org.yaml:snakeyaml to v1.33 - [#5354](https://togithub.com/detekt/detekt/pull/5354)
- Update dependency org.spekframework.spek2:spek-dsl-jvm to v2.0.19 - [#5237](https://togithub.com/detekt/detekt/pull/5237)
- Update dependency com.android.tools.build:gradle to v7.2.2 - [#5178](https://togithub.com/detekt/detekt/pull/5178)
- Update org.jetbrains.kotlinx - [#5072](https://togithub.com/detekt/detekt/pull/5072)
- Update dependency org.jetbrains.dokka to v1.7.10 - [#5070](https://togithub.com/detekt/detekt/pull/5070)
- Bump ktlint to version 0.46.1 - [#5044](https://togithub.com/detekt/detekt/pull/5044)
- AssertJ 3.23.1 - [#4265](https://togithub.com/detekt/detekt/pull/4265)
##### Housekeeping & Refactorings
- Document and test edge cases for ForbiddenMethodCall function signatures - [#5495](https://togithub.com/detekt/detekt/pull/5495)
- Fix invalid syntaxes in test code - [#5446](https://togithub.com/detekt/detekt/pull/5446)
- Improve raw strings format - [#5244](https://togithub.com/detekt/detekt/pull/5244)
- Enable trim multiline raw string - [#5243](https://togithub.com/detekt/detekt/pull/5243)
- Remove old configurations - [#5198](https://togithub.com/detekt/detekt/pull/5198)
- Improve tests in UnnecessaryParenthesesSpec - [#5197](https://togithub.com/detekt/detekt/pull/5197)
- Remove multi rule FileParsingRule - [#5193](https://togithub.com/detekt/detekt/pull/5193)
- Remove unused dry run properties from baseline/config tasks - [#5158](https://togithub.com/detekt/detekt/pull/5158)
- remove SimpleGlob in favor of String.simplePatternToRegex() - [#5144](https://togithub.com/detekt/detekt/pull/5144)
- Remove unused property - [#5135](https://togithub.com/detekt/detekt/pull/5135)
- Assert end source locations - [#5116](https://togithub.com/detekt/detekt/pull/5116)
- Forbid usage of DiagnosticUtils.getLineAndColumnInPsiFile - [#5109](https://togithub.com/detekt/detekt/pull/5109)
- Configure 'ForbiddenImport' to use value and reason - [#5105](https://togithub.com/detekt/detekt/pull/5105)
- Enable Kotlin's new approach to incremental compilation - [#5092](https://togithub.com/detekt/detekt/pull/5092)
- Fix current indentation - [#5059](https://togithub.com/detekt/detekt/pull/5059)
See all issues at: [1.22.0](https://togithub.com/detekt/detekt/milestone/87)
JetBrains/kotlin
### [`v1.8.0`](https://togithub.com/JetBrains/kotlin/blob/HEAD/ChangeLog.md#180)
##### Analysis API
- [`KT-50255`](https://youtrack.jetbrains.com/issue/KT-50255) Analysis API: Implement standalone mode for the Analysis API
##### Analysis API. FIR
- [`KT-54292`](https://youtrack.jetbrains.com/issue/KT-54292) Symbol Light classes: implement PsiVariable.computeConstantValue for light field
- [`KT-54293`](https://youtrack.jetbrains.com/issue/KT-54293) Analysis API: fix constructor symbol creation when its accessed via type alias
##### Android
- [`KT-53342`](https://youtrack.jetbrains.com/issue/KT-53342) TCS: New AndroidSourceSet layout for multiplatform
- [`KT-53013`](https://youtrack.jetbrains.com/issue/KT-53013) Increase AGP compile version in KGP to 4.1.3
- [`KT-54013`](https://youtrack.jetbrains.com/issue/KT-54013) Report error when using deprecated Kotlin Android Extensions compiler plugin
- [`KT-53709`](https://youtrack.jetbrains.com/issue/KT-53709) MPP, Android SSL2: Conflicting warnings for `androidTest/kotlin` source set folder
##### Backend. Native. Debug
- [`KT-53561`](https://youtrack.jetbrains.com/issue/KT-53561) Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"
##### Compiler
##### New Features
- [`KT-52817`](https://youtrack.jetbrains.com/issue/KT-52817) Add `@JvmSerializableLambda` annotation to keep old behavior of non-invokedynamic lambdas
- [`KT-54460`](https://youtrack.jetbrains.com/issue/KT-54460) Implementation of non-local break and continue
- [`KT-53916`](https://youtrack.jetbrains.com/issue/KT-53916) Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
- [`KT-32208`](https://youtrack.jetbrains.com/issue/KT-32208) Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)
- [`KT-53438`](https://youtrack.jetbrains.com/issue/KT-53438) Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage
##### Performance Improvements
- [`KT-53347`](https://youtrack.jetbrains.com/issue/KT-53347) Get rid of excess allocations in parser
- [`KT-53689`](https://youtrack.jetbrains.com/issue/KT-53689) JVM: Optimize equality on class literals
- [`KT-53119`](https://youtrack.jetbrains.com/issue/KT-53119) Improve String Concatenation Lowering
##### Fixes
- [`KT-53465`](https://youtrack.jetbrains.com/issue/KT-53465) Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
- [`KT-49658`](https://youtrack.jetbrains.com/issue/KT-49658) NI: False negative TYPE_MISMATCH on nullable type with `when`
- [`KT-48162`](https://youtrack.jetbrains.com/issue/KT-48162) NON_VARARG_SPREAD isn't reported on \*toTypedArray() call
- [`KT-43493`](https://youtrack.jetbrains.com/issue/KT-43493) NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
- [`KT-54393`](https://youtrack.jetbrains.com/issue/KT-54393) Change in behavior from 1.7.10 to 1.7.20 for java field override.
- [`KT-55357`](https://youtrack.jetbrains.com/issue/KT-55357) IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound
- [`KT-55068`](https://youtrack.jetbrains.com/issue/KT-55068) Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
- [`KT-51284`](https://youtrack.jetbrains.com/issue/KT-51284) SAM conversion doesn't work if method has context receivers
- [`KT-48532`](https://youtrack.jetbrains.com/issue/KT-48532) Remove old JVM backend
- [`KT-55065`](https://youtrack.jetbrains.com/issue/KT-55065) Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend
- [`KT-53270`](https://youtrack.jetbrains.com/issue/KT-53270) K1: implement synthetic Enum.entries property
- [`KT-52823`](https://youtrack.jetbrains.com/issue/KT-52823) Cannot access class Thread.State after upgrading to 1.7 from 1.6.1 using -Xjdk-release=1.8
- [`KT-55108`](https://youtrack.jetbrains.com/issue/KT-55108) IR interpreter: Error occurred while optimizing an expression: VARARG
- [`KT-53547`](https://youtrack.jetbrains.com/issue/KT-53547) Missing fun IrBuilderWithScope.irFunctionReference
- [`KT-54884`](https://youtrack.jetbrains.com/issue/KT-54884) "StackOverflowError: null" caused by Enum constant name in constructor of the same Enum constant
- [`KT-47475`](https://youtrack.jetbrains.com/issue/KT-47475) "IncompatibleClassChangeError: disagree on InnerClasses attribute": cross-module inlined WhenMappings has mismatched InnerClasses
- [`KT-55013`](https://youtrack.jetbrains.com/issue/KT-55013) State checker use-after-free with XCode 14.1
- [`KT-54802`](https://youtrack.jetbrains.com/issue/KT-54802) "VerifyError: Bad type on operand stack" for inline functions on arrays
- [`KT-54707`](https://youtrack.jetbrains.com/issue/KT-54707) "VerifyError: Bad type on operand stack" in inline call chain on a nullable array value
- [`KT-48678`](https://youtrack.jetbrains.com/issue/KT-48678) Coroutine debugger: disable "was optimised out" compiler feature
- [`KT-54745`](https://youtrack.jetbrains.com/issue/KT-54745) Restore KtToken constructors without tokenId parameter to preserve back compatibility
- [`KT-54650`](https://youtrack.jetbrains.com/issue/KT-54650) Binary incompatible ABI change in Kotlin 1.7.20
- [`KT-52786`](https://youtrack.jetbrains.com/issue/KT-52786) Frontend / K2: IndexOutOfBoundsException when opting in to K2
- [`KT-54004`](https://youtrack.jetbrains.com/issue/KT-54004) Builder type inference does not work correctly with variable assignment and breaks run-time
- [`KT-54581`](https://youtrack.jetbrains.com/issue/KT-54581) JVM: "VerifyError: Bad type on operand stack" with generic inline function and `when` inside try-catch block
- [`KT-53794`](https://youtrack.jetbrains.com/issue/KT-53794) IAE "Unknown visibility: protected/*protected and package*/" on callable reference to protected member of Java superclass
- [`KT-54600`](https://youtrack.jetbrains.com/issue/KT-54600) NPE on passing nullable Kotlin lambda as Java's generic SAM interface with `super` type bound
- [`KT-54463`](https://youtrack.jetbrains.com/issue/KT-54463) Delegating to a field with a platform type causes java.lang.NoSuchFieldError: value$delegate
- [`KT-54509`](https://youtrack.jetbrains.com/issue/KT-54509) Ir Interpreter: unable to evaluate string concatenation with "this" as argument
- [`KT-54615`](https://youtrack.jetbrains.com/issue/KT-54615) JVM: Internal error in file lowering: java.lang.AssertionError: Error occurred while optimizing an expression
- [`KT-53146`](https://youtrack.jetbrains.com/issue/KT-53146) JVM IR: unnecessary checkcast of null leads to NoClassDefFoundError if the type isn't available at runtime
- [`KT-53712`](https://youtrack.jetbrains.com/issue/KT-53712) Add mode to prevent generating JVM 1.8+ annotation targets (TYPE_USE, TYPE_PARAMETER)
- [`KT-54366`](https://youtrack.jetbrains.com/issue/KT-54366) K2: no JVM BE specific diagnostics (in particular CONFLICTING_JVM_DECLARATIONS) in 1.8
- [`KT-35187`](https://youtrack.jetbrains.com/issue/KT-35187) NullPointerException on compiling suspend inline fun with typealias to suspend function type
- [`KT-54275`](https://youtrack.jetbrains.com/issue/KT-54275) K2: "IllegalArgumentException: KtParameter is not a subtype of class KtAnnotationEntry for factory REPEATED_ANNOTATION"
- [`KT-53656`](https://youtrack.jetbrains.com/issue/KT-53656) "IllegalStateException: typeParameters == null for SimpleFunctionDescriptorImpl" with recursive generic type parameters
- [`KT-46727`](https://youtrack.jetbrains.com/issue/KT-46727) Report warning on contravariant usages of star projected argument from Java
- [`KT-53197`](https://youtrack.jetbrains.com/issue/KT-53197) K2: 'init' hides member of supertype 'UIComponent' and needs 'override' modifier
- [`KT-53867`](https://youtrack.jetbrains.com/issue/KT-53867) K2: `@JvmRecord` does not compile to a java record
- [`KT-53964`](https://youtrack.jetbrains.com/issue/KT-53964) K2 is unable to work with Java records
- [`KT-53349`](https://youtrack.jetbrains.com/issue/KT-53349) K2: TYPE_MISMATCH caused by non-local return
- [`KT-54100`](https://youtrack.jetbrains.com/issue/KT-54100) "Type variable TypeVariable(P) should not be fixed" crash in code with errors
- [`KT-54212`](https://youtrack.jetbrains.com/issue/KT-54212) K2: cannot calculate implicit property type
- [`KT-53699`](https://youtrack.jetbrains.com/issue/KT-53699) K2: Exception during IR lowering in code with coroutines
- [`KT-54192`](https://youtrack.jetbrains.com/issue/KT-54192) Warn about unsupported feature on generic inline class parameters
- [`KT-53723`](https://youtrack.jetbrains.com/issue/KT-53723) Friend modules aren't getting passed to cache build during box tests
- [`KT-53873`](https://youtrack.jetbrains.com/issue/KT-53873) K2: Duplicated diagnostics reported from user type ref checkers
- [`KT-50909`](https://youtrack.jetbrains.com/issue/KT-50909) "VerifyError: Bad type on operand stack" caused by smartcasting for nullable inline class property in class
- [`KT-54115`](https://youtrack.jetbrains.com/issue/KT-54115) Restore Psi2IrTranslator constructor from 1.7.20
- [`KT-53908`](https://youtrack.jetbrains.com/issue/KT-53908) K2: Self-referencing generics in Java class causes New Inference Error (IE: class Foo\>)
- [`KT-53193`](https://youtrack.jetbrains.com/issue/KT-53193) K2: compile error on project that compiles fine with normal 1.7.10
- [`KT-54062`](https://youtrack.jetbrains.com/issue/KT-54062) K2 Invalid serialization for type-aliased suspend function type with extension receiver
- [`KT-53953`](https://youtrack.jetbrains.com/issue/KT-53953) Forbid usages of super or super if in fact it accesses an abstract member
- [`KT-47473`](https://youtrack.jetbrains.com/issue/KT-47473) NI: Missed UPPER_BOUND_VIOLATED diagnostics if use type aliases with type parameters
- [`KT-54049`](https://youtrack.jetbrains.com/issue/KT-54049) K2: false positive MANY_IMPL_MEMBER_NOT_IMPLEMENTED
- [`KT-30054`](https://youtrack.jetbrains.com/issue/KT-30054) Wrong approximation if nullable anonymous object with implemented interface is used
- [`KT-53751`](https://youtrack.jetbrains.com/issue/KT-53751) Postpone IgnoreNullabilityForErasedValueParameters feature
- [`KT-53324`](https://youtrack.jetbrains.com/issue/KT-53324) Implement Enum.entries lowering on K/N
- [`KT-44441`](https://youtrack.jetbrains.com/issue/KT-44441) K2: report redeclaration error if there is a Java class with the same name as the Kotlin class
- [`KT-53807`](https://youtrack.jetbrains.com/issue/KT-53807) No warning about declaringClass on an enum value
- [`KT-53493`](https://youtrack.jetbrains.com/issue/KT-53493) K2: `val on function parameter` counts as just warning
- [`KT-53435`](https://youtrack.jetbrains.com/issue/KT-53435) K2: "IllegalArgumentException: class KtValueArgument is not a subtype of class KtExpression for factory ANNOTATION_ARGUMENT_MUST_BE_CONST" if string in nested annotation is concatenated
- [`KT-52927`](https://youtrack.jetbrains.com/issue/KT-52927) AssertionError: LambdaKotlinCallArgumentImpl
- [`KT-53922`](https://youtrack.jetbrains.com/issue/KT-53922) Make Enum.entries unstable feature to poison binaries
- [`KT-53783`](https://youtrack.jetbrains.com/issue/KT-53783) Exception during psi2ir when declaring expect data object
- [`KT-53622`](https://youtrack.jetbrains.com/issue/KT-53622) \[OVERLOAD_RESOLUTION_AMBIGUITY] when enum entry called 'entries' is present in K2
- [`KT-41670`](https://youtrack.jetbrains.com/issue/KT-41670) JVM IR: AbstractMethodError when using inheritance for fun interfaces
- [`KT-53178`](https://youtrack.jetbrains.com/issue/KT-53178) K2: implement diagnostics for serialization plugin
- [`KT-53804`](https://youtrack.jetbrains.com/issue/KT-53804) Restore old and incorrect logic of generating InnerClasses attributes for kotlin-stdlib
- [`KT-52970`](https://youtrack.jetbrains.com/issue/KT-52970) Default value constant in companion object works on JVM and JS, but fails on native
- [`KT-51114`](https://youtrack.jetbrains.com/issue/KT-51114) FIR: Support DNN checks
- [`KT-27936`](https://youtrack.jetbrains.com/issue/KT-27936) Write InnerClasses attribute for all class names used in a class file
- [`KT-53719`](https://youtrack.jetbrains.com/issue/KT-53719) Parsing regression on function call with type arguments and labeled lambda
- [`KT-53261`](https://youtrack.jetbrains.com/issue/KT-53261) Evaluate effect from inline for primitive types
- [`KT-53706`](https://youtrack.jetbrains.com/issue/KT-53706) K2: Context receivers are not resolved on properties during type resolution stage
- [`KT-39492`](https://youtrack.jetbrains.com/issue/KT-39492) Kotlin.Metadata's packageName field cannot be an empty string
- [`KT-53664`](https://youtrack.jetbrains.com/issue/KT-53664) Ir Interpreter: unable to evaluate name of function reference marked with JvmStatic from another module
- [`KT-52478`](https://youtrack.jetbrains.com/issue/KT-52478) \[Native] Partial linkage: Building native binary from cached KLIBs fails if one library depends on removed nested callable member from another one
- [`KT-48822`](https://youtrack.jetbrains.com/issue/KT-48822) CompilationException: Back-end (JVM) Internal error: Failed to generate expression: KtProperty - ConcurrentModificationException
- [`KT-50281`](https://youtrack.jetbrains.com/issue/KT-50281) IllegalStateException: unsupported call of reified inlined function
- [`KT-50083`](https://youtrack.jetbrains.com/issue/KT-50083) Different error messages in android and JVM (Intrinsics.checkNotNullParameter).
- [`KT-53236`](https://youtrack.jetbrains.com/issue/KT-53236) Support Enum.entries codegen on JVM/IR BE
- [`KT-41017`](https://youtrack.jetbrains.com/issue/KT-41017) FIR: should we support smartcast after null check
- [`KT-53202`](https://youtrack.jetbrains.com/issue/KT-53202) "ISE: Descriptor can be left only if it is last" after direct invoke optimization on a capturing lambda
- [`KT-46969`](https://youtrack.jetbrains.com/issue/KT-46969) `@BuilderInference` with nested DSL scopes cause false-positive scope violation in Kotlin 1.5
- [`KT-53257`](https://youtrack.jetbrains.com/issue/KT-53257) FIR: Improper context receiver argument is chosen when there are two extension receiver candidates
- [`KT-53090`](https://youtrack.jetbrains.com/issue/KT-53090) Anonymous function and extension function literals are generated as classes even with -Xlambdas=indy
- [`KT-53208`](https://youtrack.jetbrains.com/issue/KT-53208) K2: Cannot get annotation for default interface method parameter when compiled with `-Xuse-k2`
- [`KT-53184`](https://youtrack.jetbrains.com/issue/KT-53184) K2: NoSuchMethodE
Configuration
📅 Schedule: Branch creation - "before 3am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
👇 Click on the image for a new way to code review
- Make big changes easier — review code in small groups of related files
- Know where to start — see the whole change at a glance
- Take a code tour — explore the change with an interactive tour
- Make comments and review — all fully sync’ed with github
[Try it now!](https://app.codesee.io/r/reviews?pr=339&src=https%3A%2F%2Fgithub.com%2Fmallowigi%2Fa-file-icon-idea)
This PR contains the following updates:
v3.0.11
->v3.2.2
v3.1.0
->v3.3.0
v3.1.1
->v3.1.2
7.5.1
->7.6
1.4.19
->1.4.20
1.21.0
->1.22.0
1.21.0
->1.22.0
1.7.21
->1.8.0
Release Notes
actions/cache
### [`v3.2.2`](https://togithub.com/actions/cache/releases/tag/v3.2.2) [Compare Source](https://togithub.com/actions/cache/compare/v3.2.1...v3.2.2) #### What's Changed - Fix formatting error in restore/README.md by [@me-and](https://togithub.com/me-and) in [https://github.com/actions/cache/pull/1044](https://togithub.com/actions/cache/pull/1044) - save/README.md: Fix typo in example by [@mmuetzel](https://togithub.com/mmuetzel) in [https://github.com/actions/cache/pull/1040](https://togithub.com/actions/cache/pull/1040) - README.md: remove outdated Windows cache tip link by [@me-and](https://togithub.com/me-and) in [https://github.com/actions/cache/pull/1042](https://togithub.com/actions/cache/pull/1042) - Revert compression changes related to windows but keep version logging by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1049](https://togithub.com/actions/cache/pull/1049) #### New Contributors - [@me-and](https://togithub.com/me-and) made their first contribution in [https://github.com/actions/cache/pull/1044](https://togithub.com/actions/cache/pull/1044) - [@mmuetzel](https://togithub.com/mmuetzel) made their first contribution in [https://github.com/actions/cache/pull/1040](https://togithub.com/actions/cache/pull/1040) **Full Changelog**: https://github.com/actions/cache/compare/v3.2.1...v3.2.2 ### [`v3.2.1`](https://togithub.com/actions/cache/releases/tag/v3.2.1) [Compare Source](https://togithub.com/actions/cache/compare/v3.2.0...v3.2.1) ##### What's Changed - Release compression related changes for windows by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1039](https://togithub.com/actions/cache/pull/1039) - Upgrade codeql to v2 by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1023](https://togithub.com/actions/cache/pull/1023) **Full Changelog**: https://github.com/actions/cache/compare/v3.2.0...v3.2.1 ### [`v3.2.0`](https://togithub.com/actions/cache/releases/tag/v3.2.0) [Compare Source](https://togithub.com/actions/cache/compare/v3.0.11...v3.2.0) #### What's Changed - fix wrong timeout env var key in README.md by [@walterddr](https://togithub.com/walterddr) in [https://github.com/actions/cache/pull/959](https://togithub.com/actions/cache/pull/959) - Updated release doc with correct env variable by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/960](https://togithub.com/actions/cache/pull/960) - Create pull_request_template.md by [@pdotl](https://togithub.com/pdotl) in [https://github.com/actions/cache/pull/963](https://togithub.com/actions/cache/pull/963) - Update README with clearer info about cache-hit and its value by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/961](https://togithub.com/actions/cache/pull/961) - Change datadog/squid to Ubuntu/squid in CI check by [@bishal-pdMSFT](https://togithub.com/bishal-pdMSFT) in [https://github.com/actions/cache/pull/976](https://togithub.com/actions/cache/pull/976) - Add more details to version section in readme by [@bishal-pdMSFT](https://togithub.com/bishal-pdMSFT) in [https://github.com/actions/cache/pull/971](https://togithub.com/actions/cache/pull/971) - Update hashFiles documentation reference by [@asaf400](https://togithub.com/asaf400) in [https://github.com/actions/cache/pull/979](https://togithub.com/actions/cache/pull/979) - Updated link for cache segment download info by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/986](https://togithub.com/actions/cache/pull/986) - Readme update for deleting caches by [@t-dedah](https://togithub.com/t-dedah) in [https://github.com/actions/cache/pull/981](https://togithub.com/actions/cache/pull/981) - Add oncall logic to assign issues and PRs by [@vsvipul](https://togithub.com/vsvipul) in [https://github.com/actions/cache/pull/997](https://togithub.com/actions/cache/pull/997) - Bump minimatch from 3.0.4 to 3.1.2 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/actions/cache/pull/998](https://togithub.com/actions/cache/pull/998) - Revert "Bump minimatch from 3.0.4 to 3.1.2" by [@vsvipul](https://togithub.com/vsvipul) in [https://github.com/actions/cache/pull/1005](https://togithub.com/actions/cache/pull/1005) - Fix npm vulnerability by [@Phantsure](https://togithub.com/Phantsure) in [https://github.com/actions/cache/pull/1007](https://togithub.com/actions/cache/pull/1007) - refactor: Use early return pattern to avoid nested conditions by [@jongwooo](https://togithub.com/jongwooo) in [https://github.com/actions/cache/pull/1013](https://togithub.com/actions/cache/pull/1013) - Use cache in check-dist.yml by [@jongwooo](https://togithub.com/jongwooo) in [https://github.com/actions/cache/pull/1004](https://togithub.com/actions/cache/pull/1004) - chore: Use built-in cache action to cache dependencies by [@jongwooo](https://togithub.com/jongwooo) in [https://github.com/actions/cache/pull/1014](https://togithub.com/actions/cache/pull/1014) - Updated node example by [@t-dedah](https://togithub.com/t-dedah) in [https://github.com/actions/cache/pull/1008](https://togithub.com/actions/cache/pull/1008) - Fix: Node npm doc example by [@apascualm](https://togithub.com/apascualm) in [https://github.com/actions/cache/pull/1026](https://togithub.com/actions/cache/pull/1026) - docs: fix an invalid link in workarounds.md by [@teatimeguest](https://togithub.com/teatimeguest) in [https://github.com/actions/cache/pull/929](https://togithub.com/actions/cache/pull/929) - General Availability release for granular cache by [@kotewar](https://togithub.com/kotewar) in [https://github.com/actions/cache/pull/1035](https://togithub.com/actions/cache/pull/1035) More details here on [beta](https://togithub.com/actions/cache/discussions/1020) release. #### New Contributors - [@walterddr](https://togithub.com/walterddr) made their first contribution in [https://github.com/actions/cache/pull/959](https://togithub.com/actions/cache/pull/959) - [@asaf400](https://togithub.com/asaf400) made their first contribution in [https://github.com/actions/cache/pull/979](https://togithub.com/actions/cache/pull/979) - [@jongwooo](https://togithub.com/jongwooo) made their first contribution in [https://github.com/actions/cache/pull/1013](https://togithub.com/actions/cache/pull/1013) - [@apascualm](https://togithub.com/apascualm) made their first contribution in [https://github.com/actions/cache/pull/1026](https://togithub.com/actions/cache/pull/1026) - [@teatimeguest](https://togithub.com/teatimeguest) made their first contribution in [https://github.com/actions/cache/pull/929](https://togithub.com/actions/cache/pull/929) **Full Changelog**: https://github.com/actions/cache/compare/v3...v3.2.0actions/checkout
### [`v3.3.0`](https://togithub.com/actions/checkout/releases/tag/v3.3.0) [Compare Source](https://togithub.com/actions/checkout/compare/v3.2.0...v3.3.0) ##### What's Changed - Implement branch list using callbacks from exec function by [@cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1045](https://togithub.com/actions/checkout/pull/1045) - Add in explicit reference to private checkout options by [@vanZeben](https://togithub.com/vanZeben) in [https://github.com/actions/checkout/pull/1050](https://togithub.com/actions/checkout/pull/1050) - Fix comment typos (that got added in [#770](https://togithub.com/actions/checkout/issues/770)) by [@lurch](https://togithub.com/lurch) in [https://github.com/actions/checkout/pull/1057](https://togithub.com/actions/checkout/pull/1057) ##### New Contributors - [@vanZeben](https://togithub.com/vanZeben) made their first contribution in [https://github.com/actions/checkout/pull/1050](https://togithub.com/actions/checkout/pull/1050) - [@lurch](https://togithub.com/lurch) made their first contribution in [https://github.com/actions/checkout/pull/1057](https://togithub.com/actions/checkout/pull/1057) **Full Changelog**: https://github.com/actions/checkout/compare/v3.2.0...v3.3.0 ### [`v3.2.0`](https://togithub.com/actions/checkout/releases/tag/v3.2.0) [Compare Source](https://togithub.com/actions/checkout/compare/v3.1.0...v3.2.0) ##### What's Changed - Add GitHub Action to perform release by [@rentziass](https://togithub.com/rentziass) in [https://github.com/actions/checkout/pull/942](https://togithub.com/actions/checkout/pull/942) - Fix status badge by [@ScottBrenner](https://togithub.com/ScottBrenner) in [https://github.com/actions/checkout/pull/967](https://togithub.com/actions/checkout/pull/967) - Replace datadog/squid with ubuntu/squid Docker image by [@cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1002](https://togithub.com/actions/checkout/pull/1002) - Wrap pipeline commands for submoduleForeach in quotes by [@jokreliable](https://togithub.com/jokreliable) in [https://github.com/actions/checkout/pull/964](https://togithub.com/actions/checkout/pull/964) - Update [@actions/io](https://togithub.com/actions/io) to 1.1.2 by [@cory-miller](https://togithub.com/cory-miller) in [https://github.com/actions/checkout/pull/1029](https://togithub.com/actions/checkout/pull/1029) - Upgrading version to 3.2.0 by [@vmjoseph](https://togithub.com/vmjoseph) in [https://github.com/actions/checkout/pull/1039](https://togithub.com/actions/checkout/pull/1039) ##### New Contributors - [@ScottBrenner](https://togithub.com/ScottBrenner) made their first contribution in [https://github.com/actions/checkout/pull/967](https://togithub.com/actions/checkout/pull/967) - [@cory-miller](https://togithub.com/cory-miller) made their first contribution in [https://github.com/actions/checkout/pull/1002](https://togithub.com/actions/checkout/pull/1002) - [@jokreliable](https://togithub.com/jokreliable) made their first contribution in [https://github.com/actions/checkout/pull/964](https://togithub.com/actions/checkout/pull/964) - [@vmjoseph](https://togithub.com/vmjoseph) made their first contribution in [https://github.com/actions/checkout/pull/1039](https://togithub.com/actions/checkout/pull/1039) **Full Changelog**: https://github.com/actions/checkout/compare/v3.1.0...v3.2.0actions/upload-artifact
### [`v3.1.2`](https://togithub.com/actions/upload-artifact/releases/tag/v3.1.2) [Compare Source](https://togithub.com/actions/upload-artifact/compare/v3.1.1...v3.1.2) - Update all `@actions/*` NPM packages to their latest versions- [#374](https://togithub.com/actions/upload-artifact/issues/374) - Update all dev dependencies to their most recent versions - [#375](https://togithub.com/actions/upload-artifact/issues/375)detekt/detekt
### [`v1.22.0`](https://togithub.com/detekt/detekt/releases/tag/v1.22.0) We're extremely excited to announce the next upcoming stable release of Detekt: 1.22.0 🚀 This release is coming with 16 new rules, 2 new rulesets and several new functionalities & APIs. We've also introduced the [**Detekt Marketplace**](https://detekt.dev/marketplace), a place for users to share their 3rd party rules and extensions. We want to take the opportunity to thank [our Sponsors](https://togithub.com/sponsors/detekt) and our Contributors for testing, bug reporting and helping us release this new version of Detekt. You're more than welcome to join our community on the [#detekt](https://kotlinlang.slack.com/archives/C88E12QH4) channel on KotlinLang's Slack (you can [get an invite here](https://surveys.jetbrains.com/s3/kotlin-slack-sign-up)). ##### Notable Changes - We're introducing the [**Detekt Marketplace**](https://detekt.dev/marketplace), a place where you can add your own 3rd party extension such as rule, plugins, custom reporter, etc. - [#5191](https://togithub.com/detekt/detekt/pull/5191) - Our website is now versioned. You can find the changes for each version using the dropdown menu on the top bar. Documentation for the upcoming version (next) [can be found here](https://detekt.dev/docs/next/intro). - We added **16** new Rules to Detekt - `AlsoCouldBeApply` - [#5333](https://togithub.com/detekt/detekt/pull/5333) - `MultilineRawStringIndentation` - [#5058](https://togithub.com/detekt/detekt/pull/5058) - `TrimMultilineRawString` - [#5051](https://togithub.com/detekt/detekt/pull/5051) - `UnnecessaryNotNullCheck` - [#5218](https://togithub.com/detekt/detekt/pull/5218) - `UnnecessaryPartOfBinaryExpression` - [#5203](https://togithub.com/detekt/detekt/pull/5203) - `UseSumOfInsteadOfFlatMapSize` - [#5405](https://togithub.com/detekt/detekt/pull/5405) - `FunctionReturnTypeSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `FunctionSignature` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `FunctionStartOfBodySpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `NullableTypeSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `ParameterListSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `SpacingBetweenFunctionNameAndOpeningParenthesis` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - `TrailingCommaOnCallSite` from KtLint - [#5312](https://togithub.com/detekt/detekt/pull/5312) - `TrailingCommaOnDeclarationSite` from KtLint - [#5312](https://togithub.com/detekt/detekt/pull/5312) - `TypeParameterListSpacing` from KtLint - [#5256](https://togithub.com/detekt/detekt/pull/5256) - We added a new ruleset called `detekt-rules-ruleauthors` containing rules for Rule Authors to enforce best practices on Detekt rules such as the new `ViolatesTypeResolutionRequirements` - [#5129](https://togithub.com/detekt/detekt/pull/5129) [#5182](https://togithub.com/detekt/detekt/pull/5182) - We added a new ruleset called `detekt-rules-libraries` containing rules mostly useful for Library Authors - We moved the following rules inside `ForbiddenPublicDataClass`, `LibraryCodeMustSpecifyReturnType`, `LibraryEntitiesShouldNotBePublic` this new ruleset - See Migration below on how to migrate [#5360](https://togithub.com/detekt/detekt/pull/5360) - We added support for JVM toolchain. This means that Detekt will now respect the JDK toolchain you specify on your Gradle configuration. You will also be able to specify a custom JDK home with the `--jdk-home` CLI parameter - [#5269](https://togithub.com/detekt/detekt/pull/5269) - Improvement for Type Resolution - We will now skip rules annotated with `@RequiresTypeResolution` when without Type Resolution - [#5176](https://togithub.com/detekt/detekt/pull/5176) - We will warn users if they run rules requiring Type Resolution when Type Resolution is disabled, so they're not silently skipped - [#5226](https://togithub.com/detekt/detekt/pull/5226) - Improvement for Config Management - We added exhaustiveness check during config validation. You can enable it `checkExhaustiveness: true` in your config file. This is disabled by default. - [#5089](https://togithub.com/detekt/detekt/pull/5089) - We added support for generating custom configuration for rule authors - [#5080](https://togithub.com/detekt/detekt/pull/5080) - Deprecations & Removals - We deprecated the MultiRule class as it was overly complicated. The suggested approach is to just provide separated rules. - [#5161](https://togithub.com/detekt/detekt/pull/5161) - The `--fail-fast` CLI flag (and `failFast` Gradle property) has been removed. It was deprecated since 1.16.x - [#5290](https://togithub.com/detekt/detekt/pull/5290) - We **deprecated** the following rules `DuplicateCaseInWhenExpression`, `MissingWhenCase`, `RedundantElseInWhen` as the Kotlin Compiler is already reporting errors for those scenarios - [#5309](https://togithub.com/detekt/detekt/pull/5309) - We removed the `--print-ast` CLI flag as [PsiViewer](https://www.jetbrains.com/help/idea/psi-viewer.html) provides the same features - [#5418](https://togithub.com/detekt/detekt/pull/5418) - Notable changes to existing rules - `ArrayPrimitive` is now working only with Type Resolution - [#5175](https://togithub.com/detekt/detekt/pull/5175) - `WildcardImport` is now running also on tests by default - [#5121](https://togithub.com/detekt/detekt/pull/5121) - `ForbiddenImport` allows now to specify a reason for every forbidden import - [#4909](https://togithub.com/detekt/detekt/pull/4909) - `IgnoredReturnValue`: option `restrictToAnnotatedMethods` is now deprecated in favor of `restrictToConfig` - [#4922](https://togithub.com/detekt/detekt/pull/4922) - This version of Detekt is built with Gradle `v7.5.1`, AGP `7.3.1`, Kotlin `1.7.21` and KtLint `0.47.1` (see [#5363](https://togithub.com/detekt/detekt/pull/5363) [#5189](https://togithub.com/detekt/detekt/pull/5189) [#5411](https://togithub.com/detekt/detekt/pull/5411) [#5312](https://togithub.com/detekt/detekt/pull/5312) [#5519](https://togithub.com/detekt/detekt/pull/5519)) - The minimum supported Gradle version is now `v6.7.1` - [#4964](https://togithub.com/detekt/detekt/pull/4964) ##### Migration We deprecated a number of rules in this release. You should update your config file as follows: ```diff potential-bugs: active: true ... - DuplicateCaseInWhenExpression: - active: true ... - MissingWhenCase: - active: true - allowElseExpression: true ... - RedundantElseInWhen: - active: true style: active: true ... - ForbiddenPublicDataClass: - active: true - excludes: ['**'] - ignorePackages: - - '*.internal' - - '*.internal.*' ... - LibraryCodeMustSpecifyReturnType: - active: true - excludes: ['**'] ... - LibraryEntitiesShouldNotBePublic: - active: true - excludes: ['**'] ``` If you wish to use the `libraries` ruleset we introduced you should add the following to your config file: ```diff + libraries: + active: true + ForbiddenPublicDataClass: + active: false + LibraryEntitiesShouldNotBePublic: + active: false + LibraryCodeMustSpecifyReturnType: + active: true ``` and add the following to you `build.gradle` file: ```kotlin detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:$version") ``` If you're using our KtLint wrapper (i.e. `detekt-formatting`) you should also update your config file as follows: ```diff formatting: active: true ... - TrailingComma: - active: false - autoCorrect: true - allowTrailingComma: false - allowTrailingCommaOnCallSite: false ... + TrailingCommaOnCallSite: + active: false + autoCorrect: true + useTrailingCommaOnCallSite: false + TrailingCommaOnDeclarationSite: + active: false + autoCorrect: true + useTrailingCommaOnDeclarationSite: false ``` ##### Changelog - ReturnCount: correctly count assignment expressions with elvis return as guard clauses - [#5539](https://togithub.com/detekt/detekt/pull/5539) - UnnecessaryPartOfBinaryExpression: fix false positive with pair creation - [#5516](https://togithub.com/detekt/detekt/pull/5516) - False positive at `UnnecessaryPartOfBinaryExpression` - [#5514](https://togithub.com/detekt/detekt/issues/5514) - Update documentation for TrailingComma rules - [#5513](https://togithub.com/detekt/detekt/pull/5513) - `TrimMultilineRawString` false-positive on annotation parameters - [#5476](https://togithub.com/detekt/detekt/issues/5476) - Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks UnreachableCode - [#5435](https://togithub.com/detekt/detekt/issues/5435) - Detekt 1.22.0-RC1 -> 1.22.0-RC2 breaks ignoreAnnotated - [#5427](https://togithub.com/detekt/detekt/issues/5427) - Fix issues introduced by [#5152](https://togithub.com/detekt/detekt/issues/5152) - [#5508](https://togithub.com/detekt/detekt/pull/5508) - MultilineLambdaItParameter: fix false positive for one-line statements with a lambda argument - [#5505](https://togithub.com/detekt/detekt/pull/5505) - UseArrayLiteralsInAnnotations: fix false negative with primitive array factory calls - [#5482](https://togithub.com/detekt/detekt/pull/5482) - TrimMultilineRawString: fix false positive when it's expected as constant - [#5480](https://togithub.com/detekt/detekt/pull/5480) - Fix false negative `SafeCast` with no braces - [#5479](https://togithub.com/detekt/detekt/pull/5479) - Update gradle/wrapper-validation-action digest to [`55e685c`](https://togithub.com/detekt/detekt/commit/55e685c) - [#5472](https://togithub.com/detekt/detekt/pull/5472) - Grant permission for type resolution Gradle job - [#5470](https://togithub.com/detekt/detekt/pull/5470) - Fix ObjectPropertyNaming Rule false positive - [#5466](https://togithub.com/detekt/detekt/pull/5466) - Fix LambdaParameterNaming rule false positive - [#5465](https://togithub.com/detekt/detekt/pull/5465) - Fix ReturnCount false positive when excludeReturnFromLambda is enabled - [#5459](https://togithub.com/detekt/detekt/pull/5459) - CognitiveComplexity: count else/else-if as one complexity - [#5458](https://togithub.com/detekt/detekt/pull/5458) - Fix false positive MultilineRawStringIndentation with tab indentation - [#5453](https://togithub.com/detekt/detekt/pull/5453) - Don't show the number of issues generating the BindingContext - [#5449](https://togithub.com/detekt/detekt/pull/5449) - Make detekt less noisy - [#5448](https://togithub.com/detekt/detekt/pull/5448) - New ruleauthors rule for Entity.from(x.nameIdentifier ?: x) -> Entity.atName(x) - [#5444](https://togithub.com/detekt/detekt/pull/5444) - Separating ComplexMethod rule into CyclomaticComplexMethod and CognitiveComplexMethod - [#5442](https://togithub.com/detekt/detekt/pull/5442) - Improve error reporting for CascadingCallWrapping - [#5439](https://togithub.com/detekt/detekt/pull/5439) - TrimMultilineRawString: fix false positive with not a raw string - [#5438](https://togithub.com/detekt/detekt/pull/5438) - BooleanPropertyNaming highlight only the name of the variable - [#5431](https://togithub.com/detekt/detekt/pull/5431) - Deprecate `TrailingComma` as it's now split in two rules - [#5423](https://togithub.com/detekt/detekt/pull/5423) - Remove unused constant - [#5421](https://togithub.com/detekt/detekt/pull/5421) - Report if/else as issue location instead of block - [#5407](https://togithub.com/detekt/detekt/pull/5407) - Remove some unnecessary suppressions - [#5400](https://togithub.com/detekt/detekt/pull/5400) - Check FormattingRule is auto-correctable by information provided by ktlint - [#5398](https://togithub.com/detekt/detekt/pull/5398) - Fix false negative MultilineLambdaItParameter on complex multiline single statement - [#5397](https://togithub.com/detekt/detekt/pull/5397) - ObjectPropertyNaming: fix false positive with top level properties - [#5390](https://togithub.com/detekt/detekt/pull/5390) - Remove usage of MPP targets function for JVM-only projects - [#5383](https://togithub.com/detekt/detekt/pull/5383) - UnnecessaryNotNullCheck: fix false negative with smart casted arguments - [#5380](https://togithub.com/detekt/detekt/pull/5380) - Add missing overlapping info & fix rules URLs - [#5378](https://togithub.com/detekt/detekt/pull/5378) - AlsoCouldBeApply: fix false positive when all statements are not `it`-started expressions - [#5376](https://togithub.com/detekt/detekt/pull/5376) - UnusedPrivateMember: fix false negative with named arguments - [#5374](https://togithub.com/detekt/detekt/pull/5374) - Change requires type resolution rule warning to debug level to not spam the user console - [#5353](https://togithub.com/detekt/detekt/pull/5353) - Report UseDataClass findings on class name - [#5352](https://togithub.com/detekt/detekt/pull/5352) - Report LabeledExpression as the label instead of the whole expression - [#5351](https://togithub.com/detekt/detekt/pull/5351) - Report CastToNullableType at the cast operator instead of the whole expression - [#5350](https://togithub.com/detekt/detekt/pull/5350) - Convert previously known string property to list based on default value - [#5347](https://togithub.com/detekt/detekt/pull/5347) - CastToNullableType: highlights too much - [#5346](https://togithub.com/detekt/detekt/issues/5346) - UseDataClass flags the whole class body, not just the name - [#5338](https://togithub.com/detekt/detekt/issues/5338) - CanBeNonNullable: explain why the rule does what it does. - [#5332](https://togithub.com/detekt/detekt/pull/5332) - Differentiate between correctable and non-correctable KtLint rules - [#5324](https://togithub.com/detekt/detekt/pull/5324) - ReturnCount 1.22.0 crashes on valid 1.21.0 config property excludedFunctions when using --all-rules cli flag - [#5323](https://togithub.com/detekt/detekt/issues/5323) - LabeledExpression to highlight only label - [#5316](https://togithub.com/detekt/detekt/issues/5316) - Use the correct source directory set on JVM - [#5163](https://togithub.com/detekt/detekt/pull/5163) - Get Android variant compile classpath from compileConfiguration - [#5152](https://togithub.com/detekt/detekt/pull/5152) - Use list config for `FunctionOnlyReturningConstant>excludedFunctions` - [#5120](https://togithub.com/detekt/detekt/pull/5120) - MaxLineLength: raw typo and test cleanup - [#5315](https://togithub.com/detekt/detekt/pull/5315) - EndOfSentenceFormat: fix HTML tag heuristic - [#5313](https://togithub.com/detekt/detekt/pull/5313) - Fix EndOfSentenceFormat highlight - [#5311](https://togithub.com/detekt/detekt/pull/5311) - Introduce configFile property on DetektGenerateTask - [#5308](https://togithub.com/detekt/detekt/pull/5308) - Improve debug suggestion message - [#5300](https://togithub.com/detekt/detekt/pull/5300) - Fat-Jar version of detekt-generator module - [#5297](https://togithub.com/detekt/detekt/pull/5297) - Toolchains docs - [#5293](https://togithub.com/detekt/detekt/pull/5293) - Adopt new AGP dsl - [#5288](https://togithub.com/detekt/detekt/pull/5288) - NonBooleanPropertyPrefixedWithIs: Allow boolean functions - [#5285](https://togithub.com/detekt/detekt/pull/5285) - Provide the current classpath inside `KotlinEnvironmentResolver` - [#5275](https://togithub.com/detekt/detekt/pull/5275) - Fix false-positive on `NestedScopeFunctions` - [#5274](https://togithub.com/detekt/detekt/pull/5274) - Use convention method to set task property defaults - [#5272](https://togithub.com/detekt/detekt/pull/5272) - Update docusaurus monorepo to v2.1.0 - [#5270](https://togithub.com/detekt/detekt/pull/5270) - detektVersionReplace.js plugin is not replacing all \[detekt_version] tags on website - [#5266](https://togithub.com/detekt/detekt/pull/5266) - Update ktlint rule doc links - [#5258](https://togithub.com/detekt/detekt/pull/5258) - Remove redundant rule config for rules enabled by default - [#5257](https://togithub.com/detekt/detekt/pull/5257) - UnusedPrivateMember: fix false positive with backtick parameters - [#5252](https://togithub.com/detekt/detekt/pull/5252) - Improve MultilineRawStringIndentation - [#5245](https://togithub.com/detekt/detekt/pull/5245) - UnnecessaryLet: fix false positive with with invoke operator calls - [#5240](https://togithub.com/detekt/detekt/pull/5240) - Introduce baseline tooling api - [#5239](https://togithub.com/detekt/detekt/pull/5239) - Allow secondary constructors to reference CoroutineDispatchers - [#5227](https://togithub.com/detekt/detekt/pull/5227) - Update `UnnecessaryAbstractClass` issue description to be less verbose - [#5224](https://togithub.com/detekt/detekt/pull/5224) - Update plugin com.gradle.common-custom-user-data-gradle-plugin to v1.8.0 - [#5223](https://togithub.com/detekt/detekt/pull/5223) - Pin dependencies - [#5222](https://togithub.com/detekt/detekt/pull/5222) - Remove rule from NamingRules multi rule - [#5212](https://togithub.com/detekt/detekt/pull/5212) - Run all rules from EmptyBlocks multi rule individually - [#5208](https://togithub.com/detekt/detekt/pull/5208) - Run all rules from KDocStyle multi rule individually - [#5207](https://togithub.com/detekt/detekt/pull/5207) - Docs: GitHub - Add link to configure Sarif severity alert level - [#5206](https://togithub.com/detekt/detekt/pull/5206) - Fix errors with `detektGenerateConfig` - [#5199](https://togithub.com/detekt/detekt/pull/5199) - Forbid constructors with `ForbiddenMethodCall` - [#5195](https://togithub.com/detekt/detekt/pull/5195) - Update github/codeql-action digest to [`2ca79b6`](https://togithub.com/detekt/detekt/commit/2ca79b6) - [#5177](https://togithub.com/detekt/detekt/pull/5177) - Allow to ignore overloaded methods for the complex interface rule ([#5165](https://togithub.com/detekt/detekt/issues/5165)) - [#5173](https://togithub.com/detekt/detekt/pull/5173) - Add excludesRawStrings in MaxLineLength - [#5171](https://togithub.com/detekt/detekt/pull/5171) - Enable Predictive Test Selection for local builds - [#5170](https://togithub.com/detekt/detekt/pull/5170) - Update dependency org.kohsuke:github-api to v1.307 - [#5168](https://togithub.com/detekt/detekt/pull/5168) - Update dependency com.github.ajalt:clikt to v2.8.0 - [#5167](https://togithub.com/detekt/detekt/pull/5167) - Update docusaurus monorepo to v2.0.1 - [#5166](https://togithub.com/detekt/detekt/pull/5166) - Run build-logic Kotlin compilation out of process on CI - [#5162](https://togithub.com/detekt/detekt/pull/5162) - Add information about exhaustiveness check to documentation - [#5160](https://togithub.com/detekt/detekt/pull/5160) - Use getter when determining whether custom config path is set in DetektGenerateConfigTask - [#5157](https://togithub.com/detekt/detekt/pull/5157) - Limit Kotlin version warning suppression scope in build - [#5156](https://togithub.com/detekt/detekt/pull/5156) - Re-enable warnings as errors for detekt-gradle-plugin - [#5155](https://togithub.com/detekt/detekt/pull/5155) - Bundle slf4j-nop in detekt-formatting JAR - [#5153](https://togithub.com/detekt/detekt/pull/5153) - Fix false negative for UseRequire when thrown in conditional block - [#5147](https://togithub.com/detekt/detekt/pull/5147) - Allow parentheses for unclear precedence with range operator - [#5143](https://togithub.com/detekt/detekt/pull/5143) - Mark apiDump task as incompatible with configuration cache - [#5134](https://togithub.com/detekt/detekt/pull/5134) - Improve binding context management - [#5130](https://togithub.com/detekt/detekt/pull/5130) - `RedundantExplicitType` add annotation `@RequiresTypeResolution` - [#5128](https://togithub.com/detekt/detekt/pull/5128) - Disable `ExitOutsideMain` if `contextBinding` is empty - [#5127](https://togithub.com/detekt/detekt/pull/5127) - Use list config for `DataClassContainsFunctions>conversionFunctionPrefix` - [#5119](https://togithub.com/detekt/detekt/pull/5119) - Support proper globbing in `ReturnCount` - [#5118](https://togithub.com/detekt/detekt/pull/5118) - Improve finding message of ExplicitItLambdaParameter - [#5117](https://togithub.com/detekt/detekt/pull/5117) - Update JamesIves/github-pages-deploy-action digest to [`13046b6`](https://togithub.com/detekt/detekt/commit/13046b6) - [#5110](https://togithub.com/detekt/detekt/pull/5110) - UnusedUnaryOperator: fix false positive with var assignment and if expression - [#5106](https://togithub.com/detekt/detekt/pull/5106) - Tag publishPlugins task as incompatible with configuration cache - [#5101](https://togithub.com/detekt/detekt/pull/5101) - Make verifyGeneratorOutput task configuration cache compatible - [#5100](https://togithub.com/detekt/detekt/pull/5100) - Remove obsolete FeatureInAlphaState opt in - [#5099](https://togithub.com/detekt/detekt/pull/5099) - Remove explicit RequiresOptIn compiler flag - [#5098](https://togithub.com/detekt/detekt/pull/5098) - Use Gradle's configuration cache by default - [#5095](https://togithub.com/detekt/detekt/pull/5095) - Detect undocumented protected classes, properties, and functions - [#5083](https://togithub.com/detekt/detekt/pull/5083) - ReturnCount.excludedFunctions should be a List\JetBrains/kotlin
### [`v1.8.0`](https://togithub.com/JetBrains/kotlin/blob/HEAD/ChangeLog.md#180) ##### Analysis API - [`KT-50255`](https://youtrack.jetbrains.com/issue/KT-50255) Analysis API: Implement standalone mode for the Analysis API ##### Analysis API. FIR - [`KT-54292`](https://youtrack.jetbrains.com/issue/KT-54292) Symbol Light classes: implement PsiVariable.computeConstantValue for light field - [`KT-54293`](https://youtrack.jetbrains.com/issue/KT-54293) Analysis API: fix constructor symbol creation when its accessed via type alias ##### Android - [`KT-53342`](https://youtrack.jetbrains.com/issue/KT-53342) TCS: New AndroidSourceSet layout for multiplatform - [`KT-53013`](https://youtrack.jetbrains.com/issue/KT-53013) Increase AGP compile version in KGP to 4.1.3 - [`KT-54013`](https://youtrack.jetbrains.com/issue/KT-54013) Report error when using deprecated Kotlin Android Extensions compiler plugin - [`KT-53709`](https://youtrack.jetbrains.com/issue/KT-53709) MPP, Android SSL2: Conflicting warnings for `androidTest/kotlin` source set folder ##### Backend. Native. Debug - [`KT-53561`](https://youtrack.jetbrains.com/issue/KT-53561) Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location" ##### Compiler ##### New Features - [`KT-52817`](https://youtrack.jetbrains.com/issue/KT-52817) Add `@JvmSerializableLambda` annotation to keep old behavior of non-invokedynamic lambdas - [`KT-54460`](https://youtrack.jetbrains.com/issue/KT-54460) Implementation of non-local break and continue - [`KT-53916`](https://youtrack.jetbrains.com/issue/KT-53916) Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler - [`KT-32208`](https://youtrack.jetbrains.com/issue/KT-32208) Generate method annotations into bytecode for suspend lambdas (on invokeSuspend) - [`KT-53438`](https://youtrack.jetbrains.com/issue/KT-53438) Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage ##### Performance Improvements - [`KT-53347`](https://youtrack.jetbrains.com/issue/KT-53347) Get rid of excess allocations in parser - [`KT-53689`](https://youtrack.jetbrains.com/issue/KT-53689) JVM: Optimize equality on class literals - [`KT-53119`](https://youtrack.jetbrains.com/issue/KT-53119) Improve String Concatenation Lowering ##### Fixes - [`KT-53465`](https://youtrack.jetbrains.com/issue/KT-53465) Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20 - [`KT-49658`](https://youtrack.jetbrains.com/issue/KT-49658) NI: False negative TYPE_MISMATCH on nullable type with `when` - [`KT-48162`](https://youtrack.jetbrains.com/issue/KT-48162) NON_VARARG_SPREAD isn't reported on \*toTypedArray() call - [`KT-43493`](https://youtrack.jetbrains.com/issue/KT-43493) NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas - [`KT-54393`](https://youtrack.jetbrains.com/issue/KT-54393) Change in behavior from 1.7.10 to 1.7.20 for java field override. - [`KT-55357`](https://youtrack.jetbrains.com/issue/KT-55357) IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper bound - [`KT-55068`](https://youtrack.jetbrains.com/issue/KT-55068) Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend - [`KT-51284`](https://youtrack.jetbrains.com/issue/KT-51284) SAM conversion doesn't work if method has context receivers - [`KT-48532`](https://youtrack.jetbrains.com/issue/KT-48532) Remove old JVM backend - [`KT-55065`](https://youtrack.jetbrains.com/issue/KT-55065) Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend - [`KT-53270`](https://youtrack.jetbrains.com/issue/KT-53270) K1: implement synthetic Enum.entries property - [`KT-52823`](https://youtrack.jetbrains.com/issue/KT-52823) Cannot access class Thread.State after upgrading to 1.7 from 1.6.1 using -Xjdk-release=1.8 - [`KT-55108`](https://youtrack.jetbrains.com/issue/KT-55108) IR interpreter: Error occurred while optimizing an expression: VARARG - [`KT-53547`](https://youtrack.jetbrains.com/issue/KT-53547) Missing fun IrBuilderWithScope.irFunctionReference - [`KT-54884`](https://youtrack.jetbrains.com/issue/KT-54884) "StackOverflowError: null" caused by Enum constant name in constructor of the same Enum constant - [`KT-47475`](https://youtrack.jetbrains.com/issue/KT-47475) "IncompatibleClassChangeError: disagree on InnerClasses attribute": cross-module inlined WhenMappings has mismatched InnerClasses - [`KT-55013`](https://youtrack.jetbrains.com/issue/KT-55013) State checker use-after-free with XCode 14.1 - [`KT-54802`](https://youtrack.jetbrains.com/issue/KT-54802) "VerifyError: Bad type on operand stack" for inline functions on arrays - [`KT-54707`](https://youtrack.jetbrains.com/issue/KT-54707) "VerifyError: Bad type on operand stack" in inline call chain on a nullable array value - [`KT-48678`](https://youtrack.jetbrains.com/issue/KT-48678) Coroutine debugger: disable "was optimised out" compiler feature - [`KT-54745`](https://youtrack.jetbrains.com/issue/KT-54745) Restore KtToken constructors without tokenId parameter to preserve back compatibility - [`KT-54650`](https://youtrack.jetbrains.com/issue/KT-54650) Binary incompatible ABI change in Kotlin 1.7.20 - [`KT-52786`](https://youtrack.jetbrains.com/issue/KT-52786) Frontend / K2: IndexOutOfBoundsException when opting in to K2 - [`KT-54004`](https://youtrack.jetbrains.com/issue/KT-54004) Builder type inference does not work correctly with variable assignment and breaks run-time - [`KT-54581`](https://youtrack.jetbrains.com/issue/KT-54581) JVM: "VerifyError: Bad type on operand stack" with generic inline function and `when` inside try-catch block - [`KT-53794`](https://youtrack.jetbrains.com/issue/KT-53794) IAE "Unknown visibility: protected/*protected and package*/" on callable reference to protected member of Java superclass - [`KT-54600`](https://youtrack.jetbrains.com/issue/KT-54600) NPE on passing nullable Kotlin lambda as Java's generic SAM interface with `super` type bound - [`KT-54463`](https://youtrack.jetbrains.com/issue/KT-54463) Delegating to a field with a platform type causes java.lang.NoSuchFieldError: value$delegate - [`KT-54509`](https://youtrack.jetbrains.com/issue/KT-54509) Ir Interpreter: unable to evaluate string concatenation with "this" as argument - [`KT-54615`](https://youtrack.jetbrains.com/issue/KT-54615) JVM: Internal error in file lowering: java.lang.AssertionError: Error occurred while optimizing an expression - [`KT-53146`](https://youtrack.jetbrains.com/issue/KT-53146) JVM IR: unnecessary checkcast of null leads to NoClassDefFoundError if the type isn't available at runtime - [`KT-53712`](https://youtrack.jetbrains.com/issue/KT-53712) Add mode to prevent generating JVM 1.8+ annotation targets (TYPE_USE, TYPE_PARAMETER) - [`KT-54366`](https://youtrack.jetbrains.com/issue/KT-54366) K2: no JVM BE specific diagnostics (in particular CONFLICTING_JVM_DECLARATIONS) in 1.8 - [`KT-35187`](https://youtrack.jetbrains.com/issue/KT-35187) NullPointerException on compiling suspend inline fun with typealias to suspend function type - [`KT-54275`](https://youtrack.jetbrains.com/issue/KT-54275) K2: "IllegalArgumentException: KtParameter is not a subtype of class KtAnnotationEntry for factory REPEATED_ANNOTATION" - [`KT-53656`](https://youtrack.jetbrains.com/issue/KT-53656) "IllegalStateException: typeParameters == null for SimpleFunctionDescriptorImpl" with recursive generic type parameters - [`KT-46727`](https://youtrack.jetbrains.com/issue/KT-46727) Report warning on contravariant usages of star projected argument from Java - [`KT-53197`](https://youtrack.jetbrains.com/issue/KT-53197) K2: 'init' hides member of supertype 'UIComponent' and needs 'override' modifier - [`KT-53867`](https://youtrack.jetbrains.com/issue/KT-53867) K2: `@JvmRecord` does not compile to a java record - [`KT-53964`](https://youtrack.jetbrains.com/issue/KT-53964) K2 is unable to work with Java records - [`KT-53349`](https://youtrack.jetbrains.com/issue/KT-53349) K2: TYPE_MISMATCH caused by non-local return - [`KT-54100`](https://youtrack.jetbrains.com/issue/KT-54100) "Type variable TypeVariable(P) should not be fixed" crash in code with errors - [`KT-54212`](https://youtrack.jetbrains.com/issue/KT-54212) K2: cannot calculate implicit property type - [`KT-53699`](https://youtrack.jetbrains.com/issue/KT-53699) K2: Exception during IR lowering in code with coroutines - [`KT-54192`](https://youtrack.jetbrains.com/issue/KT-54192) Warn about unsupported feature on generic inline class parameters - [`KT-53723`](https://youtrack.jetbrains.com/issue/KT-53723) Friend modules aren't getting passed to cache build during box tests - [`KT-53873`](https://youtrack.jetbrains.com/issue/KT-53873) K2: Duplicated diagnostics reported from user type ref checkers - [`KT-50909`](https://youtrack.jetbrains.com/issue/KT-50909) "VerifyError: Bad type on operand stack" caused by smartcasting for nullable inline class property in class - [`KT-54115`](https://youtrack.jetbrains.com/issue/KT-54115) Restore Psi2IrTranslator constructor from 1.7.20 - [`KT-53908`](https://youtrack.jetbrains.com/issue/KT-53908) K2: Self-referencing generics in Java class causes New Inference Error (IE: class Foo\Configuration
📅 Schedule: Branch creation - "before 3am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.