aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/printing
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-01-30 17:51:53 +1100
committerMartin Odersky <odersky@gmail.com>2017-02-08 19:35:58 +1100
commit269be04ce9f42d57dbc9ceb24afbae1b615e64e4 (patch)
tree6050fe8fabcbd60dbbaa8ddbfbcbc8fed67ac521 /compiler/src/dotty/tools/dotc/printing
parent4086195fe188804ce5a052d7b3c2aee099c425d1 (diff)
downloaddotty-269be04ce9f42d57dbc9ceb24afbae1b615e64e4.tar.gz
dotty-269be04ce9f42d57dbc9ceb24afbae1b615e64e4.tar.bz2
dotty-269be04ce9f42d57dbc9ceb24afbae1b615e64e4.zip
Implement SearchResult.show
Diffstat (limited to 'compiler/src/dotty/tools/dotc/printing')
-rw-r--r--compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala18
-rw-r--r--compiler/src/dotty/tools/dotc/printing/Printer.scala6
2 files changed, 23 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala b/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala
index 61f23c214..ac25f7cfd 100644
--- a/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala
+++ b/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala
@@ -6,6 +6,7 @@ import Texts._, Types._, Flags._, Names._, Symbols._, NameOps._, Constants._, De
import Contexts.Context, Scopes.Scope, Denotations.Denotation, Annotations.Annotation
import StdNames.{nme, tpnme}
import ast.Trees._, ast._
+import typer.Implicits._
import config.Config
import java.lang.Integer.toOctalString
import config.Config.summarizeDepth
@@ -484,6 +485,23 @@ class PlainPrinter(_ctx: Context) extends Printer {
}
}.close // todo: override in refined printer
+ def toText(result: SearchResult): Text = result match {
+ case result: SearchSuccess =>
+ "SearchSuccess: " ~ toText(result.ref) ~ " via " ~ toText(result.tree)
+ case result: NonMatchingImplicit =>
+ "NoImplicitMatches"
+ case result: DivergingImplicit =>
+ "Diverging Implicit"
+ case result: ShadowedImplicit =>
+ "Shadowed Implicit"
+ case result: FailedImplicit =>
+ "Failed Implicit"
+ case result: AmbiguousImplicits =>
+ "Ambiguous Implicit: " ~ toText(result.alt1) ~ " and " ~ toText(result.alt2)
+ case _ =>
+ "?Unknown Implicit Result?"
+ }
+
private var maxSummarized = Int.MaxValue
def summarized[T](depth: Int)(op: => T): T = {
diff --git a/compiler/src/dotty/tools/dotc/printing/Printer.scala b/compiler/src/dotty/tools/dotc/printing/Printer.scala
index 14b63012e..506773a4b 100644
--- a/compiler/src/dotty/tools/dotc/printing/Printer.scala
+++ b/compiler/src/dotty/tools/dotc/printing/Printer.scala
@@ -5,6 +5,7 @@ import core._
import Texts._, ast.Trees._
import Types.Type, Symbols.Symbol, Contexts.Context, Scopes.Scope, Constants.Constant,
Names.Name, Denotations._, Annotations.Annotation
+import typer.Implicits.SearchResult
/** The base class of all printers
*/
@@ -94,7 +95,10 @@ abstract class Printer {
/** Textual representation of tree */
def toText[T >: Untyped](tree: Tree[T]): Text
- /** Perform string or text-producing operation `op` so that only a
+ /** Textual representation of implicit search result */
+ def toText(result: SearchResult): Text
+
+ /** Perform string or text-producing operation `op` so that only a
* summarized text with given recursion depth is shown
*/
def summarized[T](depth: Int)(op: => T): T