Skip to content

Conversation

lahodaj
Copy link
Contributor

@lahodaj lahodaj commented Aug 6, 2025

I tried to handle Throwable values inside switch selectors sensibly:

  • for switch statements, any binding that comes out of the cases will be checked for potential uses
  • for switch expressions, is addition to considering any binding as a use, the result of the expression is also considered a use.

Required some adjustments to Flow.

closes #4260


^Add meaningful description above

Click to collapse/expand PR instructions

By opening a pull request you confirm that, unless explicitly stated otherwise, the changes -

  • are all your own work, and you have the right to contribute them.
  • are contributed solely under the terms and conditions of the Apache License 2.0 (see section 5 of the license for more information).

Please make sure (eg. git log) that all commits have a valid name and email address for you in the Author field.

If you're a first time contributor, see the Contributing guidelines for more information.

If you're a committer, please label the PR before pressing "Create pull request" so that the right test jobs can run.

PR approval and merge checklist:

  1. Was this PR correctly labeled, did the right tests run? When did they run?
  2. Is this PR squashed?
  3. Are author name / email address correct? Are co-authors correctly listed? Do the commit messages need updates?
  4. Does the PR title and description still fit after the Nth iteration? Is the description sufficient to appear in the release notes?

If this PR targets the delivery branch: don't merge. (full wiki article)

@lahodaj lahodaj added this to the NB28 milestone Aug 6, 2025
@lahodaj lahodaj requested a review from sdedic August 6, 2025 14:45
@lahodaj lahodaj added the Java [ci] enable extra Java tests (java.completion, java.source.base, java.hints, refactoring.java, form) label Aug 6, 2025
Copy link
Member

@mbien mbien 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 as far as I can tell. Added two nitpicks while going through it.

Comment on lines +117 to +118
public static final Set<ElementKind> LOCAL_VARIABLES = Set.of(ElementKind.BINDING_VARIABLE, ElementKind.EXCEPTION_PARAMETER, ElementKind.LOCAL_VARIABLE, ElementKind.PARAMETER, ElementKind.RESOURCE_VARIABLE);
private static final Set<ElementKind> IMPLICITLY_INITIALIZED_VARIABLES = Set.of(ElementKind.BINDING_VARIABLE, ElementKind.EXCEPTION_PARAMETER, ElementKind.PARAMETER);
Copy link
Member

Choose a reason for hiding this comment

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

nitpick: since this got moved; maybe add some line breaks for mortals without panoramic screens ;)

return varAssignments.isEmpty() ? Boolean.FALSE : null;
}

private void handleCases(List<? extends CaseTree> cases) {
Copy link
Member

Choose a reason for hiding this comment

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

nitpick: collectVarAssignments potentially a more descriptive name?

@mbien mbien added the hints label Sep 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hints Java [ci] enable extra Java tests (java.completion, java.source.base, java.hints, refactoring.java, form)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Throwable values used as switch argument are considered unused
2 participants