-
Notifications
You must be signed in to change notification settings - Fork 294
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
NullAway complaining about returning null for a return type of CompletableFuture<Void> #801
Comments
Sorry, I can't understand what error you are seeing. Can you point out the exact location where the error is reported and what the error message is? And also can you fix the formatting of your example code? Thanks! |
I also run into this issue, it seems that the Void return objective used with Generics is not detected correctly in every case. I wrote a simple example code showing the issue: package org.betonquest.betonquest;
public class Test {
public TestInterface<Void> getTest() {
return () -> {
return null;
};
}
@FunctionalInterface
interface TestInterface<T> {
T test();
}
} NullAway reports:
|
Thanks for the repro case, @Wolf2323, I see this behavior as well. Unfortunately fixing this issue will require better support for generics / JSpecify; I don't we can easily fix it otherwise. I added a test case in #990 that shows how this code can be type checked in JSpecify mode. This mode is still a work in progress and not ready for production I think, but you are free to try it on your code base by adding the option Note that in JSpecify mode you need to write I'll leave this issue open so I can comment back once we think JSpecify mode is ready for broader testing, at which point we can close it. |
sounds good in general. We use jetbrains annotations, when i understand correctly |
Yeah, the JSpecify support will not work with the Jetbrains annotations right now. Once it's in better shape I can comment back and we can see if it's feasible for you all to switch over. |
Linter complaining about null when contract of method is @nonnull. However, the null is converted from CompletableFuture -> CompletableFuture
We might need to fix the edge case for the linter. In general I think, NullAway for the special case of T is unable to handle it.
The text was updated successfully, but these errors were encountered: