Class procedures can be erroneously called like methods. They even have access to instance variables:
package require Itcl itcl::class A { public proc hello {} { puts hello } private variable var there public proc there {} { puts $var } } # Works as expected. A::hello # Works, but shouldn't. set a [A #auto] $a hello # Can even access instance variables. $a there
With Itcl 4.1.2:
hello hello there
With Itcl 3.4:
hello bad option "hello": should be one of... a0 cget -option a0 configure ?-option? ?value -option value...? a0 isa className while executing "$a hello "