Skip to content

InstanceOfPatternMatch not to remove double primitive cast#918

Merged
MBoegers merged 2 commits into
mainfrom
greg-preserve-nested-unboxing-cast-instanceof
Jun 15, 2026
Merged

InstanceOfPatternMatch not to remove double primitive cast#918
MBoegers merged 2 commits into
mainfrom
greg-preserve-nested-unboxing-cast-instanceof

Conversation

@greg-at-moderne

Copy link
Copy Markdown
Contributor

What's changed?

An amendment to InstanceOfPatternMatch recipe.
Make it not remove the double cast from long to int.

What's your motivation?

@greg-at-moderne greg-at-moderne self-assigned this Jun 12, 2026
@github-project-automation github-project-automation Bot moved this to In Progress in OpenRewrite Jun 12, 2026
@greg-at-moderne greg-at-moderne changed the title Greg preserve nested unboxing cast instanceof InstanceOfPatternMatch not to remove double primitive cast Jun 12, 2026
@MBoegers MBoegers self-requested a review June 12, 2026 15:09

@MBoegers MBoegers left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same path I was thinking of. At least until next LST https://openjdk.org/jeps/532 ;)

@github-project-automation github-project-automation Bot moved this from In Progress to Ready to Review in OpenRewrite Jun 12, 2026
@aamotharald

Copy link
Copy Markdown
Contributor

@MBoegers @greg-at-moderne ,
so this is for all double-casts of primitives, not only the long to int downcast, right?
SO even for cases where the double cast could be simplified for primitives, it would also not hurt as well to keep the double-cast.

@MBoegers

Copy link
Copy Markdown
Contributor

Yes from the code it only checks for primitive, should also work for (short) (int) int1
Agree we can add a second test case for this to prove.

@MBoegers MBoegers merged commit dfc6176 into main Jun 15, 2026
1 check passed
@MBoegers MBoegers deleted the greg-preserve-nested-unboxing-cast-instanceof branch June 15, 2026 06:42
@github-project-automation github-project-automation Bot moved this from Ready to Review to Done in OpenRewrite Jun 15, 2026
mergify Bot added a commit to robfrank/linklift that referenced this pull request Jun 18, 2026
… 2.36.0 to 2.37.0 [skip ci]

Bumps [org.openrewrite.recipe:rewrite-static-analysis](https://github.com/openrewrite/rewrite-static-analysis) from 2.36.0 to 2.37.0.
Release notes

*Sourced from [org.openrewrite.recipe:rewrite-static-analysis's releases](https://github.com/openrewrite/rewrite-static-analysis/releases).*

> 2.37.0
> ------
>
> What's Changed
> --------------
>
> * Preserve raw supertype cast on parameterized argument in `RemoveRedundantTypeCast` by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-static-analysis#915](https://redirect.github.com/openrewrite/rewrite-static-analysis/pull/915)
> * Preserve space when InstanceOfPatternMatch replaces a cast after a keyword by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-static-analysis#913](https://redirect.github.com/openrewrite/rewrite-static-analysis/pull/913)
> * `InstanceOfPatternMatch` not to remove double primitive cast by [`@​greg-at-moderne`](https://github.com/greg-at-moderne) in [openrewrite/rewrite-static-analysis#918](https://redirect.github.com/openrewrite/rewrite-static-analysis/pull/918)
> * Fix UseDiamondOperator throwing array index out of bounds when operating on a varargs method by [`@​sambsnyd`](https://github.com/sambsnyd) in [openrewrite/rewrite-static-analysis#919](https://redirect.github.com/openrewrite/rewrite-static-analysis/pull/919)
> * Fix false positive in `AnnotateNullableParameters` when parameter der… by [`@​stefanodallapalma`](https://github.com/stefanodallapalma) in [openrewrite/rewrite-static-analysis#868](https://redirect.github.com/openrewrite/rewrite-static-analysis/pull/868)
>
> **Full Changelog**: <openrewrite/rewrite-static-analysis@v2.36.0...v2.37.0>


Commits

* [`3d2b173`](openrewrite/rewrite-static-analysis@3d2b173) Fix false positive in `AnnotateNullableParameters` when parameter der… ([#868](https://redirect.github.com/openrewrite/rewrite-static-analysis/issues/868))
* [`6d76624`](openrewrite/rewrite-static-analysis@6d76624) Fix UseDiamondOperator throwing array index out of bounds when operating on a...
* [`dfc6176`](openrewrite/rewrite-static-analysis@dfc6176) `InstanceOfPatternMatch` not to remove double primitive cast ([#918](https://redirect.github.com/openrewrite/rewrite-static-analysis/issues/918))
* [`49d1bdc`](openrewrite/rewrite-static-analysis@49d1bdc) Preserve space when InstanceOfPatternMatch replaces a cast after a keyword (#...
* [`23503ce`](openrewrite/rewrite-static-analysis@23503ce) Preserve raw supertype cast on parameterized argument in `RemoveRedundantType...
* [`64e3203`](openrewrite/rewrite-static-analysis@64e3203) git-ignore .context/
* See full diff in [compare view](openrewrite/rewrite-static-analysis@v2.36.0...v2.37.0)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=org.openrewrite.recipe:rewrite-static-analysis&package-manager=maven&previous-version=2.36.0&new-version=2.37.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

Double-Cast-Unboxing bug for InstanceOfPatternMatch

3 participants