Skip to content
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

Type reflection only shows public fields and methods #7183

Open
Chriscbr opened this issue Sep 30, 2024 · 0 comments
Open

Type reflection only shows public fields and methods #7183

Chriscbr opened this issue Sep 30, 2024 · 0 comments
Labels
🛠️ compiler Compiler ✨ enhancement New feature or request needs-discussion Further discussion is needed prior to impl

Comments

@Chriscbr
Copy link
Contributor

Use Case

If I try reflecting on a class using the @type intrinsic, only public methods and fields are found:

class Foo {
  pub foo() {}
  bar() {}
}

let t = @type(Foo);
let cls = t.asClass()!;
log(Json.stringify(cls.methods.keys()));
["foo","onLift","onLiftType","toInflight","isConstruct","toString"]

The root reason bar isn't made available is that if a Wing library declares a method or field as private, they're meant to be hidden to consumers, so it would be an leaky abstraction if the private fields could still be uncovered via reflection. Private or hidden fields or classes are meant to be implementation details.

However, this could be overly restrictive if you're reflecting on a class that's within your own package/project. It could be nice if @type(Foo) included information about private fields/methods if the call is made in the same package as Foo, and continued to hide the fields/methods otherwise.

Proposed Solution

No response

Implementation Notes

No response

Component

Compiler

Community Notes

  • Please vote by adding a 👍 reaction to the issue to help us prioritize.
  • If you are interested to work on this issue, please leave a comment.
  • If this issue is labeled needs-discussion, it means the spec has not been finalized yet. Please reach out on the #dev channel in the Wing Discord.
@Chriscbr Chriscbr added ✨ enhancement New feature or request 🛠️ compiler Compiler needs-discussion Further discussion is needed prior to impl labels Sep 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🛠️ compiler Compiler ✨ enhancement New feature or request needs-discussion Further discussion is needed prior to impl
Projects
None yet
Development

No branches or pull requests

1 participant