#include 'Moo.moo'. ////////////////////////////////////////////////////////////////# // MAIN ////////////////////////////////////////////////////////////////# // TODO: use #define to define a class or use #class to define a class. // use #extend to extend a class // using #class for both feels confusing. extend Apex { } extend SmallInteger { method getTrue: anInteger { ^anInteger + 9999. } method inc { ^self + 1. } } class TestObject(Object) { var(#class) Q, R. var(#classinst) t1, t2. } class MyObject(TestObject) { var(#class) C, B, A. method getTrue { ^true. } method getTrue: anInteger { ^ anInteger } method getFalse { ^false } method a { ^ 10 } method b { ^ 20 } method c { ^ 30 } method(#class) a: a b: b c: c { ^ a + b + c. } method(#class) main { | p p2 | 'START OF MAIN' dump. //p := [ :a :b :c :d | a dump. b dump. (c + d) dump. ^10. ] newProcessWith: #(#abc #def 10 20). p := [ :a :b :c :d | a dump. b dump. (c + d) dump. ] newProcessWith: #(#abc #def 10 20). p2 := [ :a :b :c :d | a dump. b dump. a dump. b dump. (c + d) dump. ^10000 ] newProcessWith: #( #AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA #BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 1000000000000000 299999999999999999999999999999999999999999 ). p resume. p2 resume. 'MIDDLE OF MAIN' dump. Processor activeProcess terminate. //p terminate. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. // p resume. '999999999999999999' dump. '999999999999999999' dump. '999999999999999999' dump. 'END OF MAIN' dump. } }