Skip to content

Commit

Permalink
-Xfundep-materialization => -Yfundep-materialization
Browse files Browse the repository at this point in the history
To quote gkossakowski:

  Thinking about it more, could we hide this behind 'Y' flag instead?
  We have lesser obligation to keep around Y flags and this is something
  we should remove from 2.11/2.12.
  • Loading branch information
xeno-by committed Sep 9, 2014
1 parent 364c8e9 commit 5966a11
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
Expand Up @@ -111,7 +111,6 @@ trait ScalaSettings extends AbsScalaSettings
val XnoPatmatAnalysis = BooleanSetting ("-Xno-patmat-analysis", "Don't perform exhaustivity/unreachability analysis. Also, ignore @switch annotation.")
val XfullLubs = BooleanSetting ("-Xfull-lubs", "Retains pre 2.10 behavior of less aggressive truncation of least upper bounds.")
val Xdivergence211 = BooleanSetting ("-Xdivergence211", "Turn on the 2.11 behavior of implicit divergence not terminating recursive implicit searches (SI-7291).")
val XfundepMaterialization = BooleanSetting("-Xfundep-materialization", "Turn on the 2.11 behavior of macro expansion being able to influence type inference in implicit searches")

/** Compatibility stubs for options whose value name did
* not previously match the option name.
Expand Down Expand Up @@ -180,6 +179,7 @@ trait ScalaSettings extends AbsScalaSettings
val YvirtClasses = false // too embryonic to even expose as a -Y //BooleanSetting ("-Yvirtual-classes", "Support virtual classes")

val exposeEmptyPackage = BooleanSetting("-Yexpose-empty-package", "Internal only: expose the empty package.").internalOnly()
val YfundepMaterialization = BooleanSetting("-Yfundep-materialization", "Turn on the 2.11 behavior of macro expansion being able to influence type inference in implicit searches")

def stop = stopAfter

Expand Down
6 changes: 3 additions & 3 deletions src/compiler/scala/tools/nsc/typechecker/Macros.scala
Expand Up @@ -713,7 +713,7 @@ trait Macros extends scala.tools.reflect.FastTrack with Traces {

var expectedTpe = expandee.tpe
if (isNullaryInvocation(expandee)) expectedTpe = expectedTpe.finalResultType
if (settings.XfundepMaterialization.value) {
if (settings.YfundepMaterialization.value) {
// approximation is necessary for whitebox macros to guide type inference
// read more in the comments for onDelayed below
val undetparams = expectedTpe collect { case tp if tp.typeSymbol.isTypeParameter => tp.typeSymbol }
Expand Down Expand Up @@ -785,7 +785,7 @@ trait Macros extends scala.tools.reflect.FastTrack with Traces {
// but is enabled by default in Scala 2.11.
val shouldInstantiate = typer.context.undetparams.nonEmpty && !inPolyMode(mode)
if (shouldInstantiate) {
if (settings.XfundepMaterialization.value) {
if (settings.YfundepMaterialization.value) {
forced += delayed
typer.infer.inferExprInstance(delayed, typer.context.extractUndetparams(), pt, keepNothings = false)
macroExpand(typer, delayed, mode, pt)
Expand Down Expand Up @@ -912,7 +912,7 @@ trait Macros extends scala.tools.reflect.FastTrack with Traces {
private val delayed = perRunCaches.newWeakMap[Tree, scala.collection.mutable.Set[Int]]
private def isDelayed(expandee: Tree) = delayed contains expandee
private def calculateUndetparams(expandee: Tree): scala.collection.mutable.Set[Int] =
// !settings.XfundepMaterialization.value implies forced.isEmpty
// !settings.YfundepMaterialization.value implies forced.isEmpty
if (forced(expandee)) scala.collection.mutable.Set[Int]()
else delayed.getOrElse(expandee, {
val calculated = scala.collection.mutable.Set[Symbol]()
Expand Down
2 changes: 1 addition & 1 deletion test/files/run/t5923a-fundep.flags
@@ -1 +1 @@
-Xfundep-materialization
-Yfundep-materialization
2 changes: 1 addition & 1 deletion test/files/run/t5923c.flags
@@ -1 +1 @@
-Xfundep-materialization
-Yfundep-materialization

0 comments on commit 5966a11

Please sign in to comment.