Index: tests/protected.test =================================================================== diff -u -rcb838e0d7ecf616891cc1f5089750208913d8503 -r2493736d00766ffa6a8eb5b536c616e4e8da34e9 --- tests/protected.test (.../protected.test) (revision cb838e0d7ecf616891cc1f5089750208913d8503) +++ tests/protected.test (.../protected.test) (revision 2493736d00766ffa6a8eb5b536c616e4e8da34e9) @@ -599,4 +599,39 @@ # next in the private method reaches a non-private method, which is honored ? {s1 foo2 4 5} 9 ? {s1 bar 4 5} 20 +} + +# +# Test setting / clearing private and protected flags +# + +nx::Test case call-protected-flags { + Class create C + + C protected method foo {} {return foo} + ? {::nsf::method::property C foo call-protected} 1 + ? {::nsf::method::property C foo call-private} 0 + ? {C info method definition foo} "::C protected method foo {} {return foo}" + + C public method foo {} {return foo} + ? {::nsf::method::property C foo call-protected} 0 + ? {::nsf::method::property C foo call-private} 0 + ? {C info method definition foo} "::C public method foo {} {return foo}" + + C private method foo {} {return foo} + ? {::nsf::method::property C foo call-protected} 1 + ? {::nsf::method::property C foo call-private} 1 + ? {C info method definition foo} "::C private method foo {} {return foo}" + + ? {::nsf::method::property C foo call-private false} 0 + ? {::nsf::method::property C foo call-protected} 1 + ? {::nsf::method::property C foo call-private} 0 + + ? {::nsf::method::property C foo call-private true} 1 + ? {::nsf::method::property C foo call-protected} 1 + ? {::nsf::method::property C foo call-private} 1 + + ? {::nsf::method::property C foo call-protected false} 0 + ? {::nsf::method::property C foo call-protected} 0 + ? {::nsf::method::property C foo call-private} 0 } \ No newline at end of file