diff options
author | Den Shabalin <den.shabalin@gmail.com> | 2013-11-05 13:50:46 +0100 |
---|---|---|
committer | Den Shabalin <den.shabalin@gmail.com> | 2013-11-12 15:45:22 +0100 |
commit | 2cd95fed2066851b141daf12e0c3f3aaad5dd7be (patch) | |
tree | 70c2368c95f20de837e116c78c2e12bdf2ddddbb /src/reflect | |
parent | c62a0e78c33dda1db6e73fa5cd3c6ddbd2b238f4 (diff) | |
download | scala-2cd95fed2066851b141daf12e0c3f3aaad5dd7be.tar.gz scala-2cd95fed2066851b141daf12e0c3f3aaad5dd7be.tar.bz2 scala-2cd95fed2066851b141daf12e0c3f3aaad5dd7be.zip |
re-implement hasAttachment directly in raw attachments
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/StdAttachments.scala | 2 | ||||
-rw-r--r-- | src/reflect/scala/reflect/macros/Attachments.scala | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/StdAttachments.scala b/src/reflect/scala/reflect/internal/StdAttachments.scala index d37bacb462..46f241643b 100644 --- a/src/reflect/scala/reflect/internal/StdAttachments.scala +++ b/src/reflect/scala/reflect/internal/StdAttachments.scala @@ -14,7 +14,7 @@ trait StdAttachments { def setAttachments(attachments: scala.reflect.macros.Attachments { type Pos = Position }): this.type = { rawatt = attachments; this } def updateAttachment[T: ClassTag](attachment: T): this.type = { rawatt = rawatt.update(attachment); this } def removeAttachment[T: ClassTag]: this.type = { rawatt = rawatt.remove[T]; this } - def hasAttachment[T: ClassTag]: Boolean = rawatt.get[T].nonEmpty + def hasAttachment[T: ClassTag]: Boolean = rawatt.contains[T] // cannot be final due to SynchronizedSymbols def pos: Position = rawatt.pos diff --git a/src/reflect/scala/reflect/macros/Attachments.scala b/src/reflect/scala/reflect/macros/Attachments.scala index c1ab269268..039e75fbee 100644 --- a/src/reflect/scala/reflect/macros/Attachments.scala +++ b/src/reflect/scala/reflect/macros/Attachments.scala @@ -41,6 +41,10 @@ abstract class Attachments { self => def get[T: ClassTag]: Option[T] = (all filter matchesTag[T]).headOption.asInstanceOf[Option[T]] + /** Check underlying payload contains an instance of type `T`. */ + def contains[T: ClassTag]: Boolean = + all exists matchesTag[T] + /** Creates a copy of this attachment with the payload slot of T added/updated with the provided value. * Replaces an existing payload of the same type, if exists. */ |