Skip to content

Case class detection in constructor pattern typer calls NoSymbol.owner #167

Closed
@retronym

Description

@retronym
⚡ scala -Xdev
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_91).
Type in expressions for evaluation. Or try :help.

scala> import reflect.runtime.universe._
import reflect.runtime.universe._

scala> val Literal(_) = Literal(Constant(1))
warning: !!! NoSymbol.owner
scala.reflect.internal.SymbolTable$$anonfun$devWarningDumpStack$1.apply(SymbolTable.scala:76)
  at scala.reflect.internal.SymbolTable$$anonfun$devWarningDumpStack$1.apply(SymbolTable.scala:76)
  at scala.tools.nsc.Global.devWarning(Global.scala:292)
  at scala.tools.nsc.Global.devWarning(Global.scala:288)
  at scala.reflect.internal.Symbols$NoSymbol.owner(Symbols.scala:3554)
  at scala.tools.nsc.typechecker.Namers$class.companionSymbolOf(Namers.scala:1771)
  at scala.tools.nsc.interpreter.ReplGlobal$$anon$1.companionSymbolOf(ReplGlobal.scala:23)
  at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedConstructorPattern(PatternTypers.scala:82)
  at scala.tools.nsc.typechecker.Typers$Typer.typedConstructorPattern(Typers.scala:111)
  at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1113)
  at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1166)
  at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1139)
  at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5410)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
  at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
warning: !!! resetting info of x1: reflect.runtime.universe.Literal @ scala.reflect.runtime.`package`.universe.LiteralTag.unapply(<unapply-selector>) <unapply> (scala.reflect.runtime.`package`.universe.Literal.unapply(<unapply-selector>) <unapply> (_)) to Any

This should be tweaked:

// typedConstructorPattern
val caseClass   = companionSymbolOf(fun.tpe.typeSymbol.sourceModule, context)

Regressed in scala/scala@e07d62c

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions