HaloO, Nicholas Clark wrote:
Is there any way to pre-declare that I want to defer baking the role from a class? (Which I guess would make it an error to reference that role at run time in any way, until I'd issued a second declaration that I was done, and baking season is open)
I fear this is the general problem to know in what runstate you are. Note that your compile time is the compiler's compile time. That is the interface you are asking for would allow you to defer the creation of roles from classes you are dealing with for your subordinate runtime. IOW, freezing classes into roles happens at CHECK time. This raises the question if CHECK { class Foo is also { has $.x } } should throw an exception at compile time, i.e. end in the error "can't re-open Foo at CHECK time". In general I would argue that certain parts of the runtime environment are frozen for that runtime. E.g. Foo := class NewFoo {...} should throw an exception that can only be handled by the compile time that bred it. This compile time can then be so kind to maintain the state of the runtime, replace the class and *resume* the runtime. In a runtime that is a native environment such exception catching might simply result in an abortion. Regards, TSa. -- "The unavoidable price of reliability is simplicity" -- C.A.R. Hoare "Simplicity does not precede complexity, but follows it." -- A.J. Perlis 1 + 2 + 3 + 4 + ... = -1/12 -- Srinivasa Ramanujan