Skip to content

Extension method is ignored when non-accessible member of same name is present #7375

Closed
@TomPoczos

Description

@TomPoczos

minimized code

trait Entity[M, T, P]
  
  def (me: M) receive(sender: T)(msg: P)(given Entity[T, M, P]): Unit
  
  def (me: M) name(): String

class GreetingPerson(private val name: String)

object GreetingPerson

  given GreetingPersonEntity: Entity[GreetingPerson, GreetedPerson, String]

    def (me: GreetingPerson) receive(sender: GreetedPerson)(msg: String)(given Entity[GreetedPerson, GreetingPerson, String]): Unit = 
       println(f"Thanks for saying $msg, ${sender.name()}")
 
    def (me: GreetingPerson) name() =
      me.name

class GreetedPerson(private val name: String)

object GreetedPerson

  given GreetedPersonEntity: Entity[GreetedPerson, GreetingPerson, String]

    def (me: GreetedPerson) receive(sender: GreetingPerson)(msg: String)(given Entity[GreetingPerson, GreetedPerson, String]): Unit = 
      println(f"Thanks for saying $msg, ${sender.name()}")
      

    def (me: GreetedPerson) name() = 
      me.name

expectation

The code should compile but it doesn't unless val name is renamed to something else.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions