aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Implicits.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/typer/Implicits.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Implicits.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/typer/Implicits.scala b/src/dotty/tools/dotc/typer/Implicits.scala
new file mode 100644
index 000000000..f3a9ff0cf
--- /dev/null
+++ b/src/dotty/tools/dotc/typer/Implicits.scala
@@ -0,0 +1,38 @@
+package dotty.tools
+package dotc
+package typer
+
+import core._
+import ast.{Trees, untpd, tpd, TreeInfo}
+import util.Positions._
+import Contexts._
+import Types._
+import Flags._
+import Denotations._
+import NameOps._
+import Symbols._
+import Types._
+import Decorators._
+import Names._
+import StdNames._
+import Constants._
+import Inferencing._
+import collection.mutable
+
+trait Implicits { self: Typer =>
+
+ import tpd._
+
+ def viewExists(from: Type, to: Type)(implicit ctx: Context): Boolean = (
+ !from.isError
+ && !to.isError
+ && ctx.implicitsEnabled
+ && inferView(EmptyTree, from, to, reportAmbiguous = false) != EmptyTree
+ )
+
+ def inferView(tree: Tree, from: Type, to: Type, reportAmbiguous: Boolean)(implicit ctx: Context): Tree =
+ inferImplicit(tree, defn.FunctionType(from :: Nil, to), isView = true, reportAmbiguous)
+
+ def inferImplicit(tree: Tree, pt: Type, isView: Boolean, reportAmbiguous: Boolean)(implicit ctx: Context): Tree = ???
+
+} \ No newline at end of file