Index: generic/nsf.c =================================================================== diff -u -r980112e05d7bbaeb96b9f58efb7b8a0f881b0626 -r31c3da1f75d17f7c3e10dc4d1652dacf57716bb6 --- generic/nsf.c (.../nsf.c) (revision 980112e05d7bbaeb96b9f58efb7b8a0f881b0626) +++ generic/nsf.c (.../nsf.c) (revision 31c3da1f75d17f7c3e10dc4d1652dacf57716bb6) @@ -21650,10 +21650,11 @@ * Omit argument checking, provided that ... * ... argument checking is turned off *and* no converter is specified, or * ... the ruling parameter option is 'initcmd' + * ... slotset is active */ - if ((unlikely((doCheckArguments & NSF_ARGPARSE_CHECK) == 0u) - && (pPtr->flags & (NSF_ARG_IS_CONVERTER)) == 0u - ) || ((pPtr->flags & (NSF_ARG_CMD)) != 0u)) { + if ((unlikely((doCheckArguments & NSF_ARGPARSE_CHECK) == 0u) && (pPtr->flags & (NSF_ARG_IS_CONVERTER)) == 0u) || + ((pPtr->flags & (NSF_ARG_CMD)) != 0u) || + ((pPtr->flags & NSF_ARG_SLOTSET) != 0u)) { /* fprintf(stderr, "*** omit argument check for arg %s flags %.6x\n", pPtr->name, pPtr->flags); */ *clientData = ObjStr(objPtr); return TCL_OK; Index: tests/parameters.test =================================================================== diff -u -r7bcc1f1a88422c472cbeb238c1d7d1a337361bc8 -r31c3da1f75d17f7c3e10dc4d1652dacf57716bb6 --- tests/parameters.test (.../parameters.test) (revision 7bcc1f1a88422c472cbeb238c1d7d1a337361bc8) +++ tests/parameters.test (.../parameters.test) (revision 31c3da1f75d17f7c3e10dc4d1652dacf57716bb6) @@ -777,6 +777,47 @@ ? {d1 foo -a 2 10} "a=2,b=10" } + +nx::test case value-checker-call-check { + + nx::Class create PV { + :property -accessor public h:foo,arg=123 { + :object method type=foo {prop value arg} { + incr ::counter(h) + return + } + } + :property -accessor public hs:0..*,foo { + :object method type=foo {prop value} { + incr ::counter(hs) + return + } + } + } + + ? {info exists ::counter(h)} 0 + set pv1 [PV new -h 121] + ? {set ::counter(h)} 1 + $pv1 h set 212 + ? {set ::counter(h)} 2 + $pv1 configure -h 212 + ? {set ::counter(h)} 3 + + unset -nocomplain ::counter(h) + + ? {info exists ::counter(hs)} 0 + set pv2 [PV new -hs 121] + ? {set ::counter(hs)} 1 + $pv2 hs add 212 + ? {set ::counter(hs)} 2 + $pv1 configure -hs 313 + ? {set ::counter(hs)} 3 + + unset -nocomplain ::counter(hs) + +} + + ####################################################### # testing object types in method parameters #######################################################