1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# -*- Tcl -*-
package prefer latest
package req nx::test
#
# [::nsf::current calledclass]
#
nx::test case current-calledclass {
Object create o {
:public method foo {} {
return [current calledclass]
}
}
? {o foo} ""
Class create C {
:public class method bar {} {
return [current calledclass]
}
:public method foo {} {
return [current calledclass]
}
}
? {[C new] foo} ::C
? {C bar} ""
C eval {
:public method intercept {} {
return @[current calledclass]@
}
:filter add intercept
}
? {[C new] foo} @::C@
C eval {
:filter {}
:public method baz {} {
return [current calledclass]
}
}
Class create M {
:public method baz {} {
return [list [current calledclass] [next]]
}
}
C mixins add M
? {[C new] baz} {::C ::C}
}
#
# [::nsf::current calledclass]
#
nx::test case current-calledmethod {
set body {
return [list [current nextmethod] {*}[next]]
}
Object create o
set mh [o public method foo {} $body]
? {o foo} {{}}
Class create M
set mh2 [M public method foo {} $body]
M filters add foo
o mixin M
? {o foo} [list $mh2 $mh {}]
}
#
# Local variables:
# mode: tcl
# tcl-indent-level: 2
# indent-tabs-mode: nil
# End:
|