diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2016-03-25 18:41:48 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2016-03-26 22:55:19 -0700 |
commit | a17d247a8acea2daaddb39263ebf1dcf5673bcba (patch) | |
tree | a67078f7cef0cc5ab410711df0f06aa2a1c0523d /src/reflect | |
parent | 925b394dbf2fc8f9a0a6f64e374dc6ab5564ab37 (diff) | |
download | scala-a17d247a8acea2daaddb39263ebf1dcf5673bcba.tar.gz scala-a17d247a8acea2daaddb39263ebf1dcf5673bcba.tar.bz2 scala-a17d247a8acea2daaddb39263ebf1dcf5673bcba.zip |
SAM conversion can be disabled using `-Xsource:2.11`
For completeness, `-Xsource:2.11 -Xexperimental` does enable it.
Diffstat (limited to 'src/reflect')
3 files changed, 5 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala index 28f6afee39..72c56def80 100644 --- a/src/reflect/scala/reflect/internal/Definitions.scala +++ b/src/reflect/scala/reflect/internal/Definitions.scala @@ -829,13 +829,15 @@ trait Definitions extends api.StandardDefinitions { (sym eq PartialFunctionClass) || (sym eq AbstractPartialFunctionClass) } + private[this] val doSam = settings.isScala212 || (settings.isScala211 && settings.Xexperimental) + /** The single abstract method declared by type `tp` (or `NoSymbol` if it cannot be found). * * The method must be monomorphic and have exactly one parameter list. * The class defining the method is a supertype of `tp` that * has a public no-arg primary constructor. */ - def samOf(tp: Type): Symbol = { + def samOf(tp: Type): Symbol = if (!doSam) NoSymbol else { // look at erased type because we (only) care about what ends up in bytecode // (e.g., an alias type or intersection type is fine as long as the intersection dominator compiles to an interface) val tpSym = erasure.javaErasure(tp).typeSymbol diff --git a/src/reflect/scala/reflect/internal/settings/MutableSettings.scala b/src/reflect/scala/reflect/internal/settings/MutableSettings.scala index 38893d8db3..e75b3dff3d 100644 --- a/src/reflect/scala/reflect/internal/settings/MutableSettings.scala +++ b/src/reflect/scala/reflect/internal/settings/MutableSettings.scala @@ -58,6 +58,7 @@ abstract class MutableSettings extends AbsSettings { def maxClassfileName: IntSetting def isScala211: Boolean + def isScala212: Boolean } object MutableSettings { diff --git a/src/reflect/scala/reflect/runtime/Settings.scala b/src/reflect/scala/reflect/runtime/Settings.scala index 27d574b1de..b1d7fde1b4 100644 --- a/src/reflect/scala/reflect/runtime/Settings.scala +++ b/src/reflect/scala/reflect/runtime/Settings.scala @@ -51,4 +51,5 @@ private[reflect] class Settings extends MutableSettings { val Yrecursion = new IntSetting(0) val maxClassfileName = new IntSetting(255) def isScala211 = true + def isScala212 = true } |