diff options
author | Martin Odersky <odersky@gmail.com> | 2016-05-06 12:30:55 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-05-23 16:11:45 +0200 |
commit | cd8bf2d69cf1463fa16a69badb2a839f540bb2fa (patch) | |
tree | 4662148486993086b3f488cd5e41cc7219e5ff5b /src/dotty/tools/dotc/core/Definitions.scala | |
parent | 3676baa4b1422f4ee46098aafc1ccd98f176bad4 (diff) | |
download | dotty-cd8bf2d69cf1463fa16a69badb2a839f540bb2fa.tar.gz dotty-cd8bf2d69cf1463fa16a69badb2a839f540bb2fa.tar.bz2 dotty-cd8bf2d69cf1463fa16a69badb2a839f540bb2fa.zip |
Hooks to check that comparisons with == / != make sense
Also, check that pattern matching against idents/selects/literals makes
sense.
The hooks perform an implicit search for an instance of `Eq[L, R]`, where
`L`, `R` are the argument types. So far this always succeeeds because Eq.eqAny
matches all such types. A separate commit will check the returned
search term for validity.
Diffstat (limited to 'src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Definitions.scala | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala index 7f59cbed0..b99d0716b 100644 --- a/src/dotty/tools/dotc/core/Definitions.scala +++ b/src/dotty/tools/dotc/core/Definitions.scala @@ -424,10 +424,17 @@ class Definitions { lazy val LanguageModuleRef = ctx.requiredModule("dotty.language") def LanguageModuleClass(implicit ctx: Context) = LanguageModuleRef.symbol.moduleClass.asClass lazy val NonLocalReturnControlType: TypeRef = ctx.requiredClassRef("scala.runtime.NonLocalReturnControl") + lazy val ClassTagType = ctx.requiredClassRef("scala.reflect.ClassTag") def ClassTagClass(implicit ctx: Context) = ClassTagType.symbol.asClass def ClassTagModule(implicit ctx: Context) = ClassTagClass.companionModule + lazy val EqType = ctx.requiredClassRef("scala.Eq") + def EqClass(implicit ctx: Context) = EqType.symbol.asClass + def EqModule(implicit ctx: Context) = EqClass.companionModule + + def Eq_eqAny(implicit ctx: Context) = EqModule.requiredMethodRef(nme.eqAny) + // Annotation base classes lazy val AnnotationType = ctx.requiredClassRef("scala.annotation.Annotation") def AnnotationClass(implicit ctx: Context) = AnnotationType.symbol.asClass |