diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-11-27 15:55:31 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-16 13:15:00 +0100 |
commit | e2dbf88f60b979bbceff600dc39db5faad3bb5ef (patch) | |
tree | bee2e72fef68eaef85cd85bee5caf44ab31f6e04 | |
parent | e51d0d12f7119d7c5578666edf951931021ec4d4 (diff) | |
download | dotty-e2dbf88f60b979bbceff600dc39db5faad3bb5ef.tar.gz dotty-e2dbf88f60b979bbceff600dc39db5faad3bb5ef.tar.bz2 dotty-e2dbf88f60b979bbceff600dc39db5faad3bb5ef.zip |
Add member lookups needed by backend.
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 13 |
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) |