Index: generic/predefined.h =================================================================== diff -u -rdf9b12b3347ec6d0aaab6a080619734cd4c45f34 -r7f114dad2b4deb00431c895e511118c3c675cb07 --- generic/predefined.h (.../predefined.h) (revision df9b12b3347ec6d0aaab6a080619734cd4c45f34) +++ generic/predefined.h (.../predefined.h) (revision 7f114dad2b4deb00431c895e511118c3c675cb07) @@ -68,13 +68,15 @@ "::xotcl::forward Object forward ::xotcl::forward %self -per-object\n" "::xotcl::forward Class forward ::xotcl::forward %self\n" "Class protected object method __unknown {name} {}\n" -"Object public method alias {-objscope:switch methodName cmd} {\n" +"Object public method alias {-nonleaf:switch -objscope:switch methodName cmd} {\n" "::xotcl::alias [self] -per-object $methodName \\\n" "{*}[expr {${objscope} ? \"-objscope\" : \"\"}] \\\n" +"{*}[expr {${nonleaf} ? \"-nonleaf\" : \"\"}] \\\n" "$cmd}\n" -"Class public method alias {-objscope:switch methodName cmd} {\n" +"Class public method alias {-nonleaf:switch -objscope:switch methodName cmd} {\n" "::xotcl::alias [self] $methodName \\\n" "{*}[expr {${objscope} ? \"-objscope\" : \"\"}] \\\n" +"{*}[expr {${nonleaf} ? \"-nonleaf\" : \"\"}] \\\n" "$cmd}\n" "Object public method setter {methodName value:optional} {\n" "if {[info exists value]} {\n" Index: generic/predefined.xotcl =================================================================== diff -u -rdf9b12b3347ec6d0aaab6a080619734cd4c45f34 -r7f114dad2b4deb00431c895e511118c3c675cb07 --- generic/predefined.xotcl (.../predefined.xotcl) (revision df9b12b3347ec6d0aaab6a080619734cd4c45f34) +++ generic/predefined.xotcl (.../predefined.xotcl) (revision 7f114dad2b4deb00431c895e511118c3c675cb07) @@ -21,10 +21,7 @@ ::xotcl::alias Object $cmdName $cmd } - # provide some Tcl-commands as methods for ::xotcl2::Object - #foreach cmd {array append eval incr lappend set subst unset trace} { - # ::xotcl::alias Object $cmd -objscope ::$cmd - #} + # provide ::eval as method for ::xotcl2::Object ::xotcl::alias Object eval -nonleaf ::eval # provide the standard command set for Class @@ -149,14 +146,19 @@ # Add alias methods. cmdName for XOTcl method can be added via # [... info method name ] # - Object public method alias {-objscope:switch methodName cmd} { + # -nonleaf and -objscope make only sense for c-defined cmds, + # -objscope implies -nonleaf + # + Object public method alias {-nonleaf:switch -objscope:switch methodName cmd} { ::xotcl::alias [self] -per-object $methodName \ {*}[expr {${objscope} ? "-objscope" : ""}] \ + {*}[expr {${nonleaf} ? "-nonleaf" : ""}] \ $cmd } - Class public method alias {-objscope:switch methodName cmd} { + Class public method alias {-nonleaf:switch -objscope:switch methodName cmd} { ::xotcl::alias [self] $methodName \ {*}[expr {${objscope} ? "-objscope" : ""}] \ + {*}[expr {${nonleaf} ? "-nonleaf" : ""}] \ $cmd } Index: generic/xotcl.c =================================================================== diff -u -rbfbe69299ca79f52f8571d5132864ad99f611180 -r7f114dad2b4deb00431c895e511118c3c675cb07 --- generic/xotcl.c (.../xotcl.c) (revision bfbe69299ca79f52f8571d5132864ad99f611180) +++ generic/xotcl.c (.../xotcl.c) (revision 7f114dad2b4deb00431c895e511118c3c675cb07) @@ -10167,12 +10167,15 @@ int withObjscope, int withPer_object) { Tcl_ListObjAppendElement(interp, listObj, object->cmdName); if (withPer_object) { - Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj("object",-1)); + Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj("object",6)); } Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj(registerCmdName,-1)); if (withObjscope) { - Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj("-objscope",-1)); + Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj("-objscope",9)); } + if (Tcl_Command_flags(cmd) & XOTCL_CMD_NONLEAF_METHOD) { + Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj("-nonleaf",8)); + } Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj(methodName,-1)); } Index: tests/info-method.xotcl =================================================================== diff -u -red15b5be7e88cbbcdf6121f3869722dbc354d76f -r7f114dad2b4deb00431c895e511118c3c675cb07 --- tests/info-method.xotcl (.../info-method.xotcl) (revision ed15b5be7e88cbbcdf6121f3869722dbc354d76f) +++ tests/info-method.xotcl (.../info-method.xotcl) (revision 7f114dad2b4deb00431c895e511118c3c675cb07) @@ -50,7 +50,7 @@ ? {Class info method parameter method} \ {name arguments body -precondition -postcondition} ? {Object info method parameter alias} \ - {-objscope:switch methodName cmd} + {-nonleaf:switch -objscope:switch methodName cmd} # raises currently an error ? {catch {C info method parameter a}} 1