Following up: Behavior new compile: 't ^ trueâ fails since #compile: is defined in TBehavior and depends on #basicLocalSelectors which is defined only in Class, MetaClass and TraitBehavior. It seems like #basicLocalSelectors should be abstract in TBehavior. Alternatively the implementation should be moved to TBehavior and the field localSelectors should be pushed up to Behavior. Am I missing something? Oscar On 29 Aug 2014, at 12:26 , Oscar Nierstrasz <oscar.nierstrasz@gmail.com> wrote:
Hi folks,
I was updating my lecture on Reflection for the Software Design and Evolution course, and I see now that anonymous classes can no longer be instances of Behavior but must be instances of Class. If you try to compile a method on an instance of Behavior, it fails. (basicLocalSelectors is not understood)
Am I missing something?
Cheers, Oscar
testPrimitiveChangeClassTo | anonClass browser |
anonClass := Class new. âmust be Class, not Behavior" anonClass superclass: Browser. anonClass setFormat: Browser format.
browser := Browser new. browser primitiveChangeClassTo: anonClass new. anonClass compile: 'thisIsATest ^ 2'.
self assert: browser thisIsATest = 2. self should: [Browser new thisIsATest] raise: MessageNotUnderstood.