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 12345orFix 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.