Skip to content

Conversation

@RogerRiggs
Copy link
Contributor

@RogerRiggs RogerRiggs commented May 10, 2022

PR#8599 8244681: proposes to add compiler warnings for possible lossy conversions
From the CSR:

"If the type of the right-hand operand of a compound assignment is not assignment compatible with the type of the variable, a cast is implied and possible lossy conversion may silently occur. While similar situations are resolved as compilation errors for primitive assignments, there are no similar rules defined for compound assignments."

This PR anticipates the warnings and adds explicit casts to replace the implicit casts.
In most cases, the cast matches the type of the right-hand side to type of the compound assignment.
Since these casts are truncating the value, there might be a different refactoring that avoids the cast
but a direct replacement was chosen here.

(Advise and suggestions will inform similar updates to other OpenJDK modules).


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed (1 review required, with at least 1 reviewer)

Issue

  • JDK-8286378: Address possibly lossy conversions in java.base

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/8642/head:pull/8642
$ git checkout pull/8642

Update a local copy of the PR:
$ git checkout pull/8642
$ git pull https://git.openjdk.java.net/jdk pull/8642/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 8642

View PR using the GUI difftool:
$ git pr show -t 8642

Using diff file

Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/8642.diff

Add explicit casts to replace implicit casts
@bridgekeeper
Copy link

bridgekeeper bot commented May 10, 2022

👋 Welcome back rriggs! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk openjdk bot added the rfr Pull request is ready for review label May 10, 2022
@openjdk
Copy link

openjdk bot commented May 10, 2022

@RogerRiggs The following labels will be automatically applied to this pull request:

  • core-libs
  • i18n
  • net
  • nio
  • security

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command.

@openjdk openjdk bot added security security-dev@openjdk.org nio nio-dev@openjdk.org core-libs core-libs-dev@openjdk.org net net-dev@openjdk.org i18n i18n-dev@openjdk.org labels May 10, 2022
@mlbridge
Copy link

mlbridge bot commented May 10, 2022

Webrevs

Copy link
Member

@naotoj naotoj left a comment

Choose a reason for hiding this comment

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

Looks good. Assuming copyright years will be updated.

@openjdk
Copy link

openjdk bot commented May 10, 2022

@RogerRiggs This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

After integration, the commit message for the final commit will be:

8286378: Address possibly lossy conversions in java.base

Reviewed-by: naoto, xuelei, bpb, alanb

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been 19 new commits pushed to the master branch:

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready Pull request is ready to be integrated label May 10, 2022
Copy link
Member

@XueleiFan XueleiFan left a comment

Choose a reason for hiding this comment

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

The update in security area looks good to me.

Copy link
Member

@bplb bplb left a comment

Choose a reason for hiding this comment

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

IO, math, and NIO changes look fine.

@asotona
Copy link
Member

asotona commented May 11, 2022

I can confirm this patch clears all warnings from java.base.

Fixed cast style to add a space after cast, (where consistent with file style)
Improved code per review comments in PollSelectors.
@RogerRiggs
Copy link
Contributor Author

/integrate

@openjdk
Copy link

openjdk bot commented May 12, 2022

Going to push as commit 17c5278.
Since your change was applied there have been 44 commits pushed to the master branch:

  • 0a6832b: 8286617: Improve parameter names in javax.lang.model utility visitors
  • 2c5d136: 8282191: Implementation of Foreign Function & Memory API (Preview)
  • 3be394e: 8275535: Retrying a failed authentication on multiple LDAP servers can lead to users blocked
  • cc7560e: 8286287: Reading file as UTF-16 causes Error which "shouldn't happen"
  • 82aa045: 8286015: JFR: Remove jfr.save.generated.asm
  • 1904e9d: 8286423: Destroy password protection in the example code in KeyStore
  • e4439ca: 8284283: javac crashes when several transitive supertypes are missing
  • 752ad1c: 8286422: Add OIDs for RC2 and Blowfish
  • 36bdd25: 8286573: Remove the unnecessary method Attr#attribTopLevel and its usage
  • dea6e88: 8284680: sun.font.FontConfigManager.getFontConfig() leaks charset
  • ... and 34 more: https://git.openjdk.java.net/jdk/compare/070a0cda31f83a3cf18a612b91c30d66cf407c3c...master

Your commit was automatically rebased without conflicts.

@openjdk openjdk bot added the integrated Pull request has been integrated label May 12, 2022
@openjdk openjdk bot closed this May 12, 2022
@openjdk openjdk bot removed ready Pull request is ready to be integrated rfr Pull request is ready for review labels May 12, 2022
@openjdk
Copy link

openjdk bot commented May 12, 2022

@RogerRiggs Pushed as commit 17c5278.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

// timed poll interrupted so need to adjust timeout
long adjust = System.nanoTime() - startTime;
to -= TimeUnit.MILLISECONDS.convert(adjust, TimeUnit.NANOSECONDS);
to =- (int) TimeUnit.NANOSECONDS.toMillis(adjust);

Choose a reason for hiding this comment

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

This will now always assign a negative number to to.


=- is not a compound assignment, it’s negation followed by a normal assignment.

Copy link
Contributor

Choose a reason for hiding this comment

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

Well spotted, I don't think that change was intentionally.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ouch; Will fix:

I took Alan's earlier comment literally:

"This one can also be changed to:

to =- (int) TimeUnit.NANOSECONDS.toMillis(adjust);"

Choose a reason for hiding this comment

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

@RogerRiggs
This already got fixed by @jaikiran in GH‑8693.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core-libs core-libs-dev@openjdk.org i18n i18n-dev@openjdk.org integrated Pull request has been integrated net net-dev@openjdk.org nio nio-dev@openjdk.org security security-dev@openjdk.org

Development

Successfully merging this pull request may close these issues.

7 participants