From 561915336d652c41bf196a190c5847cf27a26506 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Mon, 29 Feb 2016 17:21:28 +0100 Subject: Make Types#membersBasedOnFlags safer and faster By filtering excluded flags earlier, we avoid forcing some denotations. --- src/dotty/tools/dotc/core/Types.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/dotty/tools/dotc/core/Types.scala') diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala index da3b76c57..91913b935 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -612,7 +612,7 @@ object Types { /** The set of members of this type having at least one of `requiredFlags` but none of `excludedFlags` set */ 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, butNot = excludedFlags))) + (name, buf) => buf ++= memberExcluding(name, excludedFlags).altsWith(x => x.is(requiredFlags))) } /** The info of `sym`, seen as a member of this type. */ -- cgit v1.2.3