dmd
dmd copied to clipboard
Fix Bugzilla 14128 - AliasDeclaration allows expressions, causing false …
…code for ThisExp
Deprecate aliasing a field of a variable.
Thanks for your pull request and interest in making D better, @ntrel! We are looking forward to reviewing it, and you should be hearing from a maintainer soon. Please verify that your PR follows this checklist:
- My PR is fully covered with tests (you can see the coverage diff by visiting the details link of the codecov check)
- My PR is as minimal as possible (smaller, focused PRs are easier to review than big ones)
- I have provided a detailed rationale explaining my changes
- New or modified functions have Ddoc comments (with
Params:
andReturns:
)
Please see CONTRIBUTING.md for more information.
If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment.
Bugzilla references
Your PR doesn't reference any Bugzilla issue.
If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog.
⚠️⚠️⚠️ Warnings ⚠️⚠️⚠️
- In preparation for migrating from Bugzilla to GitHub Issues, the issue reference syntax has changed. Please add the word "Bugzilla" to issue references. For example,
Fix Bugzilla Issue 12345
orFix Bugzilla 12345
.(Reminder: the edit needs to be done in the Git commit message, not the GitHub pull request.)
Testing this PR locally
If you don't have a local development environment setup, you can use Digger to test this PR:
dub run digger -- build "master + dmd#15863"
ping @ntrel
Do we also want to deprecate binding var.member
to a template alias
parameter, since it has the same behavior?
https://issues.dlang.org/show_bug.cgi?id=14128
We weren't going to add deprecations anymore, because we don't want to break existing code. I suggest making this an error, but put it behind a -preview switch. In the future, we can roll it into the "editions" feature.
@WalterBright OK. I wanted to make it an obsolete feature instead of deprecated, but then -wo
got neutered (https://github.com/dlang/dmd/pull/15612). I don't understand why that was done. So do we need a separate preview switch for each obsolete feature?
Until we get editions, yes, I don't see a better way.
I think generally people would not really opt-in to a preview switch which only detects this. Given that we no longer have a switch to detect all obsoleted/bug-prone code, I think this should wait until we have editions. Is there a github label for PRs that need editions? Perhaps that could be added to this one.
Let's wait and see what the editions is going to be.
Updated to use __edition_latest_do_not_use
instead of deprecation. See also comment about changelog.