Repository navigation
Releases
Releases · openrewrite/rewrite-static-analysis
2.59.0
What's Changed
- Upgrade Gradle wrapper to 9.9.1 by @timtebeek in #1256
Full Changelog: v2.56.0...v2.59.0
2.58.0
What's Changed
- Upgrade Gradle wrapper to 9.9.1 by @timtebeek in #1256
Full Changelog: v2.56.0...v2.58.0
2.57.0
What's Changed
- Upgrade Gradle wrapper to 9.9.1 by @timtebeek in #1256
Full Changelog: v2.56.0...v2.57.0
2.56.0
What's Changed
- Avoid duplicating comments from
.toString()inRemoveInstanceOfPatternMatchby @greg-at-moderne in #1253 - Build
RemoveInstanceOfPatternMatch's declaration from theinstanceof's types by @knutwannheden in #1254 - Keep
instanceofpatterns that RemoveInstanceOfPatternMatch can't fully rewrite by @knutwannheden in #1255
Full Changelog: v2.55.0...v2.56.0
2.55.0
What's Changed
- Drop multi-catch alternatives covered within the same catch by @steve-aom-elliott in #1252
Full Changelog: v2.53.0...v2.55.0
2.54.0
What's Changed
- Preserve intentional switch fall-through in common static analysis by @jkschneider in #1216
- Preserve Kotlin inferred-return method visibility in abstract classes by @jkschneider in #1217
- Keep native language syntax intact in WhileInsteadOfFor by @jkschneider in #1219
- Preserve Kotlin safe property comparisons with Boolean literals by @jkschneider in #1220
- Preserve abstract method contracts in MethodNameCasing by @jkschneider in #1221
- Respect source compatibility and preserve anonymous diamond arguments by @jkschneider in #1218
- Preserve finalizer cleanup in common static analysis by @jkschneider in #1222
- Preserve Kotlin rethrows before a later Throwable handler by @jkschneider in #1223
- Handle typed catches without a variable binding safely by @jkschneider in #1225
- Preserve implicit receivers in EqualsAvoidsNull by @jkschneider in #1226
- Limit Externalizable constructor generation to supported source languages by @jkschneider in #1228
- Preserve Groovy statement wrappers when replacing Class.isInstance by @jkschneider in #1229
- Replace only BigDecimal rounding expressions in Java templates by @jkschneider in #1224
- Restrict CovariantEquals to Java and Groovy by @jkschneider in #1227
- Preserve legacy Groovy labels when adding braces by @jkschneider in #1230
- Erase the instanceof template dummy without changing operand attribution by @jkschneider in #1233
- Retain reflection for recursive generic bounds on legacy runtimes by @jkschneider in #1234
- Preserve evaluation of empty Kotlin if conditions by @jkschneider in #1236
- Avoid changing semantics in
InlineVariable(C20 of #1116) by @Niloyyy in #1180 - Preserve published public and protected constructor API by @jkschneider in #1240
- AllBranchesIdentical to hoist side-effect statements by @greg-at-moderne in #1032
- Preserve published public and protected class modifiers by @jkschneider in #1241
- Keep BigDecimal decimal round-trip conversion opt-in by @jkschneider in #1237
- Preserve nested boolean negation precedence and Groovy coercion by @jkschneider in #1244
- Preserve generated superclass method contracts when standardizing names by @jkschneider in #1242
- Preserve definite assignment for constructor early returns by @jkschneider in #1243
- Keep observable method-name refactoring out of common static analysis by @jkschneider in #1245
- Preserve size comparisons on known mock receivers by @jkschneider in #1246
- Keep parentheses needed for precedence in
SimplifyRedundantLogicalExpression(E4 of #1116) by @Niloyyy in #1178 - Handle implicit
thisinCollectionToArrayShouldHaveProperType(part of C21 of #1116) by @Niloyyy in #1179 - Preserve known mock receivers declared in for initializers by @jkschneider in #1249
- Inline variables whose initializer is a subtype of the declared type by @timtebeek in #1250
- Upgrade Gradle wrapper to 9.9.0 by @timtebeek in #1251
Full Changelog: v2.52.0...v2.54.0
2.53.0
What's Changed
- Preserve intentional switch fall-through in common static analysis by @jkschneider in #1216
- Preserve Kotlin inferred-return method visibility in abstract classes by @jkschneider in #1217
- Keep native language syntax intact in WhileInsteadOfFor by @jkschneider in #1219
- Preserve Kotlin safe property comparisons with Boolean literals by @jkschneider in #1220
- Preserve abstract method contracts in MethodNameCasing by @jkschneider in #1221
- Respect source compatibility and preserve anonymous diamond arguments by @jkschneider in #1218
- Preserve finalizer cleanup in common static analysis by @jkschneider in #1222
- Preserve Kotlin rethrows before a later Throwable handler by @jkschneider in #1223
- Handle typed catches without a variable binding safely by @jkschneider in #1225
- Preserve implicit receivers in EqualsAvoidsNull by @jkschneider in #1226
- Limit Externalizable constructor generation to supported source languages by @jkschneider in #1228
- Preserve Groovy statement wrappers when replacing Class.isInstance by @jkschneider in #1229
- Replace only BigDecimal rounding expressions in Java templates by @jkschneider in #1224
- Restrict CovariantEquals to Java and Groovy by @jkschneider in #1227
- Preserve legacy Groovy labels when adding braces by @jkschneider in #1230
- Erase the instanceof template dummy without changing operand attribution by @jkschneider in #1233
- Retain reflection for recursive generic bounds on legacy runtimes by @jkschneider in #1234
- Preserve evaluation of empty Kotlin if conditions by @jkschneider in #1236
- Avoid changing semantics in
InlineVariable(C20 of #1116) by @Niloyyy in #1180 - Preserve published public and protected constructor API by @jkschneider in #1240
- AllBranchesIdentical to hoist side-effect statements by @greg-at-moderne in #1032
- Preserve published public and protected class modifiers by @jkschneider in #1241
- Keep BigDecimal decimal round-trip conversion opt-in by @jkschneider in #1237
- Preserve nested boolean negation precedence and Groovy coercion by @jkschneider in #1244
- Preserve generated superclass method contracts when standardizing names by @jkschneider in #1242
- Preserve definite assignment for constructor early returns by @jkschneider in #1243
- Keep observable method-name refactoring out of common static analysis by @jkschneider in #1245
- Preserve size comparisons on known mock receivers by @jkschneider in #1246
- Keep parentheses needed for precedence in
SimplifyRedundantLogicalExpression(E4 of #1116) by @Niloyyy in #1178 - Handle implicit
thisinCollectionToArrayShouldHaveProperType(part of C21 of #1116) by @Niloyyy in #1179 - Preserve known mock receivers declared in for initializers by @jkschneider in #1249
- Inline variables whose initializer is a subtype of the declared type by @timtebeek in #1250
- Upgrade Gradle wrapper to 9.9.0 by @timtebeek in #1251
Full Changelog: v2.52.0...v2.53.0
2.52.0
What's Changed
- Fix thread-safety of
EqualsToContentEqualsby @greg-at-moderne in #1211 - Skip contentEquals rewrite when
toStringis inherited from Object inEqualsToContentEqualsby @greg-at-moderne in #1212 - Inline calls to deprecated OpenRewrite methods by @timtebeek in #1213
- Remove test Java parsers the build plugin provides by @timtebeek in #1214
- Add
VariableReferences.isEffectivelyFinaland use it in three recipes by @knutwannheden in #1215
Full Changelog: v2.50.0...v2.52.0
2.51.0
What's Changed
- Keep unconditional
instanceofchecks before Java 21 inInstanceOfPatternMatchby @timtebeek in #1181 - Preserve comments when removing overrides that only call super by @jkschneider in #1152
- Preserve Refaster before-template lambda patterns by @jkschneider in #1182
- Preserve Refaster string comparison and toString patterns by @jkschneider in #1183
- Retain type witnesses that target-type functional arguments by @jkschneider in #1186
- Preserve Refaster boolean template bodies by @jkschneider in #1185
- Preserve switch selector evaluation when lowering cases by @jkschneider in #1189
- Keep Java control-flow rewrites off Python trees by @jkschneider in #1187
- Preserve JavaScript semantics in Java static-analysis recipes by @jkschneider in #1188
- Preserve default-only switch bodies and local scope by @jkschneider in #1190
- Preserve unboxing when simplifying boolean returns by @jkschneider in #1191
- Preserve lazy receiver evaluation in lambda conversions by @jkschneider in #1193
- Cover distinct Kotlin nullable-string guards in boolean simplification by @jkschneider in #1184
- Preserve explicit null switch labels in MinimumSwitchCases by @jkschneider in #1192
- Preserve Groovy equality dispatch and statement shape by @jkschneider in #1194
- Preserve Boolean unboxing in empty if conditions by @jkschneider in #1197
- Preserve explicit type witnesses in targetless expression contexts by @jkschneider in #1196
- Preserve unboxing in negated boxed Boolean returns by @jkschneider in #1199
- Preserve StringBuilder string identity and evaluation contracts by @jkschneider in #1198
- Preserve unsupported switch source and case-label semantics by @jkschneider in #1200
- Use the recipe formatting service in NeedBraces by @jkschneider in #1201
- Retain required C# constant initializers by @jkschneider in #1195
- Preserve generic array inference in varargs constructors by @jkschneider in #1202
- Preserve explicitly typed lambdas for wildcard targets by @jkschneider in #1203
- Use bundled Java formatter when platform services are shared by @jkschneider in #1205
- Preserve explicitly referenced finalizer overrides by @jkschneider in #1204
- Preserve size comparisons inside isEmpty implementations by @jkschneider in #1206
- Preserve intentional fall-through documented in switch headers by @jkschneider in #1207
- Preserve fresh wrapper identity in CommonStaticAnalysis by @jkschneider in #1208
- Preserve resource state when removing redundant closes by @jkschneider in #1209
- Preserve outer fields assigned by nested class initializers by @jkschneider in #1210
Full Changelog: v2.49.0...v2.51.0
2.50.0
What's Changed
- Keep unconditional
instanceofchecks before Java 21 inInstanceOfPatternMatchby @timtebeek in #1181 - Preserve comments when removing overrides that only call super by @jkschneider in #1152
- Preserve Refaster before-template lambda patterns by @jkschneider in #1182
- Preserve Refaster string comparison and toString patterns by @jkschneider in #1183
- Retain type witnesses that target-type functional arguments by @jkschneider in #1186
- Preserve Refaster boolean template bodies by @jkschneider in #1185
- Preserve switch selector evaluation when lowering cases by @jkschneider in #1189
- Keep Java control-flow rewrites off Python trees by @jkschneider in #1187
- Preserve JavaScript semantics in Java static-analysis recipes by @jkschneider in #1188
- Preserve default-only switch bodies and local scope by @jkschneider in #1190
- Preserve unboxing when simplifying boolean returns by @jkschneider in #1191
- Preserve lazy receiver evaluation in lambda conversions by @jkschneider in #1193
- Cover distinct Kotlin nullable-string guards in boolean simplification by @jkschneider in #1184
- Preserve explicit null switch labels in MinimumSwitchCases by @jkschneider in #1192
- Preserve Groovy equality dispatch and statement shape by @jkschneider in #1194
- Preserve Boolean unboxing in empty if conditions by @jkschneider in #1197
- Preserve explicit type witnesses in targetless expression contexts by @jkschneider in #1196
- Preserve unboxing in negated boxed Boolean returns by @jkschneider in #1199
- Preserve StringBuilder string identity and evaluation contracts by @jkschneider in #1198
- Preserve unsupported switch source and case-label semantics by @jkschneider in #1200
- Use the recipe formatting service in NeedBraces by @jkschneider in #1201
- Retain required C# constant initializers by @jkschneider in #1195
- Preserve generic array inference in varargs constructors by @jkschneider in #1202
- Preserve explicitly typed lambdas for wildcard targets by @jkschneider in #1203
- Use bundled Java formatter when platform services are shared by @jkschneider in #1205
- Preserve explicitly referenced finalizer overrides by @jkschneider in #1204
- Preserve size comparisons inside isEmpty implementations by @jkschneider in #1206
- Preserve intentional fall-through documented in switch headers by @jkschneider in #1207
- Preserve fresh wrapper identity in CommonStaticAnalysis by @jkschneider in #1208
- Preserve resource state when removing redundant closes by @jkschneider in #1209
- Preserve outer fields assigned by nested class initializers by @jkschneider in #1210
Full Changelog: v2.49.0...v2.50.0