-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Enforce runtime-dispatch with atsign-invoke #35901
Conversation
!=(x, y) = !(x == y) | ||
``` | ||
|
||
and the compiler automatically specializes this for `x == y` returning either `Bool` or `Missing`: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, this lovely type: Base.var"#64#65"{_A} where _A
?
This is a tool to prevent invalidations due to partial specialization.
0b40711
to
27a09df
Compare
Can you discuss the differences to
|
I think we can do more automatically before encouraging a manual solution like this. If splitting certain call sites is a bad idea, we should just not do it (PR upcoming). From a programmer's perspective, I think it's quite hard to know where to use |
Would be awesome not to need this. I look forward to the PR.
Main one is that this respects the world bounds. |
Seems that this is (ab)using the fact that |
BTW, there are parts of this that may be useful, like |
Not a lot of reason to keep this open, so closing. |
This is a tool to prevent invalidations due to partial specialization. For example,
or, if you want to "manually union-split" known cases,
This only affects cases where the types of
x
andy
cannot be concretely inferred.