Index: tests/methods.test =================================================================== diff -u -r3c1482d9e1f80f0216250f5debade5d8edb1b17e -r4b78042d08af7f3200d51f4033d5164c949f332d --- tests/methods.test (.../methods.test) (revision 3c1482d9e1f80f0216250f5debade5d8edb1b17e) +++ tests/methods.test (.../methods.test) (revision 4b78042d08af7f3200d51f4033d5164c949f332d) @@ -230,6 +230,60 @@ ? {o eval :foo} "::o: unable to dispatch method 'foo'" } +nx::test case colon-unknown { + set o [nx::Object new { + :object method foo {a b c args} { return [current method]-ok } + + ## Expansion to valid method calls (messages) + :object method expand-non-empty-list-1 {} { + {*}[list :foo 1 2 3 4 5 6]; + } + :object method expand-non-empty-list-2 {} { + : {*}[list foo 1 2 3 4 5 6]; + } + :object method expand-self-call-1 {} { + {*}[list :]; + } + :object method expand-self-call-2 {} { + : {*}[list]; + } + + ## (Non-)expansion & unknown + :object method expand-unknown-1 {} { + :{*}[list foo 1 2 3 4 5 6]; # no expansion, yielding invalid list as method name + } + :object method expand-unknown-2 {} { + :{*}[list]; # no expansion, yielding invalid list as method name + } + :object method expand-unknown-3 {} { + :{*}; # no expansion, yielding invalid list as method name + } + :object method expand-unknown-4 {} { + :{*}{}; # no expansion, yielding invalid list as method name + } + :object method expand-unknown-5 {} { + :{\}}; # yet another invalid list (no expansion op) + } + }] + + ? [list $o expand-non-empty-list-1] "foo-ok" + ? [list $o expand-non-empty-list-2] "foo-ok" + ? [list $o expand-self-call-1] $o + ? [list $o expand-self-call-2] $o + + # + # Keep unknown messages compatible with Tcl's 'invalid command' + # messages in the cases below, e.g.: + # + # proc =foo {args} {;}; ={*}[list foo 1 2 3 4 5 6] + # + ? [list $o expand-unknown-1] "$o: unable to dispatch method '{*}foo 1 2 3 4 5 6'" + ? [list $o expand-unknown-2] "$o: unable to dispatch method '{*}'" + ? [list $o expand-unknown-3] "$o: unable to dispatch method '{*}'" + ? [list $o expand-unknown-4] "$o: unable to dispatch method '{*}{}'" + ? [list $o expand-unknown-5] "$o: unable to dispatch method '{\}}'" +} + nx::test case mixinguards { # define a Class C and mixin class M nx::Class create C