-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
-Yexplicit-nulls exhibits false negative when combining try/match #21619
Labels
Comments
theosotr
added
itype:bug
stat:needs triage
Every issue needs to have an "area" and "itype" label
labels
Sep 20, 2024
We should make cc @olhotak |
Gedochao
removed
the
stat:needs triage
Every issue needs to have an "area" and "itype" label
label
Sep 20, 2024
Here's another case that produces NPE without using try/catch. @main def foo() = {
var x: String | Null = ""
var y: String = ""
x = ""
y = if (false) x else 1 match {
case _ => {
x = null
y
}
}
x.replace("", "")
}
|
noti0na1
added a commit
that referenced
this issue
Dec 10, 2024
…etracted once. (#21624) This PR improves the flow typing for returning and exceptions. The `NotNullInfo` is defined as following now: ```scala case class NotNullInfo(asserted: Set[TermRef] | Null, retracted: Set[TermRef]): ``` * `retracted` contains variable references that are ever assigned to null; * if `asserted` is not `null`, it contains `val` or `var` references that are known to be not null, after the tree finishes executing normally (non-exceptionally); * if `asserted` is `null`, the tree is know to terminate, by throwing, returning, or calling a function with `Nothing` type. Hence, it acts like a universal set. `alt` is defined as `<a1,r1>.alt(<a2,r2>) = <a1 intersect a2, r1 union r2>`. The difficult part is the `try ... catch ... finally ...`. We don't know at which point an exception is thrown in the body, and the catch cases may be not exhaustive, we have to collect any reference that is once retracted. Fix #21619
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Compiler version
3.6.0-RC1-bin-SNAPSHOT-git-e9d4831
Minimized code
Related to #21380
Output
Compiling the program with
-Yexplicit-nulls
results in the following error at runtimeExpectation
The program should have been rejected.
The text was updated successfully, but these errors were encountered: