From 7390f6973eb99586083714e7ed49fa63c72c9c5d Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Sun, 26 Nov 2017 22:55:18 +0100 Subject: Check owner of method instead of linear search (#28) Inherited methods from Object can be checked for owner instead of looking at the name of the method. This should be cleaner and faster, though probably below the margin of error at this point. --- core/src/main/scala/mill/discover/Router.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'core') diff --git a/core/src/main/scala/mill/discover/Router.scala b/core/src/main/scala/mill/discover/Router.scala index 90e83430..b2d222b9 100644 --- a/core/src/main/scala/mill/discover/Router.scala +++ b/core/src/main/scala/mill/discover/Router.scala @@ -254,7 +254,9 @@ class Router [C <: Context](val c: C) { import c.universe._ def getValsOrMeths(curCls: Type): Iterable[MethodSymbol] = { def isAMemberOfAnyRef(member: Symbol) = { - weakTypeOf[AnyRef].members.exists(_.name == member.name) + // AnyRef is an alias symbol, we go to the real "owner" of these methods + val anyRefSym = c.mirror.universe.definitions.ObjectClass + member.owner == anyRefSym } val extractableMembers = for { member <- curCls.members -- cgit v1.2.3