102 lines
1.8 KiB
Smalltalk
102 lines
1.8 KiB
Smalltalk
|
|
||
|
#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: 10000 by: 1 do: [:i | System logNl: i asString. Processor sleepFor: 5. ]
|
||
|
] ensure: [ System logNl: '<<<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP>>>' ].
|
||
|
|
||
|
] ensure: [ System logNl: '<<--------------------->>' ].
|
||
|
] newProcess.
|
||
|
|
||
|
System logNl: 'RESUMING v1'.
|
||
|
v1 resume.
|
||
|
v1 terminate.
|
||
|
|
||
|
##[
|
||
|
## [ Processor activeProcess terminate. ] ensure: [System logNl: '<<<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP>>>' ].
|
||
|
##] ensure: [ System logNl: '<<--------------------->>' ].
|
||
|
|
||
|
System logNl: S'\0\0\0END OF MAIN\0AB\0\0\0C\0\0\0'.
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|