Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

failed to report type argument that does not satisfy upper bound #6868

Open
theosotr opened this issue Oct 18, 2024 · 0 comments
Open

failed to report type argument that does not satisfy upper bound #6868

theosotr opened this issue Oct 18, 2024 · 0 comments

Comments

@theosotr
Copy link

Command

javac -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
  -J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
  -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
  -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \
  -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED \
  -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED \
  -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
  -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \
  -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED \
-processor org.checkerframework.checker.nullness.NullnessChecker \
-cp ~/projects/checker-framework/checker/dist/checker.jar -Aignorejdkastub Test.java

File

import org.checkerframework.checker.nullness.qual.*;


class A<T extends Number> {}

public class Test {
  public static <T> T bottom() { throw new RuntimeException(); }

  public static A<? extends Number> test() {
      return (true) ?
           Test.<A<@Nullable Number>>bottom() : 
           Test.<A<@Nullable Number>>bottom(); 
      
  }
}

Actual behavior

The code passes the checks although @Nullable Integer is not a valid subtype of T extends Number.

I attempted to create a reproducible test case that triggers a NullPointerException due to this mismatch, but I was unable to do so. This suggests that, in practice, the issue might not cause immediate problems.

However, I decided to report this issue in case the underlying root cause could manifest itself through different symptoms in other scenarios.

Expected behavior

The code should have been rejected as @Nullable Integer is not a valid subtype of T extends Number.

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

No branches or pull requests

2 participants