Skip to content

Implicit members adding improvements #11105

Open
@pikinier20

Description

@pikinier20

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions