From e2dbf88f60b979bbceff600dc39db5faad3bb5ef Mon Sep 17 00:00:00 2001 From: Dmitry Petrashko Date: Thu, 27 Nov 2014 15:55:31 +0100 Subject: Add member lookups needed by backend. --- src/dotty/tools/dotc/core/Types.scala | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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) -- cgit v1.2.3