[ 
https://issues.apache.org/jira/browse/SPARK-4165?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shiti Saxena updated SPARK-4165:
--------------------------------
    Description: 
Tried the following in the master branch REPL.

{noformat}
Spark context available as sc.

scala> import akka.actor.{Actor,Props}
import akka.actor.{Actor, Props}

scala> :pas
// Entering paste mode (ctrl-D to finish)

class EchoActor extends Actor{
 override def receive = {
case message => sender ! message
}
}
object EchoActor {
  def props: Props = Props(new EchoActor())
}

// Exiting paste mode, now interpreting.

defined class EchoActor
defined module EchoActor

scala> EchoActor.props
<console>:15: error: reference to EchoActor is ambiguous;
it is imported twice in the same scope by
import $VAL1.EchoActor
and import INSTANCE.EchoActor
              EchoActor.props
{noformat}

Using a companion Object works when the apply method is not overloaded.
{noformat}
scala> :pas
// Entering paste mode (ctrl-D to finish)

case class TestA(w:String)
object TestA{
 def print = { println("hello")}
}

// Exiting paste mode, now interpreting.

defined class TestA
defined module TestA

scala> TestA.print
hello

{noformat}


When the apply method is overloaded, it throws ambiguous reference error
{noformat}
scala> :pas
// Entering paste mode (ctrl-D to finish)

case class T1(s:String,len:Int)
object T1{
 def apply(s:String):T1 = T1(s,s.size)
}

// Exiting paste mode, now interpreting.

defined class T1
defined module T1

scala> T1("abcd")
<console>:15: error: reference to T1 is ambiguous;
it is imported twice in the same scope by
import $VAL17.T1
and import INSTANCE.T1
              T1("abcd")
              ^

scala> T1("abcd",4)
<console>:15: error: reference to T1 is ambiguous;
it is imported twice in the same scope by
import $VAL18.T1
and import INSTANCE.T1
              T1("abcd",4)
{noformat}

  was:
Tried the following in the master branch REPL.

{noformat}
Spark context available as sc.

scala> import akka.actor.{Actor,Props}
import akka.actor.{Actor, Props}

scala> :pas
// Entering paste mode (ctrl-D to finish)

class EchoActor extends Actor{
 override def receive = {
case message => sender ! message
}
}
object EchoActor {
  def props: Props = Props(new EchoActor())
}

// Exiting paste mode, now interpreting.

defined class EchoActor
defined module EchoActor

scala> EchoActor.props
<console>:15: error: reference to EchoActor is ambiguous;
it is imported twice in the same scope by
import $VAL1.EchoActor
and import INSTANCE.EchoActor
              EchoActor.props
{noformat}

The following code works,
{noformat}
case class TestA
object TestA{
 def print = { println("hello")}
}
{noformat}


> Using Companion Objects throws ambiguous reference error in REPL when an 
> instance of Class is initialized
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-4165
>                 URL: https://issues.apache.org/jira/browse/SPARK-4165
>             Project: Spark
>          Issue Type: Bug
>          Components: Spark Shell
>    Affects Versions: 1.0.1, 1.1.0
>            Reporter: Shiti Saxena
>            Assignee: Prashant Sharma
>
> Tried the following in the master branch REPL.
> {noformat}
> Spark context available as sc.
> scala> import akka.actor.{Actor,Props}
> import akka.actor.{Actor, Props}
> scala> :pas
> // Entering paste mode (ctrl-D to finish)
> class EchoActor extends Actor{
>  override def receive = {
> case message => sender ! message
> }
> }
> object EchoActor {
>   def props: Props = Props(new EchoActor())
> }
> // Exiting paste mode, now interpreting.
> defined class EchoActor
> defined module EchoActor
> scala> EchoActor.props
> <console>:15: error: reference to EchoActor is ambiguous;
> it is imported twice in the same scope by
> import $VAL1.EchoActor
> and import INSTANCE.EchoActor
>               EchoActor.props
> {noformat}
> Using a companion Object works when the apply method is not overloaded.
> {noformat}
> scala> :pas
> // Entering paste mode (ctrl-D to finish)
> case class TestA(w:String)
> object TestA{
>  def print = { println("hello")}
> }
> // Exiting paste mode, now interpreting.
> defined class TestA
> defined module TestA
> scala> TestA.print
> hello
> {noformat}
> When the apply method is overloaded, it throws ambiguous reference error
> {noformat}
> scala> :pas
> // Entering paste mode (ctrl-D to finish)
> case class T1(s:String,len:Int)
> object T1{
>  def apply(s:String):T1 = T1(s,s.size)
> }
> // Exiting paste mode, now interpreting.
> defined class T1
> defined module T1
> scala> T1("abcd")
> <console>:15: error: reference to T1 is ambiguous;
> it is imported twice in the same scope by
> import $VAL17.T1
> and import INSTANCE.T1
>               T1("abcd")
>               ^
> scala> T1("abcd",4)
> <console>:15: error: reference to T1 is ambiguous;
> it is imported twice in the same scope by
> import $VAL18.T1
> and import INSTANCE.T1
>               T1("abcd",4)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to