summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Symbols.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-09-10 09:40:03 -0700
committerPaul Phillips <paulp@improving.org>2012-10-09 14:17:34 -0700
commit432f9368011e0fd9e89ca0e18082bfec180baf32 (patch)
tree155dfa5932b5049ba80063c5a7758cf9c0305f0c /src/reflect/scala/reflect/internal/Symbols.scala
parentc61c18e042d0fa41a09fea29a8dcaa2e08a40a63 (diff)
downloadscala-432f9368011e0fd9e89ca0e18082bfec180baf32.tar.gz
scala-432f9368011e0fd9e89ca0e18082bfec180baf32.tar.bz2
scala-432f9368011e0fd9e89ca0e18082bfec180baf32.zip
Experimental option -Ybreak-cycles.
Overcomes cycles encountered during classfile parsing in possibly sketchy fashion. "illegal cyclic reference involving class Foo" is the watchword. See SI-3809.
Diffstat (limited to 'src/reflect/scala/reflect/internal/Symbols.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index f9f1ea3936..d506a43829 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -1398,6 +1398,10 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
if (!isInitialized) info
this
}
+ def maybeInitialize: this.type = {
+ try initialize
+ catch { case _: CyclicReference => debuglog("Encountering cycle in maybe-initialization of $this") ; this }
+ }
/** Called when the programmer requests information that might require initialization of the underlying symbol.
*