Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork669
feat: support 'this' type on methods and properties#2906
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Conversation
FYI, I considered trying to bind the prototype instance to the derived type, but I couldn't quite get that way to work. So instead, I resolve the current "this" to use as the class instance instead. It works, but let me know if there's a better way to approach this. Thanks. |
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.
Could we create an override method for inheritance class
e.g.
forclass A extends B
, B has methodfoo
returnthis
, we resolve it as returnB
. A will generate override methodfoo
returnA
.
Then resolve function should resolve to correct function.
Uh oh!
There was an error while loading.Please reload this page.
I explored this a bit. It would have side effects, even without using the For example, given: classX{privatefoo:i32=0;doSomething():void{this.foo=1;}}classYextendsX{} ... we can't just transform it to this: classX{privatefoo:i32=0;doSomething():void{this.foo=1;}}classYextendsX{doSomething():void{this.foo=1;}} ... because field Theresolver implementationdoes effectively create an alias of the member, but in doing so it uses the original prototype, bound to the base instance. It doesn't create an actual override. |
This PR has been automatically marked as stale because it has not had recent activity. It will be closed in one week if no further activity occurs. Thank you for your contributions! |
snydergd commentedApr 12, 2025
@HerrCai0907 does@mattjohnsonpint make sense in their explanation? Is there anything else to consider? I think it would be great to get support for this feature. |
This PR has been automatically marked as stale because it has not had recent activity. It will be closed in one week if no further activity occurs. Thank you for your contributions! |
snydergd commentedJun 13, 2025
I am wondering if there are still any outstanding concerns with this or if it could be merged. |
// Note: It should work without this outer type check, and does when testing, but fails the "bootstrap" build. | ||
// TODO: Figure out why and remove the extra check. |
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.
Could you analyze more detail about bootstrap? What is the meaning of "outer type check"?
Uh oh!
There was an error while loading.Please reload this page.
Fixes#2904
Changes proposed in this pull request:
this
type on class methods and propertiesthis
type (would be nice, but is complicated)To clarify, the
this
type wasalready implemented, but was returning the base type instead of the calling instance type.