Index: generic/nsf.c =================================================================== diff -u -r7401c1c91b67a9adc5b3c1a9049a37a9d8e13c93 -r19a5c5816fedc7838506e9dab92fdda35058ac71 --- generic/nsf.c (.../nsf.c) (revision 7401c1c91b67a9adc5b3c1a9049a37a9d8e13c93) +++ generic/nsf.c (.../nsf.c) (revision 19a5c5816fedc7838506e9dab92fdda35058ac71) @@ -3609,7 +3609,7 @@ if (methodName) { - assert(*methodName != ':'); + //assert(*methodName != ':'); Tcl_ListObjAppendElement(interp, resultObj, Tcl_NewStringObj(methodName,-1)); @@ -10307,8 +10307,8 @@ } /* - * The method name for next might be colon-prefixed. In - * these cases, we have to skip the single colon. + * The method name for next might be colon-prefixed. In these cases, we + * have to skip the single colon with the MethodName() function. */ result = NextSearchAndInvoke(interp, MethodName(cscPtr1->objv[0]), cscPtr1->objc, cscPtr1->objv, cscPtr1, 0); @@ -10331,28 +10331,17 @@ * method path, and the unknown final method. */ Tcl_Obj *callInfoObj = Tcl_NewListObj(1, &callerSelf->cmdName); - - Tcl_Obj *methodPathObj = - NsfMethodNamePath(interp, - (Tcl_CallFrame *)framePtr, - MethodName(objv[0])); - INCR_REF_COUNT(methodPathObj); - + Tcl_Obj *methodPathObj = NsfMethodNamePath(interp, + (Tcl_CallFrame *)framePtr, + MethodName(objv[0])); + INCR_REF_COUNT(callInfoObj); Tcl_ListObjAppendList(interp, callInfoObj, methodPathObj); - - /* Tcl_Obj *methodPathObj = CallStackMethodPath(interp, (Tcl_CallFrame *)framePtr); - - INCR_REF_COUNT(methodPathObj); - Tcl_ListObjAppendList(interp, callInfoObj, methodPathObj); - */ - - /* Tcl_ListObjAppendElement(interp, callInfoObj, Tcl_NewStringObj(MethodName(objv[0]), -1));*/ Tcl_ListObjAppendElement(interp, callInfoObj, objv[1]); - DECR_REF_COUNT(methodPathObj); - + /*fprintf(stderr, "DispatchUnknownMethod is called with callinfo <%s> \n", ObjStr(callInfoObj));*/ result = DispatchUnknownMethod(interp, invokedObject, objc-1, objv+1, callInfoObj, objv[1], NSF_CM_NO_OBJECT_METHOD|NSF_CSC_IMMEDIATE); + DECR_REF_COUNT(callInfoObj); } } Nsf_PopFrameCsc(interp, framePtr); Index: tests/disposition.test =================================================================== diff -u -r4bc60e16c10fdbbb640b3019d4bdebdc469fdf55 -r19a5c5816fedc7838506e9dab92fdda35058ac71 --- tests/disposition.test (.../disposition.test) (revision 4bc60e16c10fdbbb640b3019d4bdebdc469fdf55) +++ tests/disposition.test (.../disposition.test) (revision 19a5c5816fedc7838506e9dab92fdda35058ac71) @@ -1295,11 +1295,11 @@ # # Dispatch with a method handle # - ::T mixin {} + #puts stderr =================1 ? [list [T create t] $methods(z) XXX] \ "CURRENT-::obj-DELEGATOR-::t-UNKNOWNMETHOD-XXX-PATH-::nsf::classes::T::z" - + #puts stderr =================3 T setObjectParams x:alias,method=$methods(z) ? {T create t XXX} "CURRENT-::obj-DELEGATOR-::t-UNKNOWNMETHOD-XXX-PATH-::nsf::classes::T::z" \ "Non-object FQ selector with default unknown handler"