Index: generic/xotcl.c =================================================================== diff -u -r3ecb613fe4ef3fd510e73792cdf0764a1d1489ab -r985438008a249cdf076309b9b3f0ba517a6f2db9 --- generic/xotcl.c (.../xotcl.c) (revision 3ecb613fe4ef3fd510e73792cdf0764a1d1489ab) +++ generic/xotcl.c (.../xotcl.c) (revision 985438008a249cdf076309b9b3f0ba517a6f2db9) @@ -6465,7 +6465,7 @@ result = Tcl_ListObjGetElements(interp, arg, &npac, &npav); if (result != TCL_OK || npac < 1 || npac > 2) { - return XOTclVarErrMsg(interp, "wrong # of elements in parameter definition for method", + return XOTclVarErrMsg(interp, "wrong # of elements in parameter definition for method ", procName, " (should be 1 or 2 list elements): ", ObjStr(arg), (char *) NULL); } @@ -6550,6 +6550,10 @@ * have a default. */ paramPtr->flags &= ~XOTCL_ARG_REQUIRED; + } else if (paramPtr->flags & XOTCL_ARG_SUBST_DEFAULT) { + XOTclVarErrMsg(interp, "parameter option substdefault specified for parameter \"", + paramPtr->name, "\" without default value", (char *) NULL); + goto param_error; } /* convertToTclobj() is the default converter */ @@ -9594,7 +9598,7 @@ if (pPtr->defaultValue) { Tcl_Obj *newValue = pPtr->defaultValue; ClientData checkedData; - + /* we have a default, do we have to subst it? */ if (pPtr->flags & XOTCL_ARG_SUBST_DEFAULT) { int result = SubstValue(interp, pcPtr->obj, &newValue);