No registered users in community xowiki
in last 10 minutes
in last 10 minutes
Re: [Xotcl] possible bug?
From: Artur Trzewik <mail_at_xdobry.de>
Date: Mon, 10 Jan 2011 22:26:27 +0100
I suppose effect by redefining class
namespace import xotcl::*
# file 1
Class F1
F1 instproc foo {} {
puts foo
}
# file 2 source file1
Class F2 -superclass F1
# file 3 source file 1
Class F1
F1 instproc foo {} {
puts foo
}
Class F3 -superclass F1
F2 create f2
f2 foo
# F1 is not more superclass of F2
F2 superclass
Redefining F1 (double source) delete old implementation of F1 and so
superclass of F2.
The same as
namespace import xotcl::*
Class F1
F1 instproc foo {} {
puts foo
}
Class F2 -superclass F1
F2 create f2
f2 foo
F1 destroy
f2 foo
Artur
> Hello,
>
> I attach a few files that will demonstrate the problem. Just run
> tester.tcl
> On my PC the effect is that I get an error message:
>
> ::tmp1: unable to dispatch method 'testA'
> while executing
> "tmp1 testA"
>
> The problem is that tmp1 is of class B and should be able to call
> testA, which is defined its superclass - A.
>
> I have found that the problem is source command, which includes file
> a.xotcl several times in several different files. I don't understand
> however why the message from interpreter says that it cannot find proc
> testA - this doesn't make sense.
>
> Is there a "nice" method to avoid this? Like in C we use #define and
> #ifndef
>
>
> _______________________________________________
> Xotcl mailing list
> Xotcl_at_alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl
Date: Mon, 10 Jan 2011 22:26:27 +0100
I suppose effect by redefining class
namespace import xotcl::*
# file 1
Class F1
F1 instproc foo {} {
puts foo
}
# file 2 source file1
Class F2 -superclass F1
# file 3 source file 1
Class F1
F1 instproc foo {} {
puts foo
}
Class F3 -superclass F1
F2 create f2
f2 foo
# F1 is not more superclass of F2
F2 superclass
Redefining F1 (double source) delete old implementation of F1 and so
superclass of F2.
The same as
namespace import xotcl::*
Class F1
F1 instproc foo {} {
puts foo
}
Class F2 -superclass F1
F2 create f2
f2 foo
F1 destroy
f2 foo
Artur
> Hello,
>
> I attach a few files that will demonstrate the problem. Just run
> tester.tcl
> On my PC the effect is that I get an error message:
>
> ::tmp1: unable to dispatch method 'testA'
> while executing
> "tmp1 testA"
>
> The problem is that tmp1 is of class B and should be able to call
> testA, which is defined its superclass - A.
>
> I have found that the problem is source command, which includes file
> a.xotcl several times in several different files. I don't understand
> however why the message from interpreter says that it cannot find proc
> testA - this doesn't make sense.
>
> Is there a "nice" method to avoid this? Like in C we use #define and
> #ifndef
>
>
> _______________________________________________
> Xotcl mailing list
> Xotcl_at_alice.wu-wien.ac.at
> http://alice.wu-wien.ac.at/mailman/listinfo/xotcl