View · Search · Index
No registered users in community xowiki
in last 10 minutes

Re: [Xotcl] xotcl::nonposArgs

From: Stefan Sobernig <stefan.sobernig_at_wu.ac.at>
Date: Wed, 15 Jul 2015 13:58:16 +0200

Hi Michael!

>> What is the correct way to port this to XOTcl 2.0?

This is most likely not an authoritative answer, I don't have the time
right now to think this through properly. The following should get you
going for the time being:

if {[info command ::nx::methodParameterSlot] ne ""} {
     ::nx::methodParameterSlot object method type=sourced_guid {name
value args} {
        if {![::nsf::is object $value] || [xotcl::Object info instances
-closure $value] eq ""} {
            error "'$value' is not an XOTcl object"
        }
        if {![$value istype ::foo::bar::SourcedGuid]} {
            error "'$value' is not of type SourcedGuid but [$value info class]"
        }
     }
}

If you plan to co-maintain two code bases (one compatible with 1.6 and
the other for 2+), then you might want to consider factoring out the
value checker into a plain Tcl proc and forward/alias to this proc
conditionally from ::xotcl::nonposArgs and ::nx::methodParameterSlot,
respectively.

I leave this as an exercise to you ;)

Let me know whether the above works for you for the time being.

Cheers,
Stefan

P.S.: I suggest using "return -code error" in your value checker to skip
one level on the callstack trace reported to the developer, to hide the
details of the value checker in the reported trace.