diff options
author | Martin Odersky <odersky@gmail.com> | 2014-02-11 15:16:17 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-02-11 15:16:17 +0100 |
commit | ce55c3b08da29acafaa3c43796ead9cf854f1d34 (patch) | |
tree | 9f38ff6c1e3108f66d6d8ea31035150695000ac9 /src/dotty/tools/dotc/util/Attachment.scala | |
parent | 459d78dccc40c94dd7da8b5b29762a494595778b (diff) | |
download | dotty-ce55c3b08da29acafaa3c43796ead9cf854f1d34.tar.gz dotty-ce55c3b08da29acafaa3c43796ead9cf854f1d34.tar.bz2 dotty-ce55c3b08da29acafaa3c43796ead9cf854f1d34.zip |
COnverted symOfTree and expandedTree to attachments.
Diffstat (limited to 'src/dotty/tools/dotc/util/Attachment.scala')
-rw-r--r-- | src/dotty/tools/dotc/util/Attachment.scala | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/util/Attachment.scala b/src/dotty/tools/dotc/util/Attachment.scala index dc9602df3..7cc94754d 100644 --- a/src/dotty/tools/dotc/util/Attachment.scala +++ b/src/dotty/tools/dotc/util/Attachment.scala @@ -15,10 +15,20 @@ object Attachment { private[Attachment] var next: Link[_] def getAttachment[V](key: Key[V]): Option[V] = - if (this.key eq key) Some(this.value.asInstanceOf[V]) + if (this.key eq key) Some(value.asInstanceOf[V]) else if (next == null) None else next.getAttachment(key) + def attachment[V](key: Key[V]): V = + if (this.key eq key) value.asInstanceOf[V] + else if (next == null) throw new NoSuchElementException + else next.attachment(key) + + def attachmentOrElse[V](key: Key[V], default: V): V = + if (this.key eq key) value.asInstanceOf[V] + else if (next == null) default + else next.attachmentOrElse(key, default) + def pushAttachment[V](key: Key[V], value: V): Unit = { assert(!getAttachment(key).isDefined) next = new Link(key, value, next) |