Tcl Source Code

View Ticket
Login
Ticket UUID: 929a918ec1b4adf0381fc1fc4609297185019ba8
Title: docs should say oo::configurable can only be mixed in with oo::configurable
Type: Bug Version: 9.0b2
Submitter: mnsummerfield Created on: 2024-07-09 10:04:54
Subsystem: 69. Other Assigned To: nobody
Priority: 5 Medium Severity: Minor
Status: Open Last Modified: 2024-09-17 08:51:28
Resolution: None Closed By: nobody
    Closed on:
Description:
Page: https://www.tcl.tk/man/tcl9.0/TclCmd/configurable.html#M5 This is
the description section.

I suggest adding a sentence something like:

    Note that oo::configurable classes can only be mixed in (using
`mixin`) with _other_ oo::configurable classes, not with plain oo::class
classes.

The reason for suggesting this is that I tried mixing in an oo::class with
an oo::configurable and got a very confusing "unknown method "configure":"
error message.
User Comments: dkf added on 2024-09-17 08:51:28:

The real problem comes if someone joins two class hierarchies that use the property list slots in different ways (such as oo::configurable and some of the stuff that's been mooted for Tk megawidgets, though in that case they also fight over the meaning of configure as a method). There really isn't a good way around that.

I guess we need a bit better documentation to describe the limits of what's possible.


dmcooke added on 2024-09-03 20:24:28:

This is because the mixin slot works by replacement by default. So the bare statement mixin V replaces the ::oo::configuresupport::configurable mixin that the oo::configurable metaclass adds.

It should work if you use mixin -append V instead.

I don't know why mixin defaults to replacement, instead of appending (like variable does). It doesn't make any sense.


oehhar added on 2024-07-09 10:34:02:
Great ! Could you give a somple sample for the error case.
Maybe, the issue is not intentional or the error message may be imporved.

Thanks,
Harald

Attachments: