Index: TODO =================================================================== diff -u -r610ad7027f342ea6a0cdfef057da37b0d4d6a02a -r87758706e941470e44fe2c7a7961c800ae4a9796 --- TODO (.../TODO) (revision 610ad7027f342ea6a0cdfef057da37b0d4d6a02a) +++ TODO (.../TODO) (revision 87758706e941470e44fe2c7a7961c800ae4a9796) @@ -2913,6 +2913,7 @@ - provided better error messages for unknown parameter options - provided error messages for multiple disposition parameters +- reduce redundancy by introducing macro NSF_ARG_METHOD_INVOCATION TODO: Index: generic/nsf.c =================================================================== diff -u -r610ad7027f342ea6a0cdfef057da37b0d4d6a02a -r87758706e941470e44fe2c7a7961c800ae4a9796 --- generic/nsf.c (.../nsf.c) (revision 610ad7027f342ea6a0cdfef057da37b0d4d6a02a) +++ generic/nsf.c (.../nsf.c) (revision 87758706e941470e44fe2c7a7961c800ae4a9796) @@ -9997,7 +9997,7 @@ int i, found = -1; if (paramPtr->converter || - (paramPtr->flags & (NSF_ARG_ALIAS|NSF_ARG_FORWARD|NSF_ARG_INITCMD))) { + (paramPtr->flags & NSF_ARG_METHOD_INVOCATION)) { Tcl_Obj *obj = Tcl_NewStringObj(option, optionLength); NsfPrintError(interp, "Parameter option '%s' unknown for parameter type %s", ObjStr(obj), @@ -18522,7 +18522,7 @@ * NSF_ARG_INITCMD|NSF_ARG_ALIAS|NSF_ARG_FORWARD do not set instance * variables, so we do not have to check for existing variables. */ - if (paramPtr->flags & (NSF_ARG_INITCMD|NSF_ARG_ALIAS|NSF_ARG_FORWARD)) continue; + if (paramPtr->flags & NSF_ARG_METHOD_INVOCATION) continue; varObj = Tcl_ObjGetVar2(interp, paramPtr->nameObj, NULL, TCL_PARSE_PART1); if (varObj) { @@ -18547,7 +18547,7 @@ * Special setter methods, calling method; handle types "initcmd", "alias" * and "forward". */ - if (paramPtr->flags & (NSF_ARG_INITCMD|NSF_ARG_ALIAS|NSF_ARG_FORWARD)) { + if (paramPtr->flags & NSF_ARG_METHOD_INVOCATION) { CallFrame *varFramePtr = Tcl_Interp_varFramePtr(interp); NsfCallStackContent csc, *cscPtr = &csc; CallFrame frame2, *framePtr2 = &frame2; Index: generic/nsfInt.h =================================================================== diff -u -r8ab7863eb6b0e1a3f5cecad0261cb37ccb8168d5 -r87758706e941470e44fe2c7a7961c800ae4a9796 --- generic/nsfInt.h (.../nsfInt.h) (revision 8ab7863eb6b0e1a3f5cecad0261cb37ccb8168d5) +++ generic/nsfInt.h (.../nsfInt.h) (revision 87758706e941470e44fe2c7a7961c800ae4a9796) @@ -400,11 +400,14 @@ #define NSF_ARG_UNNAMED 0x080000 #define NSF_ARG_IS_RETURNVALUE 0x100000 +/* method invocations */ +#define NSF_ARG_METHOD_INVOCATION (NSF_ARG_ALIAS|NSF_ARG_FORWARD|NSF_ARG_INITCMD) + /* Disallowed parameter options */ -#define NSF_DISALLOWED_ARG_METHOD_PARAMETER (NSF_ARG_ALIAS|NSF_ARG_FORWARD|NSF_ARG_INITCMD) -#define NSF_DISALLOWED_ARG_SETTER (NSF_ARG_SWITCH|NSF_ARG_SUBST_DEFAULT|NSF_DISALLOWED_ARG_METHOD_PARAMETER) -#define NSF_DISALLOWED_ARG_OBJECT_PARAMETER (NSF_ARG_SWITCH) -#define NSF_DISALLOWED_ARG_VALUECHECK (NSF_ARG_SUBST_DEFAULT|NSF_ARG_ALIAS|NSF_ARG_FORWARD|NSF_ARG_INITCMD|NSF_ARG_SWITCH|NSF_ARG_CURRENTLY_UNKNOWN) +#define NSF_DISALLOWED_ARG_METHOD_PARAMETER NSF_ARG_METHOD_INVOCATION +#define NSF_DISALLOWED_ARG_SETTER (NSF_ARG_SWITCH|NSF_ARG_SUBST_DEFAULT|NSF_DISALLOWED_ARG_METHOD_PARAMETER) +#define NSF_DISALLOWED_ARG_OBJECT_PARAMETER (NSF_ARG_SWITCH) +#define NSF_DISALLOWED_ARG_VALUECHECK (NSF_ARG_SUBST_DEFAULT|NSF_ARG_METHOD_INVOCATION|NSF_ARG_SWITCH|NSF_ARG_CURRENTLY_UNKNOWN) /* flags for ParseContext */