diff options
author | Steve Bennett <steveb@workware.net.au> | 2011-09-26 15:01:36 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2011-09-26 15:01:36 +1000 |
commit | a36dd18cbc9c8b0483c2cefa49f5bbc2bd3b4e73 (patch) | |
tree | 5b9085e30c46b629eb3a2fd75c2143695bd63407 /oo.tcl | |
parent | 9664e24cd60105151a3e0e906b9687ed83fe088f (diff) | |
download | jimtcl-a36dd18cbc9c8b0483c2cefa49f5bbc2bd3b4e73.zip jimtcl-a36dd18cbc9c8b0483c2cefa49f5bbc2bd3b4e73.tar.gz jimtcl-a36dd18cbc9c8b0483c2cefa49f5bbc2bd3b4e73.tar.bz2 |
Class vars should take precedence
...over baseclass vars.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'oo.tcl')
-rw-r--r-- | oo.tcl | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -10,16 +10,18 @@ # The *last* baseclass can be accessed directly with [super] # Later baseclasses take precedence if the same method exists in more than one proc class {classname {baseclasses {}} classvars} { + set baseclassvars {} foreach baseclass $baseclasses { # Start by mapping all methods to the parent class foreach method [$baseclass methods] { alias "$classname $method" "$baseclass $method" } # Now import the base class classvars - set classvars [dict merge $classvars [$baseclass classvars]] + set baseclassvars [dict merge $baseclassvars [$baseclass classvars]] # The last baseclass will win here proc "$classname baseclass" {} baseclass { return $baseclass } } - # Make sure that classvars is a dictionary + # Merge in the baseclass vars with lower precedence + set classvars [dict merge $baseclassvars $classvars] set vars [lsort [dict keys $classvars]] # This is the class dispatcher for $classname |