diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2016-10-07 09:40:52 +1100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2016-10-07 09:44:04 +1100 |
commit | 751e6275ca454cf55dc48a1f5a9b711c546614d0 (patch) | |
tree | 60b42d2740a463756152ade3c43f9aa4d0df6996 /src/reflect/scala/reflect | |
parent | 823b2d9b130296576d91a86a45e7f6c7d7d94b48 (diff) | |
download | scala-751e6275ca454cf55dc48a1f5a9b711c546614d0.tar.gz scala-751e6275ca454cf55dc48a1f5a9b711c546614d0.tar.bz2 scala-751e6275ca454cf55dc48a1f5a9b711c546614d0.zip |
Avoid tripping cyclic errors under -Ytyper-debug
Manually tested with:
```
% cat sandbox/test.scala
package p {
object X { def f(i: Int) = ??? ; def f(s: String) = ??? }
object Main {
val res = X.f(3.14)
}
}
% qscalac -Ytyper-debug sandbox/test.scala
|-- p EXPRmode-POLYmode-QUALmode (site: package <root>)
| \-> p.type
|-- object X BYVALmode-EXPRmode (site: package p)
| |-- super EXPRmode-POLYmode-QUALmode (silent: <init> in X)
| | |-- this EXPRmode (silent: <init> in X)
| | | \-> p.X.type
| | \-> p.X.type
| |-- def f BYVALmode-EXPRmode (site: object X)
| | |-- $qmark$qmark$qmark EXPRmode (site: method f in X)
| | | \-> Nothing
| | |-- Int TYPEmode (site: value i in X)
| | | \-> Int
| | |-- Int TYPEmode (site: value i in X)
| | | \-> Int
| | \-> [def f] (i: Int)Nothing
| |-- def f BYVALmode-EXPRmode (site: object X)
| | |-- $qmark$qmark$qmark EXPRmode (site: method f in X)
| | | \-> Nothing
| | |-- String TYPEmode (site: value s in X)
| | | [adapt] String is now a TypeTree(String)
| | | \-> String
| | |-- String TYPEmode (site: value s in X)
| | | [adapt] String is now a TypeTree(String)
| | | \-> String
| | \-> [def f] (s: String)Nothing
| \-> [object X] p.X.type
|-- object Main BYVALmode-EXPRmode (site: package p)
| |-- X.f(3.14) EXPRmode (site: value res in Main)
| | |-- X.f BYVALmode-EXPRmode-FUNmode-POLYmode (silent: value res in Main)
| | | |-- X EXPRmode-POLYmode-QUALmode (silent: value res in Main)
| | | | \-> p.X.type
| | | \-> (s: String)Nothing <and> (i: Int)Nothing
| | |-- 3.14 BYVALmode-EXPRmode (silent: value res in Main)
| | | \-> Double(3.14)
| | [search #1] start `<?>`, searching for adaptation to pt=Double => String (silent: value res in Main) implicits disabled
| | [search #2] start `<?>`, searching for adaptation to pt=(=> Double) => String (silent: value res in Main) implicits disabled
| | [search #3] start `<?>`, searching for adaptation to pt=Double => Int (silent: value res in Main) implicits disabled
| | 1 implicits in companion scope
| | [search #4] start `<?>`, searching for adaptation to pt=(=> Double) => Int (silent: value res in Main) implicits disabled
| | 1 implicits in companion scope
| | second try: <error> and 3.14
| | [search #5] start `p.X.type`, searching for adaptation to pt=p.X.type => ?{def f(x$1: ? >: Double(3.14)): ?} (silent: value res in Main) implicits disabled
| | [search #6] start `p.X.type`, searching for adaptation to pt=(=> p.X.type) => ?{def f(x$1: ? >: Double(3.14)): ?} (silent: value res in Main) implicits disabled
sandbox/test.scala:4: error: overloaded method value f with alternatives:
(s: String)Nothing <and>
(i: Int)Nothing
cannot be applied to (Double)
val res = X.f(3.14)
^
```
Diffstat (limited to 'src/reflect/scala/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/TypeDebugging.scala | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/TypeDebugging.scala b/src/reflect/scala/reflect/internal/TypeDebugging.scala index 63f897cd32..4a5128feeb 100644 --- a/src/reflect/scala/reflect/internal/TypeDebugging.scala +++ b/src/reflect/scala/reflect/internal/TypeDebugging.scala @@ -110,7 +110,7 @@ trait TypeDebugging { val hi_s = if (noPrint(hi)) "" else " <: " + ptTree(hi) lo_s + hi_s case _ if (t.symbol eq null) || (t.symbol eq NoSymbol) => to_s(t) - case _ => "" + t.symbol.tpe + case _ => if (t.symbol.hasCompleteInfo) "" + t.symbol.tpe else "<?>" } def ptTypeParam(td: TypeDef): String = { val TypeDef(_, name, tparams, rhs) = td |