#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) a1, a2. method test999 { ^self.Q } } class B.TestObject(Object) { var(#class) Q, R. var(#classinst) a1, a2. method test000 { ^self.Q } } pooldic ABC { KKK := 20. } class MyObject(TestObject) { method(#class) aaa_123 { | v1 | v1 := [ | k | k := 99. [ [ //[ Exception signal: 'simulated error' ] ensure: [('ensure 1 ' & (k asString)) dump ]. [ ^ 20 ] ensure: [ ('ensure 1 ' & (k asString)) dump. ]. ] ensure: ['ensure 2' dump ]. ] ensure: ['ensure 3' dump ]. ] on: Exception do: [:ex | ('EXCETION - ' & ex messageText) dump. // Exception signal: 'qqq'. ]. ^v1 } method(#class) main { | v1 | 'START OF MAIN' dump. //[1 xxx] ifCurtailed: ['XXXXXXXX CURTAILED XXXXXXXXX' dump]. //['ENSURE TEST' dump] ensure: ['XXXXXXXXX ENSURE XXXXXXXXXXXXXx' dump]. //v1 := [ ['kkk' dump.] ensure: ['XXXXXXXXX ENSURE XXXXXXXXXXXXXx' dump. 30] ] on: Exception do: [:ex | 'EXCEPTION OUTSIDE ENSURE...' dump. ]. //v1 dump. //[ Exception signal: 'simulated error' ] on: Exception do: [:ex | 'CAUGHT...' dump. Exception signal: 'jjjjjjj' ]. /*[ [ Exception signal: 'simulated error' ] ensure: ['ensure 1' dump ]. ] on: Exception do: [:ex | ('EXCETION - ' & ex messageText) dump. Exception signal: 'qqq'. ]. [1 xxx] ifCurtailed: ['XXXXXXXX CURTAILED XXXXXXXXX' dump. Exception signal: 'jjjj']. */ v1 := [ [ | k | k := 99. [ [ [ '@@@@@' dump. Exception signal: 'simulated error'. '^^^^^^' dump. ] ensure: [ ('ensure 11 ' & (k asString)) dump. Exception signal: 'qqq'. ]. //[ ^20 ] ensure: [('ensure 1 ', (k asString)) dump ]. 'KKKKKKKKKKKKKKKKKKKK' dump. ] ensure: ['ensure 2' dump ]. 'JJJJJJJJJJJJJJJJJJJJJJJJJJJ' dump. ] ensure: ['ensure 3' dump ]. ] on: Exception do: [:ex | ('>>>> EXCETION - ' & ex messageText) dump. ex pass. //Exception signal: 'XXXXXXXXXXXXx'. // ex return: 10. // Exception signal: 'qqq'. ]. 'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ' dump. ] on: PrimitiveFailureException do: [:ex | ('PRIMITIVE FAILURE EXCETION AT OUTER - ' & ex messageText) dump. ] on: Exception do: [:ex | ('>>>> EXCETION AT OUTER - ' & ex messageText) dump. ]. // v1 := self aaa_123. '--------------------------------' dump. v1 dump. '--------------------------------' dump. 'END OF MAIN' dump. } }