diff options
| author | donal.k.fellows@manchester.ac.uk <dkf> | 2012-11-02 20:25:57 (GMT) |
|---|---|---|
| committer | donal.k.fellows@manchester.ac.uk <dkf> | 2012-11-02 20:25:57 (GMT) |
| commit | 6b77f7a7e64936b4b291fa18e026bb77fd82b9d7 (patch) | |
| tree | 7d93443b8d54a80a197f646009236ccff15c3f43 /generic/tclExecute.c | |
| parent | f6d9b35b1e1383315af919cd15e94e8dc7fffcda (diff) | |
| parent | fe4cd2b40a7333e64321b53988575b93ea1e1ad1 (diff) | |
| download | tcl-6b77f7a7e64936b4b291fa18e026bb77fd82b9d7.zip tcl-6b77f7a7e64936b4b291fa18e026bb77fd82b9d7.tar.gz tcl-6b77f7a7e64936b4b291fa18e026bb77fd82b9d7.tar.bz2 | |
merge dkf-compile-misc-info
Diffstat (limited to 'generic/tclExecute.c')
| -rw-r--r-- | generic/tclExecute.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index f6b99bf..21c7d91 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -4285,6 +4285,34 @@ TEBCresume( return TclNRObjectContextInvokeNext(interp, (Tcl_ObjectContext) contextPtr, opnd, &OBJ_AT_DEPTH(opnd-1), 1); } + { + Object *oPtr; + + case INST_TCLOO_CLASS: + oPtr = (Object *) Tcl_GetObjectFromObj(interp, OBJ_AT_TOS); + if (oPtr == NULL) { + TRACE(("%.30s => ERROR: not object\n", O2S(OBJ_AT_TOS))); + goto gotError; + } + objResultPtr = TclOOObjectName(interp, oPtr->selfCls->thisPtr); + TRACE_WITH_OBJ(("%.30s => ", O2S(OBJ_AT_TOS)), objResultPtr); + NEXT_INST_F(1, 1, 1); + case INST_TCLOO_NS: + oPtr = (Object *) Tcl_GetObjectFromObj(interp, OBJ_AT_TOS); + if (oPtr == NULL) { + TRACE(("%.30s => ERROR: not object\n", O2S(OBJ_AT_TOS))); + goto gotError; + } + + /* + * TclOO objects *never* have the global namespace as their NS. + */ + + TclNewStringObj(objResultPtr, oPtr->namespacePtr->fullName, + strlen(oPtr->namespacePtr->fullName)); + TRACE_WITH_OBJ(("%.30s => ", O2S(OBJ_AT_TOS)), objResultPtr); + NEXT_INST_F(1, 1, 1); + } /* * End of TclOO support instructions. |
