#include 'Stix.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'. } }