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

package:collection's classes are missing "Implemented types" #3850

Open
srawlins opened this issue Aug 27, 2024 · 2 comments
Open

package:collection's classes are missing "Implemented types" #3850

srawlins opened this issue Aug 27, 2024 · 2 comments
Assignees
Labels
P3 A lower priority bug or feature request type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)

Comments

@srawlins
Copy link
Member

srawlins commented Aug 27, 2024

See DelegatingIterable, which indirectly implements Iterable:

class DelegatingIterable<E> extends _DelegatingIterableBase<E> { ... }
abstract class _DelegatingIterableBase<E> implements Iterable<E> { ... }

vs DelegatingList, which directly implements List:

class DelegatingList<E> extends _DelegatingIterableBase<E> implements List<E> { ... }
abstract class _DelegatingIterableBase<E> implements Iterable<E> { ... }

It should be displayed that DelegatingIterable implements Iterable, even though it is indirect.

@srawlins srawlins added type-bug Incorrect behavior (everything from a crash to more subtle misbehavior) P3 A lower priority bug or feature request labels Aug 27, 2024
@srawlins srawlins self-assigned this Aug 28, 2024
@srawlins
Copy link
Member Author

@kevmoo if you have a minute, I'd love your opinion.

The issue is that DelegatingIterable extends (not implements) _DelegatingIterableBase, which then implements Iterable. I really think this is 100% beside any point; it's an implementation detail. From the consumer's perspective, DelegatingIterable implements Iterable, and we should document it as such.

@kevmoo
Copy link
Member

kevmoo commented Aug 28, 2024

Great question, @srawlins

My gut here: there should always be a path to all implemented interfaces. But I think it's fine if the route is indirect.

Might be worth seeing what other platforms do: C#, Java, etc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P3 A lower priority bug or feature request type-bug Incorrect behavior (everything from a crash to more subtle misbehavior)
Projects
None yet
Development

No branches or pull requests

2 participants