#include 'Moo.st'. ################################################################# ## 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) { dcl(#class) Q R. dcl(#classinst) a1 a2. method test999 { ^self.Q } } class B.TestObject(Object) { dcl(#class) Q R. dcl(#classinst) a1 a2. method test000 { ^self.Q } } pooldic ABC { #KKK := 20. } class MyObject(TestObject) { method(#class) main { | v1 v2 | System logNl: 'START OF MAIN'. v2 := [ [ v1 := [ System logNl: 'xxxxxxxxxxxxxxxxc'. Exception signal: 'qqqqq' ] value. 'OK OK OK' dump. ] ensure: [ System logNl: 'ENSURE ENSURE ENSURE']. ] on: Exception do: [:ex | System logNl: ('Exception: ', ex messageText). ex return: 10. ##ex retry. System logNl: '--- THIS MUST NOT BE PRINTED ---'. ]. System logNl: '---------------------'. System log: 'v1=>'; log: v1; log: ' v2=>'; logNl: v2. v1 := [ [ [ ##1 to: 20000 by: 1 do: [:i | System logNl: i asString. "Processor sleepFor: 1." ] Processor activeProcess terminate. ] ensure: [ System logNl: '<<>>' ]. ] ensure: [ System logNl: '<<--------------------->>' ]. ] newProcess. System logNl: 'RESUMING v1'. v1 resume. Processor sleepFor: 1. v1 terminate. ##[ ## [ Processor activeProcess terminate. ] ensure: [System logNl: '<<>>' ]. ##] ensure: [ System logNl: '<<--------------------->>' ]. System logNl: S'\0\0\0END OF MAIN\0AB\0\0\0C\0\0\0'. } }