Description
Our current mechanism for finding and adding implicit members in scala3doc adds implicit members from:
- outer members
- companion
- parent companions
Implicit members are added from: - implicit conversions: When we've got implicit/given which converts A -> B then we add to A all methods defined in B
- extension methods: When we process class A and find extension on A then we add this extension as method to A
It works quite good but still there is place for improvements.
There is one disadvantage of our mechanism: finding implicit members is poorly supported in TASTY, so we need to work on our member model. Due to that, we cannot search for implicit members inside members that we don't document.
Reimplementing this mechanism using TASTY would also allow to search full scope of member instead of hard-code specific cases.
We can discuss if it's possible and desirable to implement better support in TASTY, that would allow to resolve all available methods for member in it's default scope (without imports).
Also we still need to implement adding conditional implicitly added members e.g. for
extension[T >: A] (list: List[T]) def bar: String = ???
we should add this member to List and add information that it's available only if T >: A