From df974e71f99feff44f12a02e66281948465d32ec Mon Sep 17 00:00:00 2001 From: dkf Date: Thu, 19 Oct 2017 09:28:16 +0000 Subject: Oops; put the code in the wrong place. Mixins have priority when deciding method visibility. --- generic/tclOOCall.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/generic/tclOOCall.c b/generic/tclOOCall.c index e449893..3e4f561 100644 --- a/generic/tclOOCall.c +++ b/generic/tclOOCall.c @@ -637,6 +637,18 @@ AddClassMethodNames( break; } + if (clsPtr->mixins.num != 0) { + Class *mixinPtr; + int i; + + FOREACH(mixinPtr, clsPtr->mixins) { + if (mixinPtr != clsPtr) { + AddClassMethodNames(mixinPtr, flags|TRAVERSED_MIXIN, + namesPtr, examinedClassesPtr); + } + } + } + FOREACH_HASH(namePtr, mPtr, &clsPtr->classMethods) { hPtr = Tcl_CreateHashEntry(namesPtr, (char *) namePtr, &isNew); if (isNew) { @@ -654,18 +666,6 @@ AddClassMethodNames( } } - if (clsPtr->mixins.num != 0) { - Class *mixinPtr; - int i; - - FOREACH(mixinPtr, clsPtr->mixins) { - if (mixinPtr != clsPtr) { - AddClassMethodNames(mixinPtr, flags|TRAVERSED_MIXIN, - namesPtr, examinedClassesPtr); - } - } - } - if (clsPtr->superclasses.num != 1) { break; } -- cgit v0.12