diff options
author | Martin Odersky <odersky@gmail.com> | 2017-03-08 11:35:05 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-03-08 17:50:20 +0100 |
commit | f07697b25294eaafb1c86698c44a699ec1c0d1ba (patch) | |
tree | 5a08ac595fc61bfa467ce987728bee6d51839306 /compiler/src/dotty/tools/dotc/core/Definitions.scala | |
parent | c84480960cf618c29705dbaab9332d304a081524 (diff) | |
download | dotty-f07697b25294eaafb1c86698c44a699ec1c0d1ba.tar.gz dotty-f07697b25294eaafb1c86698c44a699ec1c0d1ba.tar.bz2 dotty-f07697b25294eaafb1c86698c44a699ec1c0d1ba.zip |
Disallow subtypes of Function1 acting as implicit conversions
The new test `falseView.scala` shows the problem. We might create
an implicit value of some type that happens to be a subtype of Function1.
We might now expect that this gives us an implicit conversion, this
is most often unintended and surprising.
See the comment in Implicits#discardForView for a discussion why
we picked the particular scheme implemented here.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/core/Definitions.scala | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index 3cab75f93..fcbb2f974 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -299,6 +299,8 @@ class Definitions { lazy val ScalaPredefModuleRef = ctx.requiredModuleRef("scala.Predef") def ScalaPredefModule(implicit ctx: Context) = ScalaPredefModuleRef.symbol + lazy val Predef_ConformsR = ScalaPredefModule.requiredClass("$less$colon$less").typeRef + def Predef_Conforms(implicit ctx: Context) = Predef_ConformsR.symbol lazy val Predef_conformsR = ScalaPredefModule.requiredMethodRef("$conforms") def Predef_conforms(implicit ctx: Context) = Predef_conformsR.symbol lazy val Predef_classOfR = ScalaPredefModule.requiredMethodRef("classOf") |