aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2014-11-27 15:55:31 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-16 13:15:00 +0100
commite2dbf88f60b979bbceff600dc39db5faad3bb5ef (patch)
treebee2e72fef68eaef85cd85bee5caf44ab31f6e04 /src/dotty/tools/dotc/core/Types.scala
parente51d0d12f7119d7c5578666edf951931021ec4d4 (diff)
downloaddotty-e2dbf88f60b979bbceff600dc39db5faad3bb5ef.tar.gz
dotty-e2dbf88f60b979bbceff600dc39db5faad3bb5ef.tar.bz2
dotty-e2dbf88f60b979bbceff600dc39db5faad3bb5ef.zip
Add member lookups needed by backend.
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index 3100be9a0..4ad6d34d9 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -29,6 +29,7 @@ import collection.{mutable, Seq, breakOut}
import config.Config
import config.Printers._
import annotation.tailrec
+import Flags.FlagSet
import language.implicitConversions
object Types {
@@ -526,6 +527,18 @@ object Types {
.toList.map(d => TermRef.withSig(this, d.symbol.asTerm))
}
+ /** The set of implicit members of this type */
+ final def memberClasses(implicit ctx: Context): Seq[SingleDenotation] = track("implicitMembers") {
+ memberDenots(takeAllFilter,
+ (name, buf) => buf ++= member(name).altsWith(x => x.isClass))
+ }
+
+ /** The set of implicit members of this type */
+ final def membersBasedOnFlags(requiredFlags: FlagSet, excludedFlags: FlagSet)(implicit ctx: Context): Seq[SingleDenotation] = track("implicitMembers") {
+ memberDenots(takeAllFilter,
+ (name, buf) => buf ++= member(name).altsWith(x => x.is(requiredFlags, excludedFlags)))
+ }
+
/** The info of `sym`, seen as a member of this type. */
final def memberInfo(sym: Symbol)(implicit ctx: Context): Type =
sym.info.asSeenFrom(this, sym.owner)