aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Mode.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-06-18 10:31:48 +0200
committerMartin Odersky <odersky@gmail.com>2015-06-19 11:35:22 +0200
commit06690117f3b67d947df5ef14cd02a55341b94d1c (patch)
treee3df807760b938a83179cdceda6944cd9196b43c /src/dotty/tools/dotc/typer/Mode.scala
parent05e81c1548be6b350111982d7d166046a1665ff8 (diff)
downloaddotty-06690117f3b67d947df5ef14cd02a55341b94d1c.tar.gz
dotty-06690117f3b67d947df5ef14cd02a55341b94d1c.tar.bz2
dotty-06690117f3b67d947df5ef14cd02a55341b94d1c.zip
Fix stack overflow when testing for shadowing
Shadowing tests could go into an infinite recursion when the found sahdwoing member itself needs an implicit that is resolved and then shadowed again by the same member. A test case is neg/arrayclone-new.scala. This caused a SO before, now gives two errors.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Mode.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Mode.scala5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/typer/Mode.scala b/src/dotty/tools/dotc/typer/Mode.scala
index 8889cf604..e84ef2784 100644
--- a/src/dotty/tools/dotc/typer/Mode.scala
+++ b/src/dotty/tools/dotc/typer/Mode.scala
@@ -68,5 +68,10 @@ object Mode {
*/
val Printing = newMode(10, "Printing")
+ /** We are currently typechecking an ident to determine whether some implicit
+ * is shadowed - don't do any other shadowing tests.
+ */
+ val ImplicitShadowing = newMode(11, "ImplicitShadowing")
+
val PatternOrType = Pattern | Type
}