Skip to content

Instantly share code, notes, and snippets.

@0x7CFE
Last active June 30, 2016 08:21
Show Gist options
  • Save 0x7CFE/19d695e804f5c2eeccea36a7aa92dc7d to your computer and use it in GitHub Desktop.
Save 0x7CFE/19d695e804f5c2eeccea36a7aa92dc7d to your computer and use it in GitHub Desktop.
Test run of the type inference subsystem on Array>>sort
Test run of the type analyzer.
Input: literal array object of 10 elements.
Output proves that types were correctly inferred as:
[(Array)]::Collection>>sort -> (Array)
Below is the actual output:
Image read complete. Loaded 6150 objects
*** Not found cached context for key: [[nil], false], cache: 0x9ab592c
(0) Analyzing [nil]::Undefined>>testInference ...
testInference
(Array new: 10) sort
!
Initial pass on Undefined>>testInference
*** Not found cached context for key: [[Array, 10], false], cache: 0x9ab890c
(1) Analyzing [Array, 10]::MetaArray>>new: ...
new: sz
<7 self sz>
!
Initial pass on MetaArray>>new:
[Array, 10]::MetaArray>>new: -> (Array)
*** Not found cached context for key: [[(Array)], false], cache: 0x9ab9244
(2) Analyzing [(Array)]::Collection>>sort ...
sort
^ self sort: [ :x :y | x < y ]
!
Initial pass on Collection>>sort
captureContext of 3 : Analyzing block Collection>>sort@4#2[][]
writing siteIndex: 3
writing 0x9ab6600 as site index 3
*** Not found cached context for key: [[(Array), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
(3) Analyzing [(Array), Collection>>sort@4#2[][]3]::Array>>sort: ...
sort: aBlock
^ (super asList sort: aBlock) asArray
!
Initial pass on Array>>sort:
*** Not found cached context for key: [[(Array)], true], cache: 0x9ab87cc
(4) Analyzing [(Array)]::Collection>>asList ...
asList
^ List new addAll: self
!
Initial pass on Collection>>asList
*** Not found cached context for key: [[List], false], cache: 0x9ac1f24
(5) Analyzing [List]::MetaList>>new ...
new | instance |
instance <- super new.
"set size to 0"
self in: instance at: 2 put: 0.
^instance
!
Initial pass on MetaList>>new
*** Not found cached context for key: [[List], true], cache: 0x9ac1f24
(6) Analyzing [List]::Class>>new ...
new
" return a new instance of ourselves "
<7 self size>
!
Initial pass on Class>>new
[List]::Class>>new -> (List)
*** Not found cached context for key: [[List, (List), 2, 0], false], cache: 0x9ac3dc4
(7) Analyzing [List, (List), 2, 0]::MetaObject>>in:at:put: ...
in: object at: index put: value
" change data field in object, used during initialization "
" returns the intialized object "
<5 value object index>
!
Initial pass on MetaObject>>in:at:put:
[List, (List), 2, 0]::MetaObject>>in:at:put: -> *
[List]::MetaList>>new -> (List)
*** Not found cached context for key: [[(List), (Array)], false], cache: 0x9ac4854
(8) Analyzing [(List), (Array)]::List>>addAll: ...
addAll: aCollection
aCollection do: [ :element | self addLast: element ]
!
Initial pass on List>>addAll:
captureContext of 3 : Analyzing block List>>addAll:@4#8[][]
writing siteIndex: 3
writing 0x9ac4cd8 as site index 3
*** Not found cached context for key: [[(Array), List>>addAll:@4#8[][]3], false], cache: 0x9ac54bc
(9) Analyzing [(Array), List>>addAll:@4#8[][]3]::Array>>do: ...
do: aBlock
1 to: self size do: [:i | aBlock value: (self at: i)]
!
Initial pass on Array>>do:
*** Not found cached context for key: [[(Array)], false], cache: 0x9ac66fc
(10) Analyzing [(Array)]::Array>>size ...
size
" compute number of elements "
<4 self>
!
Initial pass on Array>>size
[(Array)]::Array>>size -> (SmallInt)
captureContext of 6 : Analyzing block Array>>do:@7#9[][]
writing siteIndex: 6
writing 0x9ac60c8 as site index 6
*** Not found cached context for key: [[1, (SmallInt), Array>>do:@7#9[][]6], false], cache: 0x9ac7d7c
(11) Analyzing [1, (SmallInt), Array>>do:@7#9[][]6]::Number>>to:do: ...
to: limit do: aBlock | i |
" optimize arithmetic loops "
i <- self.
[ i <= limit ] whileTrue:
[ aBlock value: i. i <- i + 1 ]
!
Initial pass on Number>>to:do:
Adding subtype to 25 : 1
Tau value is 1
Adding subtype to 25 : 1
Tau value is 1
*** Not found cached context for key: [[Array>>do:@7#9[][]6, 1], false], cache: 0x9aca56c
(12) Analyzing [Array>>do:@7#9[][]6, 1]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Array>>do:@7#9[][]6, [1]] -> 0x9acd8e0 (index 13), cache size 1
(13) Analyzing block [1]::Array>>do:@7#9[][]6 ...
Initial pass on Array>>do:@7
*** Not found cached context for key: [[(Array), 1], false], cache: 0x9acc1d4
(14) Analyzing [(Array), 1]::Array>>at: ...
at: index
<24 self index>.
(self includesKey: index) ifFalse: [ self badIndex: index ].
self primitiveFailed
!
Initial pass on Array>>at:
[(Array), 1]::Array>>at: -> *
*** Not found cached context for key: [[List>>addAll:@4#8[][]3, *], false], cache: 0x9aca56c
(15) Analyzing [List>>addAll:@4#8[][]3, *]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [List>>addAll:@4#8[][]3, [*]] -> 0x9ace938 (index 16), cache size 2
(16) Analyzing block [*]::List>>addAll:@4#8[][]3 ...
Initial pass on List>>addAll:@4
*** Not found cached context for key: [[(List), *], false], cache: 0x9acf1fc
(17) Analyzing [(List), *]::List>>addLast: ...
addLast: anElement
elements isNil
ifTrue: [ self add: anElement]
ifFalse: [ elements addLast: anElement. size <- size + 1. ].
^ anElement
!
Initial pass on List>>addLast:
*** Not found cached context for key: [[(List), *], false], cache: 0x9ad13fc
(18) Analyzing [(List), *]::List>>add: ...
add: anElement
elements <- Link value: anElement next: elements.
size <- size + 1.
^ anElement
!
Initial pass on List>>add:
*** Not found cached context for key: [[Link, *, ?], false], cache: 0x9ad2a24
(19) Analyzing [Link, *, ?]::MetaLink>>value:next: ...
value: v next: n | new |
" return a new link with the given fields "
new <- self new.
self in: new at: 1 put: v.
self in: new at: 2 put: n.
^ new
!
Initial pass on MetaLink>>value:next:
*** Not found cached context for key: [[Link], false], cache: 0x9ac1f24
(20) Analyzing [Link]::Class>>new ...
new
" return a new instance of ourselves "
<7 self size>
!
Initial pass on Class>>new
[Link]::Class>>new -> (Link)
*** Not found cached context for key: [[Link, (Link), 1, *], false], cache: 0x9ac3dc4
(21) Analyzing [Link, (Link), 1, *]::MetaObject>>in:at:put: ...
in: object at: index put: value
" change data field in object, used during initialization "
" returns the intialized object "
<5 value object index>
!
Initial pass on MetaObject>>in:at:put:
[Link, (Link), 1, *]::MetaObject>>in:at:put: -> *
*** Not found cached context for key: [[Link, (Link), 2, ?], false], cache: 0x9ac3dc4
(22) Analyzing [Link, (Link), 2, ?]::MetaObject>>in:at:put: ...
in: object at: index put: value
" change data field in object, used during initialization "
" returns the intialized object "
<5 value object index>
!
Initial pass on MetaObject>>in:at:put:
[Link, (Link), 2, ?]::MetaObject>>in:at:put: -> *
[Link, *, ?]::MetaLink>>value:next: -> (Link)
[(List), *]::List>>add: -> *
Induction pass on List>>addLast: (0)
*** Found cached context for key: [[(List), *], false], cache: 0x9ad13fc
[(List), *]::List>>addLast: -> *
[*]::List>>addAll:@4#8[][]3 -> (*)
[List>>addAll:@4#8[][]3, *]::Block>>value: -> *
[1]::Array>>do:@7#9[][]6 -> (*)
[Array>>do:@7#9[][]6, 1]::Block>>value: -> *
Adding subtype to 25 : 1
Tau value is 1
Induction pass on Number>>to:do: (0)
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
*** Not found cached context for key: [[Array>>do:@7#9[][]6, (SmallInt)], false], cache: 0x9aca56c
(23) Analyzing [Array>>do:@7#9[][]6, (SmallInt)]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Array>>do:@7#9[][]6, [(SmallInt)]] -> 0x9ad2908 (index 24), cache size 3
(24) Analyzing block [(SmallInt)]::Array>>do:@7#9[][]6 ...
Initial pass on Array>>do:@7
*** Not found cached context for key: [[(Array), (SmallInt)], false], cache: 0x9acc1d4
(25) Analyzing [(Array), (SmallInt)]::Array>>at: ...
at: index
<24 self index>.
(self includesKey: index) ifFalse: [ self badIndex: index ].
self primitiveFailed
!
Initial pass on Array>>at:
[(Array), (SmallInt)]::Array>>at: -> *
*** Found cached context for key: [[List>>addAll:@4#8[][]3, *], false], cache: 0x9aca56c
[(SmallInt)]::Array>>do:@7#9[][]6 -> (*)
[Array>>do:@7#9[][]6, (SmallInt)]::Block>>value: -> *
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
[1, (SmallInt), Array>>do:@7#9[][]6]::Number>>to:do: -> 1
[(Array), List>>addAll:@4#8[][]3]::Array>>do: -> (Array)
[(List), (Array)]::List>>addAll: -> (List)
[(Array)]::Collection>>asList -> (List)
*** Not found cached context for key: [[(List), Collection>>sort@4#2[][]3], true], cache: 0x9ab6ffc
(26) Analyzing [(List), Collection>>sort@4#2[][]3]::Collection>>sort: ...
sort: criteria | left right mediane |
(self size < 2) ifTrue: [^self].
mediane <- self popFirst.
left <- List new.
right <- List new.
self do: [ :x |
(criteria value: x value: mediane)
ifTrue: [ left add: x ]
ifFalse: [ right add: x ] ].
left <- left sort: criteria.
right <- right sort: criteria.
right add: mediane.
^ left appendList: right
!
Initial pass on Collection>>sort:
*** Not found cached context for key: [[(List)], false], cache: 0x9ac66fc
(27) Analyzing [(List)]::List>>size ...
size
^size
!
Initial pass on List>>size
[(List)]::List>>size -> ?
*** Not found cached context for key: [[(List)], false], cache: 0x9ad9a34
(28) Analyzing [(List)]::List>>popFirst ...
popFirst | value |
elements isNil
ifTrue: [ self emptyCollection ]
ifFalse: [
value <- elements value.
elements <- elements next.
size <- size - 1.
^value ]
!
Initial pass on List>>popFirst
*** Not found cached context for key: [[(List)], false], cache: 0x9adc20c
(29) Analyzing [(List)]::Collection>>emptyCollection ...
emptyCollection
self error: (self class printString + ' is empty')
!
Initial pass on Collection>>emptyCollection
*** Not found cached context for key: [[(List)], false], cache: 0x9adf604
(30) Analyzing [(List)]::Object>>class ...
class
<2 self>
!
Initial pass on Object>>class
[(List)]::Object>>class -> List
*** Not found cached context for key: [[List], false], cache: 0x9add68c
(31) Analyzing [List]::Class>>printString ...
printString
" just return our name "
^ name printString
!
Initial pass on Class>>printString
[List]::Class>>printString -> *
*** Not found cached context for key: [[(List), *], false], cache: 0x9ade0ac
(32) Analyzing [(List), *]::Object>>error: ...
error: str
" print the message "
'ERROR' printNl.
String newline print.
str printNl.
" then halt "
<19>
!
Initial pass on Object>>error:
*** Not found cached context for key: [['ERROR'], false], cache: 0x9ae1f44
(33) Analyzing ['ERROR']::Object>>printNl ...
printNl
self print. Char newline print
!
Initial pass on Object>>printNl
*** Not found cached context for key: [['ERROR'], false], cache: 0x9ae0afc
(34) Analyzing ['ERROR']::Object>>print ...
print
self printString do: [ :c | c print ]
!
Initial pass on Object>>print
*** Not found cached context for key: [['ERROR'], false], cache: 0x9add68c
(35) Analyzing ['ERROR']::String>>printString ...
printString
^ self
!
Initial pass on String>>printString
['ERROR']::String>>printString -> 'ERROR'
captureContext of 5 : Analyzing block Object>>print@6#34[][]
writing siteIndex: 5
writing 0x9ae13e8 as site index 5
*** Not found cached context for key: [['ERROR', Object>>print@6#34[][]5], false], cache: 0x9ac54bc
(36) Analyzing ['ERROR', Object>>print@6#34[][]5]::Array>>do: ...
do: aBlock
1 to: self size do: [:i | aBlock value: (self at: i)]
!
Initial pass on Array>>do:
*** Not found cached context for key: [['ERROR'], false], cache: 0x9ac66fc
(37) Analyzing ['ERROR']::Array>>size ...
size
" compute number of elements "
<4 self>
!
Initial pass on Array>>size
['ERROR']::Array>>size -> 5
captureContext of 6 : Analyzing block Array>>do:@7#36[][]
writing siteIndex: 6
writing 0x9ac60c8 as site index 6
*** Not found cached context for key: [[1, 5, Array>>do:@7#36[][]6], false], cache: 0x9ac7d7c
(38) Analyzing [1, 5, Array>>do:@7#36[][]6]::Number>>to:do: ...
to: limit do: aBlock | i |
" optimize arithmetic loops "
i <- self.
[ i <= limit ] whileTrue:
[ aBlock value: i. i <- i + 1 ]
!
Initial pass on Number>>to:do:
Adding subtype to 25 : 1
Tau value is 1
Adding subtype to 25 : 1
Tau value is 1
*** Not found cached context for key: [[Array>>do:@7#36[][]6, 1], false], cache: 0x9aca56c
(39) Analyzing [Array>>do:@7#36[][]6, 1]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Array>>do:@7#36[][]6, [1]] -> 0x9ae4b18 (index 40), cache size 4
(40) Analyzing block [1]::Array>>do:@7#36[][]6 ...
Initial pass on Array>>do:@7
*** Not found cached context for key: [['ERROR', 1], false], cache: 0x9acc1d4
(41) Analyzing ['ERROR', 1]::String>>at: ...
at: index
^self at: index ifAbsent: [ self badIndex: index ]
!
Initial pass on String>>at:
captureContext of 4 : Analyzing block String>>at:@5#41[][]
writing siteIndex: 4
writing 0x9ae61a0 as site index 4
*** Not found cached context for key: [['ERROR', 1, String>>at:@5#41[][]4], false], cache: 0x9ae6cd4
(42) Analyzing ['ERROR', 1, String>>at:@5#41[][]4]::String>>at:ifAbsent: ...
at: index ifAbsent: exceptionBlock | c |
c <- self basicAt: index.
(c isNil)
ifTrue: [ ^ exceptionBlock value ]
ifFalse: [ ^ Char new: c ]
!
Initial pass on String>>at:ifAbsent:
*** Not found cached context for key: [['ERROR', 1], false], cache: 0x9ae8ca4
(43) Analyzing ['ERROR', 1]::String>>basicAt: ...
basicAt: index
<21 self index>.
^nil
!
Initial pass on String>>basicAt:
['ERROR', 1]::String>>basicAt: -> ?
*** Not found cached context for key: [[String>>at:@5#41[][]4], false], cache: 0x9ae9914
(44) Analyzing [String>>at:@5#41[][]4]::Block>>value ...
value
" start block execution "
<8 self>.
(self argCount)
!
Initial pass on Block>>value
Cached block context [String>>at:@5#41[][]4, []] -> 0x9aec9f0 (index 45), cache size 5
(45) Analyzing block []::String>>at:@5#41[][]4 ...
Initial pass on String>>at:@5
*** Not found cached context for key: [['ERROR', 1], false], cache: 0x9aead6c
(46) Analyzing ['ERROR', 1]::Array>>badIndex: ...
badIndex: index
self error: 'array indexing error (index ' + index printString + ', length ' + self size printString + ')'
!
Initial pass on Array>>badIndex:
*** Not found cached context for key: [[1], false], cache: 0x9add68c
(47) Analyzing [1]::Number>>printString ...
printString
^self printWidth: 1 base: 10
!
Initial pass on Number>>printString
*** Not found cached context for key: [[1, 1, 10], false], cache: 0x9aed5bc
(48) Analyzing [1, 1, 10]::Number>>printWidth:base: ...
printWidth: width base: base | res n dig wasNeg wide |
res <- ''.
(self negative) ifTrue: [
wasNeg <- true.
wide <- width-1.
n <- self negated
] ifFalse: [
wasNeg <- false.
wide <- width.
n <- self
].
[true] whileTrue: [
res <- ((n rem: base) asDigit) + res.
n <- n quo: base.
(n = 0) ifTrue: [
((res size)+1) to: wide do: [:ignore|
res <- '0' + res
].
wasNeg ifTrue: [ res <- '-' + res ].
^res
]
]
!
Initial pass on Number>>printWidth:base:
*** Not found cached context for key: [[1], false], cache: 0x9af5384
(49) Analyzing [1]::Number>>negative ...
negative
^self < 0
!
Initial pass on Number>>negative
[1]::Number>>negative -> false
Adding subtype to 97 : ?
Adding subtype to 97 : 1
Tau value is ?
Adding subtype to 98 : ''
Tau value is ''
Adding subtype to 97 : ?
Adding subtype to 97 : 1
Tau value is ?
Adding subtype to 100 : ?
Adding subtype to 100 : 1
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#48[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 101 : ?
Adding subtype to 101 : false
Tau value is ?
*** Not found cached context for key: [['-', *], false], cache: 0x9af7904
(50) Analyzing ['-', *]::Array>>+ ...
+ aValue | size1 size2 newValue |
" catenate two strings together "
size1 <- self size.
size2 <- aValue size.
newValue <- self class new: (size1 + size2).
newValue replaceFrom: 1 to: size1 with: self.
newValue replaceFrom: size1+1 to: size1+size2 with: aValue.
^ newValue
!
Initial pass on Array>>+
*** Not found cached context for key: [['-'], false], cache: 0x9ac66fc
(51) Analyzing ['-']::Array>>size ...
size
" compute number of elements "
<4 self>
!
Initial pass on Array>>size
['-']::Array>>size -> 1
*** Not found cached context for key: [['-'], false], cache: 0x9adf604
(52) Analyzing ['-']::Object>>class ...
class
<2 self>
!
Initial pass on Object>>class
['-']::Object>>class -> String
*** Not found cached context for key: [[1, *], false], cache: 0x9af7904
(53) Analyzing [1, *]::SmallInt>>+ ...
+ arg
<10 self arg>.
(arg isMemberOf: SmallInt) ifFalse: [^self + arg asSmallInt].
self primitiveFailed
!
Initial pass on SmallInt>>+
[1, *]::SmallInt>>+ -> *
*** Not found cached context for key: [[String, *], false], cache: 0x9ab890c
(54) Analyzing [String, *]::MetaString>>new: ...
new: size
<20 self size>
!
Initial pass on MetaString>>new:
[String, *]::MetaString>>new: -> (String)
*** Not found cached context for key: [[(String), 1, 1, '-'], false], cache: 0x9afd9b4
(55) Analyzing [(String), 1, 1, '-']::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), 1, 1, '-', 1], false], cache: 0x9afe7dc
(56) Analyzing [(String), 1, 1, '-', 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), 1, 1, '-', 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), 1, 1, '-']::Array>>replaceFrom:to:with: -> *
*** Found cached context for key: [[1, *], false], cache: 0x9af7904
*** Not found cached context for key: [[(String), 2, *, *], false], cache: 0x9afd9b4
(57) Analyzing [(String), 2, *, *]::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), 2, *, *, 1], false], cache: 0x9afe7dc
(58) Analyzing [(String), 2, *, *, 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), 2, *, *, 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), 2, *, *]::Array>>replaceFrom:to:with: -> *
['-', *]::Array>>+ -> (String)
Adding subtype to 102 : *
Adding subtype to 102 : (String)
Tau value is *
analyzing potential closure args for 65 :: [*, ?, Number>>printWidth:base:@75#48[0][0]65]
adding closure node 65 reads [0] writes [0]
Base pass on Number>>printWidth:base: (0)
*** Found cached context for key: [[1], false], cache: 0x9af5384
Adding subtype to 113 : ?
Adding subtype to 113 : 1
Tau value is ?
Adding subtype to 114 : ''
Tau value is ''
Adding subtype to 113 : ?
Adding subtype to 113 : 1
Tau value is ?
Adding subtype to 116 : ?
Adding subtype to 116 : 1
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#48[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 118 : ?
Adding subtype to 118 : false
Tau value is ?
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 119 : (String)
Adding subtype to 119 : ?
Tau value is ?
Induction pass on Number>>printWidth:base: (0)
*** Found cached context for key: [[1], false], cache: 0x9af5384
Adding subtype to 113 : ?
Adding subtype to 113 : *
Adding subtype to 113 : 1
Tau value is ?
Adding subtype to 114 : ''
Adding subtype to 114 : *
Tau value is *
Adding subtype to 113 : ?
Adding subtype to 113 : *
Adding subtype to 113 : 1
Tau value is ?
Adding subtype to 116 : ?
Adding subtype to 116 : 1
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#48[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 118 : ?
Adding subtype to 118 : false
Tau value is ?
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 119 : (String)
Adding subtype to 119 : ?
Tau value is ?
[1, 1, 10]::Number>>printWidth:base: -> (*, ?)
[1]::Number>>printString -> (*, ?)
*** Not found cached context for key: [['array indexing error (index ', (*, ?)], false], cache: 0x9af7904
(59) Analyzing ['array indexing error (index ', (*, ?)]::Array>>+ ...
+ aValue | size1 size2 newValue |
" catenate two strings together "
size1 <- self size.
size2 <- aValue size.
newValue <- self class new: (size1 + size2).
newValue replaceFrom: 1 to: size1 with: self.
newValue replaceFrom: size1+1 to: size1+size2 with: aValue.
^ newValue
!
Initial pass on Array>>+
*** Not found cached context for key: [['array indexing error (index '], false], cache: 0x9ac66fc
(60) Analyzing ['array indexing error (index ']::Array>>size ...
size
" compute number of elements "
<4 self>
!
Initial pass on Array>>size
['array indexing error (index ']::Array>>size -> 28
*** Not found cached context for key: [['array indexing error (index '], false], cache: 0x9adf604
(61) Analyzing ['array indexing error (index ']::Object>>class ...
class
<2 self>
!
Initial pass on Object>>class
['array indexing error (index ']::Object>>class -> String
*** Not found cached context for key: [[28, *], false], cache: 0x9af7904
(62) Analyzing [28, *]::SmallInt>>+ ...
+ arg
<10 self arg>.
(arg isMemberOf: SmallInt) ifFalse: [^self + arg asSmallInt].
self primitiveFailed
!
Initial pass on SmallInt>>+
[28, *]::SmallInt>>+ -> *
*** Found cached context for key: [[String, *], false], cache: 0x9ab890c
*** Not found cached context for key: [[(String), 1, 28, 'array indexing error (index '], false], cache: 0x9afd9b4
(63) Analyzing [(String), 1, 28, 'array indexing error (index ']::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), 1, 28, 'array indexing error (index ', 1], false], cache: 0x9afe7dc
(64) Analyzing [(String), 1, 28, 'array indexing error (index ', 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), 1, 28, 'array indexing error (index ', 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), 1, 28, 'array indexing error (index ']::Array>>replaceFrom:to:with: -> *
*** Found cached context for key: [[28, *], false], cache: 0x9af7904
*** Not found cached context for key: [[(String), 29, *, (*, ?)], false], cache: 0x9afd9b4
(65) Analyzing [(String), 29, *, (*, ?)]::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), 29, *, (*, ?), 1], false], cache: 0x9afe7dc
(66) Analyzing [(String), 29, *, (*, ?), 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), 29, *, (*, ?), 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), 29, *, (*, ?)]::Array>>replaceFrom:to:with: -> *
['array indexing error (index ', (*, ?)]::Array>>+ -> (String)
*** Not found cached context for key: [[(String), ', length '], false], cache: 0x9af7904
(67) Analyzing [(String), ', length ']::Array>>+ ...
+ aValue | size1 size2 newValue |
" catenate two strings together "
size1 <- self size.
size2 <- aValue size.
newValue <- self class new: (size1 + size2).
newValue replaceFrom: 1 to: size1 with: self.
newValue replaceFrom: size1+1 to: size1+size2 with: aValue.
^ newValue
!
Initial pass on Array>>+
*** Not found cached context for key: [[(String)], false], cache: 0x9ac66fc
(68) Analyzing [(String)]::Array>>size ...
size
" compute number of elements "
<4 self>
!
Initial pass on Array>>size
[(String)]::Array>>size -> (SmallInt)
*** Not found cached context for key: [[', length '], false], cache: 0x9ac66fc
(69) Analyzing [', length ']::Array>>size ...
size
" compute number of elements "
<4 self>
!
Initial pass on Array>>size
[', length ']::Array>>size -> 9
*** Not found cached context for key: [[(String)], false], cache: 0x9adf604
(70) Analyzing [(String)]::Object>>class ...
class
<2 self>
!
Initial pass on Object>>class
[(String)]::Object>>class -> String
*** Not found cached context for key: [[String, (SmallInt)], false], cache: 0x9ab890c
(71) Analyzing [String, (SmallInt)]::MetaString>>new: ...
new: size
<20 self size>
!
Initial pass on MetaString>>new:
[String, (SmallInt)]::MetaString>>new: -> (String)
*** Not found cached context for key: [[(String), 1, (SmallInt), (String)], false], cache: 0x9afd9b4
(72) Analyzing [(String), 1, (SmallInt), (String)]::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), 1, (SmallInt), (String), 1], false], cache: 0x9afe7dc
(73) Analyzing [(String), 1, (SmallInt), (String), 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), 1, (SmallInt), (String), 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), 1, (SmallInt), (String)]::Array>>replaceFrom:to:with: -> *
*** Not found cached context for key: [[(String), (SmallInt), (SmallInt), ', length '], false], cache: 0x9afd9b4
(74) Analyzing [(String), (SmallInt), (SmallInt), ', length ']::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), (SmallInt), (SmallInt), ', length ', 1], false], cache: 0x9afe7dc
(75) Analyzing [(String), (SmallInt), (SmallInt), ', length ', 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), (SmallInt), (SmallInt), ', length ', 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), (SmallInt), (SmallInt), ', length ']::Array>>replaceFrom:to:with: -> *
[(String), ', length ']::Array>>+ -> (String)
*** Found cached context for key: [['ERROR'], false], cache: 0x9ac66fc
*** Not found cached context for key: [[5], false], cache: 0x9add68c
(76) Analyzing [5]::Number>>printString ...
printString
^self printWidth: 1 base: 10
!
Initial pass on Number>>printString
*** Not found cached context for key: [[5, 1, 10], false], cache: 0x9aed5bc
(77) Analyzing [5, 1, 10]::Number>>printWidth:base: ...
printWidth: width base: base | res n dig wasNeg wide |
res <- ''.
(self negative) ifTrue: [
wasNeg <- true.
wide <- width-1.
n <- self negated
] ifFalse: [
wasNeg <- false.
wide <- width.
n <- self
].
[true] whileTrue: [
res <- ((n rem: base) asDigit) + res.
n <- n quo: base.
(n = 0) ifTrue: [
((res size)+1) to: wide do: [:ignore|
res <- '0' + res
].
wasNeg ifTrue: [ res <- '-' + res ].
^res
]
]
!
Initial pass on Number>>printWidth:base:
*** Not found cached context for key: [[5], false], cache: 0x9af5384
(78) Analyzing [5]::Number>>negative ...
negative
^self < 0
!
Initial pass on Number>>negative
[5]::Number>>negative -> false
Adding subtype to 113 : ?
Adding subtype to 113 : 5
Tau value is ?
Adding subtype to 114 : ''
Tau value is ''
Adding subtype to 113 : ?
Adding subtype to 113 : 5
Tau value is ?
Adding subtype to 116 : ?
Adding subtype to 116 : 1
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#77[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 118 : ?
Adding subtype to 118 : false
Tau value is ?
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 119 : (String)
Adding subtype to 119 : ?
Tau value is ?
analyzing potential closure args for 65 :: [*, ?, Number>>printWidth:base:@75#77[0][0]65]
adding closure node 65 reads [0] writes [0]
Base pass on Number>>printWidth:base: (0)
*** Found cached context for key: [[5], false], cache: 0x9af5384
Adding subtype to 130 : ?
Adding subtype to 130 : 5
Tau value is ?
Adding subtype to 131 : ''
Tau value is ''
Adding subtype to 130 : ?
Adding subtype to 130 : 5
Tau value is ?
Adding subtype to 133 : ?
Adding subtype to 133 : 1
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#77[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 135 : ?
Adding subtype to 135 : false
Tau value is ?
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 136 : (String)
Adding subtype to 136 : ?
Tau value is ?
Induction pass on Number>>printWidth:base: (0)
*** Found cached context for key: [[5], false], cache: 0x9af5384
Adding subtype to 130 : ?
Adding subtype to 130 : *
Adding subtype to 130 : 5
Tau value is ?
Adding subtype to 131 : ''
Adding subtype to 131 : *
Tau value is *
Adding subtype to 130 : ?
Adding subtype to 130 : *
Adding subtype to 130 : 5
Tau value is ?
Adding subtype to 133 : ?
Adding subtype to 133 : 1
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#77[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 135 : ?
Adding subtype to 135 : false
Tau value is ?
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 136 : (String)
Adding subtype to 136 : ?
Tau value is ?
[5, 1, 10]::Number>>printWidth:base: -> ?
[5]::Number>>printString -> ?
*** Not found cached context for key: [[(String), ?], false], cache: 0x9af7904
(79) Analyzing [(String), ?]::Array>>+ ...
+ aValue | size1 size2 newValue |
" catenate two strings together "
size1 <- self size.
size2 <- aValue size.
newValue <- self class new: (size1 + size2).
newValue replaceFrom: 1 to: size1 with: self.
newValue replaceFrom: size1+1 to: size1+size2 with: aValue.
^ newValue
!
Initial pass on Array>>+
*** Found cached context for key: [[(String)], false], cache: 0x9ac66fc
*** Found cached context for key: [[(String)], false], cache: 0x9adf604
*** Not found cached context for key: [[(SmallInt), *], false], cache: 0x9af7904
(80) Analyzing [(SmallInt), *]::SmallInt>>+ ...
+ arg
<10 self arg>.
(arg isMemberOf: SmallInt) ifFalse: [^self + arg asSmallInt].
self primitiveFailed
!
Initial pass on SmallInt>>+
[(SmallInt), *]::SmallInt>>+ -> *
*** Found cached context for key: [[String, *], false], cache: 0x9ab890c
*** Found cached context for key: [[(String), 1, (SmallInt), (String)], false], cache: 0x9afd9b4
*** Found cached context for key: [[(SmallInt), *], false], cache: 0x9af7904
*** Not found cached context for key: [[(String), (SmallInt), *, ?], false], cache: 0x9afd9b4
(81) Analyzing [(String), (SmallInt), *, ?]::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), (SmallInt), *, ?, 1], false], cache: 0x9afe7dc
(82) Analyzing [(String), (SmallInt), *, ?, 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), (SmallInt), *, ?, 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), (SmallInt), *, ?]::Array>>replaceFrom:to:with: -> *
[(String), ?]::Array>>+ -> (String)
*** Not found cached context for key: [[(String), ')'], false], cache: 0x9af7904
(83) Analyzing [(String), ')']::Array>>+ ...
+ aValue | size1 size2 newValue |
" catenate two strings together "
size1 <- self size.
size2 <- aValue size.
newValue <- self class new: (size1 + size2).
newValue replaceFrom: 1 to: size1 with: self.
newValue replaceFrom: size1+1 to: size1+size2 with: aValue.
^ newValue
!
Initial pass on Array>>+
*** Found cached context for key: [[(String)], false], cache: 0x9ac66fc
*** Not found cached context for key: [[')'], false], cache: 0x9ac66fc
(84) Analyzing [')']::Array>>size ...
size
" compute number of elements "
<4 self>
!
Initial pass on Array>>size
[')']::Array>>size -> 1
*** Found cached context for key: [[(String)], false], cache: 0x9adf604
*** Found cached context for key: [[String, (SmallInt)], false], cache: 0x9ab890c
*** Found cached context for key: [[(String), 1, (SmallInt), (String)], false], cache: 0x9afd9b4
*** Not found cached context for key: [[(String), (SmallInt), (SmallInt), ')'], false], cache: 0x9afd9b4
(85) Analyzing [(String), (SmallInt), (SmallInt), ')']::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), (SmallInt), (SmallInt), ')', 1], false], cache: 0x9afe7dc
(86) Analyzing [(String), (SmallInt), (SmallInt), ')', 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), (SmallInt), (SmallInt), ')', 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), (SmallInt), (SmallInt), ')']::Array>>replaceFrom:to:with: -> *
[(String), ')']::Array>>+ -> (String)
*** Not found cached context for key: [['ERROR', (String)], false], cache: 0x9ade0ac
(87) Analyzing ['ERROR', (String)]::Object>>error: ...
error: str
" print the message "
'ERROR' printNl.
String newline print.
str printNl.
" then halt "
<19>
!
Initial pass on Object>>error:
*** Found cached context for key: [['ERROR'], false], cache: 0x9ae1f44
*** Context ['ERROR']::Object>>printNl recursively calls itself!
*** Not found cached context for key: [[String], false], cache: 0x9b07fbc
(88) Analyzing [String]::MetaString>>newline ...
newline
^ Char newline asString
!
Initial pass on MetaString>>newline
*** Not found cached context for key: [[Char], false], cache: 0x9b07fbc
(89) Analyzing [Char]::MetaChar>>newline ...
newline
" return newline character "
^ self new: 10
!
Initial pass on MetaChar>>newline
*** Not found cached context for key: [[Char, 10], false], cache: 0x9ab890c
(90) Analyzing [Char, 10]::MetaChar>>new: ...
new: value
" return unique Char for ASCII value (or EOF) "
(value < 257) ifTrue: [ ^ chars at: value+1 ].
" otherwise build a custom Char "
^ self basicNew: value
!
Initial pass on MetaChar>>new:
[Char, 10]::MetaChar>>new: -> *
[Char]::MetaChar>>newline -> *
[String]::MetaString>>newline -> *
*** Not found cached context for key: [[(String)], false], cache: 0x9ae1f44
(91) Analyzing [(String)]::Object>>printNl ...
printNl
self print. Char newline print
!
Initial pass on Object>>printNl
*** Not found cached context for key: [[(String)], false], cache: 0x9ae0afc
(92) Analyzing [(String)]::Object>>print ...
print
self printString do: [ :c | c print ]
!
Initial pass on Object>>print
*** Not found cached context for key: [[(String)], false], cache: 0x9add68c
(93) Analyzing [(String)]::String>>printString ...
printString
^ self
!
Initial pass on String>>printString
[(String)]::String>>printString -> (String)
captureContext of 5 : Analyzing block Object>>print@6#92[][]
writing siteIndex: 5
writing 0x9ae13e8 as site index 5
*** Not found cached context for key: [[(String), Object>>print@6#92[][]5], false], cache: 0x9ac54bc
(94) Analyzing [(String), Object>>print@6#92[][]5]::Array>>do: ...
do: aBlock
1 to: self size do: [:i | aBlock value: (self at: i)]
!
Initial pass on Array>>do:
*** Found cached context for key: [[(String)], false], cache: 0x9ac66fc
captureContext of 6 : Analyzing block Array>>do:@7#94[][]
writing siteIndex: 6
writing 0x9ac60c8 as site index 6
*** Not found cached context for key: [[1, (SmallInt), Array>>do:@7#94[][]6], false], cache: 0x9ac7d7c
(95) Analyzing [1, (SmallInt), Array>>do:@7#94[][]6]::Number>>to:do: ...
to: limit do: aBlock | i |
" optimize arithmetic loops "
i <- self.
[ i <= limit ] whileTrue:
[ aBlock value: i. i <- i + 1 ]
!
Initial pass on Number>>to:do:
Adding subtype to 25 : 1
Tau value is 1
Adding subtype to 25 : 1
Tau value is 1
*** Not found cached context for key: [[Array>>do:@7#94[][]6, 1], false], cache: 0x9aca56c
(96) Analyzing [Array>>do:@7#94[][]6, 1]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Array>>do:@7#94[][]6, [1]] -> 0x9b0d768 (index 97), cache size 6
(97) Analyzing block [1]::Array>>do:@7#94[][]6 ...
Initial pass on Array>>do:@7
*** Not found cached context for key: [[(String), 1], false], cache: 0x9acc1d4
(98) Analyzing [(String), 1]::String>>at: ...
at: index
^self at: index ifAbsent: [ self badIndex: index ]
!
Initial pass on String>>at:
captureContext of 4 : Analyzing block String>>at:@5#98[][]
writing siteIndex: 4
writing 0x9ae61a0 as site index 4
*** Not found cached context for key: [[(String), 1, String>>at:@5#98[][]4], false], cache: 0x9ae6cd4
(99) Analyzing [(String), 1, String>>at:@5#98[][]4]::String>>at:ifAbsent: ...
at: index ifAbsent: exceptionBlock | c |
c <- self basicAt: index.
(c isNil)
ifTrue: [ ^ exceptionBlock value ]
ifFalse: [ ^ Char new: c ]
!
Initial pass on String>>at:ifAbsent:
*** Not found cached context for key: [[(String), 1], false], cache: 0x9ae8ca4
(100) Analyzing [(String), 1]::String>>basicAt: ...
basicAt: index
<21 self index>.
^nil
!
Initial pass on String>>basicAt:
[(String), 1]::String>>basicAt: -> ?
*** Not found cached context for key: [[String>>at:@5#98[][]4], false], cache: 0x9ae9914
(101) Analyzing [String>>at:@5#98[][]4]::Block>>value ...
value
" start block execution "
<8 self>.
(self argCount)
!
Initial pass on Block>>value
Cached block context [String>>at:@5#98[][]4, []] -> 0x9b103e0 (index 102), cache size 7
(102) Analyzing block []::String>>at:@5#98[][]4 ...
Initial pass on String>>at:@5
*** Not found cached context for key: [[(String), 1], false], cache: 0x9aead6c
(103) Analyzing [(String), 1]::Array>>badIndex: ...
badIndex: index
self error: 'array indexing error (index ' + index printString + ', length ' + self size printString + ')'
!
Initial pass on Array>>badIndex:
*** Found cached context for key: [[1], false], cache: 0x9add68c
*** Found cached context for key: [['array indexing error (index ', (*, ?)], false], cache: 0x9af7904
*** Found cached context for key: [[(String), ', length '], false], cache: 0x9af7904
*** Found cached context for key: [[(String)], false], cache: 0x9ac66fc
*** Not found cached context for key: [[(SmallInt)], false], cache: 0x9add68c
(104) Analyzing [(SmallInt)]::Number>>printString ...
printString
^self printWidth: 1 base: 10
!
Initial pass on Number>>printString
*** Not found cached context for key: [[(SmallInt), 1, 10], false], cache: 0x9aed5bc
(105) Analyzing [(SmallInt), 1, 10]::Number>>printWidth:base: ...
printWidth: width base: base | res n dig wasNeg wide |
res <- ''.
(self negative) ifTrue: [
wasNeg <- true.
wide <- width-1.
n <- self negated
] ifFalse: [
wasNeg <- false.
wide <- width.
n <- self
].
[true] whileTrue: [
res <- ((n rem: base) asDigit) + res.
n <- n quo: base.
(n = 0) ifTrue: [
((res size)+1) to: wide do: [:ignore|
res <- '0' + res
].
wasNeg ifTrue: [ res <- '-' + res ].
^res
]
]
!
Initial pass on Number>>printWidth:base:
*** Not found cached context for key: [[(SmallInt)], false], cache: 0x9af5384
(106) Analyzing [(SmallInt)]::Number>>negative ...
negative
^self < 0
!
Initial pass on Number>>negative
[(SmallInt)]::Number>>negative -> (Boolean)
*** Not found cached context for key: [[1, 1], false], cache: 0x9b12a84
(107) Analyzing [1, 1]::SmallInt>>- ...
- arg
<16 self arg>.
(arg isMemberOf: SmallInt) ifFalse: [^self - arg asSmallInt].
self primitiveFailed
!
Initial pass on SmallInt>>-
[1, 1]::SmallInt>>- -> 0
*** Not found cached context for key: [[(SmallInt)], false], cache: 0x9b14edc
(108) Analyzing [(SmallInt)]::Number>>negated ...
negated
^0-self
!
Initial pass on Number>>negated
*** Not found cached context for key: [[0, (SmallInt)], false], cache: 0x9b12a84
(109) Analyzing [0, (SmallInt)]::SmallInt>>- ...
- arg
<16 self arg>.
(arg isMemberOf: SmallInt) ifFalse: [^self - arg asSmallInt].
self primitiveFailed
!
Initial pass on SmallInt>>-
[0, (SmallInt)]::SmallInt>>- -> (SmallInt)
[(SmallInt)]::Number>>negated -> (SmallInt)
Adding subtype to 130 : (SmallInt)
Adding subtype to 130 : ?
Tau value is ?
Adding subtype to 131 : ''
Tau value is ''
Adding subtype to 130 : (SmallInt)
Adding subtype to 130 : ?
Tau value is ?
Adding subtype to 133 : 0
Adding subtype to 133 : ?
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#105[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 135 : true
Adding subtype to 135 : ?
Tau value is ?
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 136 : (String)
Adding subtype to 136 : ?
Tau value is ?
analyzing potential closure args for 65 :: [*, ?, Number>>printWidth:base:@75#105[0][0]65]
adding closure node 65 reads [0] writes [0]
Base pass on Number>>printWidth:base: (0)
*** Found cached context for key: [[(SmallInt)], false], cache: 0x9af5384
*** Found cached context for key: [[1, 1], false], cache: 0x9b12a84
*** Found cached context for key: [[(SmallInt)], false], cache: 0x9b14edc
Adding subtype to 147 : (SmallInt)
Adding subtype to 147 : ?
Tau value is ?
Adding subtype to 148 : ''
Tau value is ''
Adding subtype to 147 : (SmallInt)
Adding subtype to 147 : ?
Tau value is ?
Adding subtype to 150 : 0
Adding subtype to 150 : ?
Tau value is ?
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#105[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 152 : true
Adding subtype to 152 : ?
Tau value is ?
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 153 : (String)
Adding subtype to 153 : ?
Tau value is ?
Induction pass on Number>>printWidth:base: (0)
*** Found cached context for key: [[(SmallInt)], false], cache: 0x9af5384
*** Found cached context for key: [[1, 1], false], cache: 0x9b12a84
*** Found cached context for key: [[(SmallInt)], false], cache: 0x9b14edc
Adding subtype to 147 : (SmallInt)
Adding subtype to 147 : *
Adding subtype to 147 : (SmallInt)
Tau value is *
Adding subtype to 148 : ''
Adding subtype to 148 : *
Tau value is *
Adding subtype to 147 : (SmallInt)
Adding subtype to 147 : *
Adding subtype to 147 : (SmallInt)
Tau value is *
Adding subtype to 150 : 0
Adding subtype to 150 : 1
Tau value is (SmallInt)
captureContext of 65 : Analyzing block Number>>printWidth:base:@75#105[0][0]
writing siteIndex: 65
writing 0x9af1a88 as site index 65
checkClosure 61
checkClosure 61 is not found
checkClosure 59
checkClosure 59 is not found
checkClosure 52
checkClosure 52 is not found
checkClosure 46
checkClosure 46 is not found
TypeLocator : Found assign site: Node 41 :: *, back edge: no
Adding subtype to 152 : true
Adding subtype to 152 : false
Tau value is *
*** Found cached context for key: [['-', *], false], cache: 0x9af7904
Adding subtype to 153 : (String)
Adding subtype to 153 : ?
Tau value is ?
[(SmallInt), 1, 10]::Number>>printWidth:base: -> ?
[(SmallInt)]::Number>>printString -> ?
*** Found cached context for key: [[(String), ?], false], cache: 0x9af7904
*** Found cached context for key: [[(String), ')'], false], cache: 0x9af7904
*** Not found cached context for key: [[(String), (String)], false], cache: 0x9ade0ac
(110) Analyzing [(String), (String)]::Object>>error: ...
error: str
" print the message "
'ERROR' printNl.
String newline print.
str printNl.
" then halt "
<19>
!
Initial pass on Object>>error:
*** Found cached context for key: [['ERROR'], false], cache: 0x9ae1f44
*** Found cached context for key: [[String], false], cache: 0x9b07fbc
*** Found cached context for key: [[(String)], false], cache: 0x9ae1f44
*** Context [(String)]::Object>>printNl recursively calls itself!
[(String), (String)]::Object>>error: -> ?
[(String), 1]::Array>>badIndex: -> (String)
[]::String>>at:@5#98[][]4 -> ((String))
[String>>at:@5#98[][]4]::Block>>value -> (String)
*** Not found cached context for key: [[Char, ?], false], cache: 0x9ab890c
(111) Analyzing [Char, ?]::MetaChar>>new: ...
new: value
" return unique Char for ASCII value (or EOF) "
(value < 257) ifTrue: [ ^ chars at: value+1 ].
" otherwise build a custom Char "
^ self basicNew: value
!
Initial pass on MetaChar>>new:
*** Not found cached context for key: [[Char, ?], false], cache: 0x9afa7a4
(112) Analyzing [Char, ?]::MetaChar>>basicNew: ...
basicNew: value
" create and initialize a new char "
^ self in: self new at: 1 put: value
!
Initial pass on MetaChar>>basicNew:
*** Not found cached context for key: [[Char], false], cache: 0x9ac1f24
(113) Analyzing [Char]::Class>>new ...
new
" return a new instance of ourselves "
<7 self size>
!
Initial pass on Class>>new
[Char]::Class>>new -> (Char)
*** Not found cached context for key: [[Char, (Char), 1, ?], false], cache: 0x9ac3dc4
(114) Analyzing [Char, (Char), 1, ?]::MetaObject>>in:at:put: ...
in: object at: index put: value
" change data field in object, used during initialization "
" returns the intialized object "
<5 value object index>
!
Initial pass on MetaObject>>in:at:put:
[Char, (Char), 1, ?]::MetaObject>>in:at:put: -> *
[Char, ?]::MetaChar>>basicNew: -> *
Induction pass on MetaChar>>new: (0)
*** Found cached context for key: [[Char, ?], false], cache: 0x9afa7a4
[Char, ?]::MetaChar>>new: -> *
Induction pass on String>>at:ifAbsent: (0)
*** Found cached context for key: [[(String), 1], false], cache: 0x9ae8ca4
*** Found cached context for key: [[String>>at:@5#98[][]4], false], cache: 0x9ae9914
*** Found cached context for key: [[Char, ?], false], cache: 0x9ab890c
[(String), 1, String>>at:@5#98[][]4]::String>>at:ifAbsent: -> ((String), *)
[(String), 1]::String>>at: -> ((String), *)
*** Not found cached context for key: [[Object>>print@6#92[][]5, ((String), *)], false], cache: 0x9aca56c
(115) Analyzing [Object>>print@6#92[][]5, ((String), *)]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Object>>print@6#92[][]5, [((String), *)]] -> 0x9b0f478 (index 116), cache size 8
(116) Analyzing block [((String), *)]::Object>>print@6#92[][]5 ...
Initial pass on Object>>print@6
[((String), *)]::Object>>print@6#92[][]5 -> (*)
[Object>>print@6#92[][]5, ((String), *)]::Block>>value: -> *
[1]::Array>>do:@7#94[][]6 -> (*)
[Array>>do:@7#94[][]6, 1]::Block>>value: -> *
Adding subtype to 25 : 1
Tau value is 1
Induction pass on Number>>to:do: (0)
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
*** Not found cached context for key: [[Array>>do:@7#94[][]6, (SmallInt)], false], cache: 0x9aca56c
(117) Analyzing [Array>>do:@7#94[][]6, (SmallInt)]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Array>>do:@7#94[][]6, [(SmallInt)]] -> 0x9b0e218 (index 118), cache size 9
(118) Analyzing block [(SmallInt)]::Array>>do:@7#94[][]6 ...
Initial pass on Array>>do:@7
*** Not found cached context for key: [[(String), (SmallInt)], false], cache: 0x9acc1d4
(119) Analyzing [(String), (SmallInt)]::String>>at: ...
at: index
^self at: index ifAbsent: [ self badIndex: index ]
!
Initial pass on String>>at:
captureContext of 4 : Analyzing block String>>at:@5#119[][]
writing siteIndex: 4
writing 0x9ae61a0 as site index 4
*** Not found cached context for key: [[(String), (SmallInt), String>>at:@5#119[][]4], false], cache: 0x9ae6cd4
(120) Analyzing [(String), (SmallInt), String>>at:@5#119[][]4]::String>>at:ifAbsent: ...
at: index ifAbsent: exceptionBlock | c |
c <- self basicAt: index.
(c isNil)
ifTrue: [ ^ exceptionBlock value ]
ifFalse: [ ^ Char new: c ]
!
Initial pass on String>>at:ifAbsent:
*** Not found cached context for key: [[(String), (SmallInt)], false], cache: 0x9ae8ca4
(121) Analyzing [(String), (SmallInt)]::String>>basicAt: ...
basicAt: index
<21 self index>.
^nil
!
Initial pass on String>>basicAt:
[(String), (SmallInt)]::String>>basicAt: -> ?
*** Not found cached context for key: [[String>>at:@5#119[][]4], false], cache: 0x9ae9914
(122) Analyzing [String>>at:@5#119[][]4]::Block>>value ...
value
" start block execution "
<8 self>.
(self argCount)
!
Initial pass on Block>>value
Cached block context [String>>at:@5#119[][]4, []] -> 0x9b1a9a8 (index 123), cache size 10
(123) Analyzing block []::String>>at:@5#119[][]4 ...
Initial pass on String>>at:@5
*** Not found cached context for key: [[(String), (SmallInt)], false], cache: 0x9aead6c
(124) Analyzing [(String), (SmallInt)]::Array>>badIndex: ...
badIndex: index
self error: 'array indexing error (index ' + index printString + ', length ' + self size printString + ')'
!
Initial pass on Array>>badIndex:
*** Found cached context for key: [[(SmallInt)], false], cache: 0x9add68c
*** Not found cached context for key: [['array indexing error (index ', ?], false], cache: 0x9af7904
(125) Analyzing ['array indexing error (index ', ?]::Array>>+ ...
+ aValue | size1 size2 newValue |
" catenate two strings together "
size1 <- self size.
size2 <- aValue size.
newValue <- self class new: (size1 + size2).
newValue replaceFrom: 1 to: size1 with: self.
newValue replaceFrom: size1+1 to: size1+size2 with: aValue.
^ newValue
!
Initial pass on Array>>+
*** Found cached context for key: [['array indexing error (index '], false], cache: 0x9ac66fc
*** Found cached context for key: [['array indexing error (index '], false], cache: 0x9adf604
*** Found cached context for key: [[28, *], false], cache: 0x9af7904
*** Found cached context for key: [[String, *], false], cache: 0x9ab890c
*** Found cached context for key: [[(String), 1, 28, 'array indexing error (index '], false], cache: 0x9afd9b4
*** Found cached context for key: [[28, *], false], cache: 0x9af7904
*** Not found cached context for key: [[(String), 29, *, ?], false], cache: 0x9afd9b4
(126) Analyzing [(String), 29, *, ?]::Array>>replaceFrom:to:with: ...
replaceFrom: start to: stop with: replacement
^ self replaceFrom: start to: stop with: replacement startingAt: 1
!
Initial pass on Array>>replaceFrom:to:with:
*** Not found cached context for key: [[(String), 29, *, ?, 1], false], cache: 0x9afe7dc
(127) Analyzing [(String), 29, *, ?, 1]::Array>>replaceFrom:to:with:startingAt: ...
replaceFrom: start to: stop with: replacement startingAt: repStart | base |
<38 start stop replacement repStart self>.
"base <- repStart-1."
0 to: (stop - start) do: [:idx|
self at: (idx + start) put:
(replacement at: (idx + repStart))
]
!
Initial pass on Array>>replaceFrom:to:with:startingAt:
[(String), 29, *, ?, 1]::Array>>replaceFrom:to:with:startingAt: -> *
[(String), 29, *, ?]::Array>>replaceFrom:to:with: -> *
['array indexing error (index ', ?]::Array>>+ -> (String)
*** Found cached context for key: [[(String), ', length '], false], cache: 0x9af7904
*** Found cached context for key: [[(String)], false], cache: 0x9ac66fc
*** Found cached context for key: [[(SmallInt)], false], cache: 0x9add68c
*** Found cached context for key: [[(String), ?], false], cache: 0x9af7904
*** Found cached context for key: [[(String), ')'], false], cache: 0x9af7904
*** Found cached context for key: [[(String), (String)], false], cache: 0x9ade0ac
[(String), (SmallInt)]::Array>>badIndex: -> (String)
[]::String>>at:@5#119[][]4 -> ((String))
[String>>at:@5#119[][]4]::Block>>value -> (String)
*** Found cached context for key: [[Char, ?], false], cache: 0x9ab890c
Induction pass on String>>at:ifAbsent: (0)
*** Found cached context for key: [[(String), (SmallInt)], false], cache: 0x9ae8ca4
*** Found cached context for key: [[String>>at:@5#119[][]4], false], cache: 0x9ae9914
*** Found cached context for key: [[Char, ?], false], cache: 0x9ab890c
[(String), (SmallInt), String>>at:@5#119[][]4]::String>>at:ifAbsent: -> ((String), *)
[(String), (SmallInt)]::String>>at: -> ((String), *)
*** Found cached context for key: [[Object>>print@6#92[][]5, ((String), *)], false], cache: 0x9aca56c
[(SmallInt)]::Array>>do:@7#94[][]6 -> (*)
[Array>>do:@7#94[][]6, (SmallInt)]::Block>>value: -> *
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
[1, (SmallInt), Array>>do:@7#94[][]6]::Number>>to:do: -> 1
[(String), Object>>print@6#92[][]5]::Array>>do: -> (String)
[(String)]::Object>>print -> (String)
*** Found cached context for key: [[Char], false], cache: 0x9b07fbc
[(String)]::Object>>printNl -> (String)
['ERROR', (String)]::Object>>error: -> ?
['ERROR', 1]::Array>>badIndex: -> 'ERROR'
[]::String>>at:@5#41[][]4 -> ('ERROR')
[String>>at:@5#41[][]4]::Block>>value -> 'ERROR'
*** Found cached context for key: [[Char, ?], false], cache: 0x9ab890c
Induction pass on String>>at:ifAbsent: (0)
*** Found cached context for key: [['ERROR', 1], false], cache: 0x9ae8ca4
*** Found cached context for key: [[String>>at:@5#41[][]4], false], cache: 0x9ae9914
*** Found cached context for key: [[Char, ?], false], cache: 0x9ab890c
['ERROR', 1, String>>at:@5#41[][]4]::String>>at:ifAbsent: -> ('ERROR', *)
['ERROR', 1]::String>>at: -> ('ERROR', *)
*** Not found cached context for key: [[Object>>print@6#34[][]5, ('ERROR', *)], false], cache: 0x9aca56c
(128) Analyzing [Object>>print@6#34[][]5, ('ERROR', *)]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Object>>print@6#34[][]5, [('ERROR', *)]] -> 0x9b1cd20 (index 129), cache size 11
(129) Analyzing block [('ERROR', *)]::Object>>print@6#34[][]5 ...
Initial pass on Object>>print@6
[('ERROR', *)]::Object>>print@6#34[][]5 -> (*)
[Object>>print@6#34[][]5, ('ERROR', *)]::Block>>value: -> *
[1]::Array>>do:@7#36[][]6 -> (*)
[Array>>do:@7#36[][]6, 1]::Block>>value: -> *
Adding subtype to 25 : 1
Tau value is 1
Induction pass on Number>>to:do: (0)
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
*** Not found cached context for key: [[Array>>do:@7#36[][]6, (SmallInt)], false], cache: 0x9aca56c
(130) Analyzing [Array>>do:@7#36[][]6, (SmallInt)]::Block>>value: ...
value: a
" start block execution "
<8 a self>.
(self argCount)
!
Initial pass on Block>>value:
Cached block context [Array>>do:@7#36[][]6, [(SmallInt)]] -> 0x9b1a460 (index 131), cache size 12
(131) Analyzing block [(SmallInt)]::Array>>do:@7#36[][]6 ...
Initial pass on Array>>do:@7
*** Not found cached context for key: [['ERROR', (SmallInt)], false], cache: 0x9acc1d4
(132) Analyzing ['ERROR', (SmallInt)]::String>>at: ...
at: index
^self at: index ifAbsent: [ self badIndex: index ]
!
Initial pass on String>>at:
captureContext of 4 : Analyzing block String>>at:@5#132[][]
writing siteIndex: 4
writing 0x9ae61a0 as site index 4
*** Not found cached context for key: [['ERROR', (SmallInt), String>>at:@5#132[][]4], false], cache: 0x9ae6cd4
(133) Analyzing ['ERROR', (SmallInt), String>>at:@5#132[][]4]::String>>at:ifAbsent: ...
at: index ifAbsent: exceptionBlock | c |
c <- self basicAt: index.
(c isNil)
ifTrue: [ ^ exceptionBlock value ]
ifFalse: [ ^ Char new: c ]
!
Initial pass on String>>at:ifAbsent:
*** Not found cached context for key: [['ERROR', (SmallInt)], false], cache: 0x9ae8ca4
(134) Analyzing ['ERROR', (SmallInt)]::String>>basicAt: ...
basicAt: index
<21 self index>.
^nil
!
Initial pass on String>>basicAt:
['ERROR', (SmallInt)]::String>>basicAt: -> ?
*** Not found cached context for key: [[String>>at:@5#132[][]4], false], cache: 0x9ae9914
(135) Analyzing [String>>at:@5#132[][]4]::Block>>value ...
value
" start block execution "
<8 self>.
(self argCount)
!
Initial pass on Block>>value
Cached block context [String>>at:@5#132[][]4, []] -> 0x9b1bad8 (index 136), cache size 13
(136) Analyzing block []::String>>at:@5#132[][]4 ...
Initial pass on String>>at:@5
*** Not found cached context for key: [['ERROR', (SmallInt)], false], cache: 0x9aead6c
(137) Analyzing ['ERROR', (SmallInt)]::Array>>badIndex: ...
badIndex: index
self error: 'array indexing error (index ' + index printString + ', length ' + self size printString + ')'
!
Initial pass on Array>>badIndex:
*** Found cached context for key: [[(SmallInt)], false], cache: 0x9add68c
*** Found cached context for key: [['array indexing error (index ', ?], false], cache: 0x9af7904
*** Found cached context for key: [[(String), ', length '], false], cache: 0x9af7904
*** Found cached context for key: [['ERROR'], false], cache: 0x9ac66fc
*** Found cached context for key: [[5], false], cache: 0x9add68c
*** Found cached context for key: [[(String), ?], false], cache: 0x9af7904
*** Found cached context for key: [[(String), ')'], false], cache: 0x9af7904
*** Found cached context for key: [['ERROR', (String)], false], cache: 0x9ade0ac
['ERROR', (SmallInt)]::Array>>badIndex: -> 'ERROR'
[]::String>>at:@5#132[][]4 -> ('ERROR')
[String>>at:@5#132[][]4]::Block>>value -> 'ERROR'
*** Found cached context for key: [[Char, ?], false], cache: 0x9ab890c
Induction pass on String>>at:ifAbsent: (0)
*** Found cached context for key: [['ERROR', (SmallInt)], false], cache: 0x9ae8ca4
*** Found cached context for key: [[String>>at:@5#132[][]4], false], cache: 0x9ae9914
*** Found cached context for key: [[Char, ?], false], cache: 0x9ab890c
['ERROR', (SmallInt), String>>at:@5#132[][]4]::String>>at:ifAbsent: -> ('ERROR', *)
['ERROR', (SmallInt)]::String>>at: -> ('ERROR', *)
*** Found cached context for key: [[Object>>print@6#34[][]5, ('ERROR', *)], false], cache: 0x9aca56c
[(SmallInt)]::Array>>do:@7#36[][]6 -> (*)
[Array>>do:@7#36[][]6, (SmallInt)]::Block>>value: -> *
Adding subtype to 25 : 1
Adding subtype to 25 : 2
Tau value is (SmallInt)
[1, 5, Array>>do:@7#36[][]6]::Number>>to:do: -> 1
['ERROR', Object>>print@6#34[][]5]::Array>>do: -> 'ERROR'
['ERROR']::Object>>print -> 'ERROR'
*** Found cached context for key: [[Char], false], cache: 0x9b07fbc
['ERROR']::Object>>printNl -> 'ERROR'
*** Found cached context for key: [[String], false], cache: 0x9b07fbc
[(List), *]::Object>>error: -> ?
[(List)]::Collection>>emptyCollection -> (List)
Induction pass on List>>popFirst (0)
*** Found cached context for key: [[(List)], false], cache: 0x9adc20c
[(List)]::List>>popFirst -> ((List), *)
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
captureContext of 29 : Analyzing block Collection>>sort:@34#26[1, 2, 0][]
writing siteIndex: 29
writing 0x9ad68a0 as site index 29
TypeLocator : Found assign site: Node 24 :: (List), back edge: no
checkClosure 23
checkClosure 23 is not found
checkClosure 18
checkClosure 18 is not found
TypeLocator : Found assign site: Node 14 :: ((List), *), back edge: no
checkClosure 23
checkClosure 23 is not found
TypeLocator : Found assign site: Node 19 :: (List), back edge: no
*** Not found cached context for key: [[(List), Collection>>sort:@34#26[1, 2, 0][]29], false], cache: 0x9ac54bc
(138) Analyzing [(List), Collection>>sort:@34#26[1, 2, 0][]29]::List>>do: ...
do: aBlock
^ elements notNil ifTrue: [ elements do: aBlock ]
!
Initial pass on List>>do:
phi: * | ? = (*)
Induction pass on List>>do: (0)
phi: * | nil = (*)
[(List), Collection>>sort:@34#26[1, 2, 0][]29]::List>>do: -> *
*** Not found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
(139) Analyzing [(List), Collection>>sort@4#2[][]3]::Collection>>sort: ...
sort: criteria | left right mediane |
(self size < 2) ifTrue: [^self].
mediane <- self popFirst.
left <- List new.
right <- List new.
self do: [ :x |
(criteria value: x value: mediane)
ifTrue: [ left add: x ]
ifFalse: [ right add: x ] ].
left <- left sort: criteria.
right <- right sort: criteria.
right add: mediane.
^ left appendList: right
!
Initial pass on Collection>>sort:
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Found cached context for key: [[(List)], false], cache: 0x9ad9a34
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
captureContext of 29 : Analyzing block Collection>>sort:@34#139[1, 2, 0][]
writing siteIndex: 29
writing 0x9ad68a0 as site index 29
TypeLocator : Found assign site: Node 24 :: (List), back edge: no
checkClosure 23
checkClosure 23 is not found
checkClosure 18
checkClosure 18 is not found
TypeLocator : Found assign site: Node 14 :: ((List), *), back edge: no
checkClosure 23
checkClosure 23 is not found
TypeLocator : Found assign site: Node 19 :: (List), back edge: no
*** Not found cached context for key: [[(List), Collection>>sort:@34#139[1, 2, 0][]29], false], cache: 0x9ac54bc
(140) Analyzing [(List), Collection>>sort:@34#139[1, 2, 0][]29]::List>>do: ...
do: aBlock
^ elements notNil ifTrue: [ elements do: aBlock ]
!
Initial pass on List>>do:
phi: * | ? = (*)
Induction pass on List>>do: (0)
phi: * | nil = (*)
[(List), Collection>>sort:@34#139[1, 2, 0][]29]::List>>do: -> *
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Context [(List), Collection>>sort@4#2[][]3]::Collection>>sort: recursively calls itself!
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Not found cached context for key: [[(List), ((List), *)], false], cache: 0x9ad13fc
(141) Analyzing [(List), ((List), *)]::List>>add: ...
add: anElement
elements <- Link value: anElement next: elements.
size <- size + 1.
^ anElement
!
Initial pass on List>>add:
*** Not found cached context for key: [[Link, ((List), *), ?], false], cache: 0x9ad2a24
(142) Analyzing [Link, ((List), *), ?]::MetaLink>>value:next: ...
value: v next: n | new |
" return a new link with the given fields "
new <- self new.
self in: new at: 1 put: v.
self in: new at: 2 put: n.
^ new
!
Initial pass on MetaLink>>value:next:
*** Found cached context for key: [[Link], false], cache: 0x9ac1f24
*** Not found cached context for key: [[Link, (Link), 1, ((List), *)], false], cache: 0x9ac3dc4
(143) Analyzing [Link, (Link), 1, ((List), *)]::MetaObject>>in:at:put: ...
in: object at: index put: value
" change data field in object, used during initialization "
" returns the intialized object "
<5 value object index>
!
Initial pass on MetaObject>>in:at:put:
[Link, (Link), 1, ((List), *)]::MetaObject>>in:at:put: -> *
*** Found cached context for key: [[Link, (Link), 2, ?], false], cache: 0x9ac3dc4
[Link, ((List), *), ?]::MetaLink>>value:next: -> (Link)
[(List), ((List), *)]::List>>add: -> ((List), *)
*** Not found cached context for key: [[(List), (List)], false], cache: 0x9b251cc
(144) Analyzing [(List), (List)]::List>>appendList: ...
appendList: aList | element |
(elements isNil) ifTrue: [
elements <- aList firstLink.
size <- aList size.
^self
].
element <- elements.
[element next isNil]
whileFalse: [element <- element next].
element next: aList firstLink.
size <- size + aList size.
^self
!
Initial pass on List>>appendList:
*** Not found cached context for key: [[(List)], false], cache: 0x9b293d4
(145) Analyzing [(List)]::List>>firstLink ...
firstLink
^elements
!
Initial pass on List>>firstLink
[(List)]::List>>firstLink -> ?
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
Adding subtype to 54 : ?
Tau value is ?
Adding subtype to 54 : ?
Tau value is ?
Adding subtype to 54 : ?
Tau value is ?
*** Found cached context for key: [[(List)], false], cache: 0x9b293d4
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
Induction pass on List>>appendList: (0)
*** Found cached context for key: [[(List)], false], cache: 0x9b293d4
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
Adding subtype to 54 : ?
Adding subtype to 54 : *
Tau value is ?
Adding subtype to 54 : ?
Adding subtype to 54 : *
Tau value is ?
Adding subtype to 54 : ?
Adding subtype to 54 : *
Tau value is ?
*** Found cached context for key: [[(List)], false], cache: 0x9b293d4
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
[(List), (List)]::List>>appendList: -> (List)
analyzing potential closure args for 29 :: [(List), Collection>>sort:@34#139[1, 2, 0][]29]
adding closure node 29 reads [1, 2, 0] writes []
Base pass on Collection>>sort: (0)
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Found cached context for key: [[(List)], false], cache: 0x9ad9a34
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
captureContext of 29 : Analyzing block Collection>>sort:@34#139[1, 2, 0][]
writing siteIndex: 29
writing 0x9ad68a0 as site index 29
TypeLocator : Found assign site: Node 24 :: (List), back edge: no
checkClosure 23
checkClosure 23 is not found
checkClosure 18
checkClosure 18 is not found
TypeLocator : Found assign site: Node 14 :: ((List), *), back edge: no
checkClosure 23
checkClosure 23 is not found
TypeLocator : Found assign site: Node 19 :: (List), back edge: no
*** Found cached context for key: [[(List), Collection>>sort:@34#139[1, 2, 0][]29], false], cache: 0x9ac54bc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), ((List), *)], false], cache: 0x9ad13fc
*** Found cached context for key: [[(List), (List)], false], cache: 0x9b251cc
Induction pass on Collection>>sort: (0)
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Found cached context for key: [[(List)], false], cache: 0x9ad9a34
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
captureContext of 29 : Analyzing block Collection>>sort:@34#139[1, 2, 0][]
writing siteIndex: 29
writing 0x9ad68a0 as site index 29
TypeLocator : Found assign site: Node 24 :: (List), back edge: no
checkClosure 23
checkClosure 23 is not found
checkClosure 18
checkClosure 18 is not found
TypeLocator : Found assign site: Node 14 :: ((List), *), back edge: no
checkClosure 23
checkClosure 23 is not found
TypeLocator : Found assign site: Node 19 :: (List), back edge: no
*** Found cached context for key: [[(List), Collection>>sort:@34#139[1, 2, 0][]29], false], cache: 0x9ac54bc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), ((List), *)], false], cache: 0x9ad13fc
*** Found cached context for key: [[(List), (List)], false], cache: 0x9b251cc
[(List), Collection>>sort@4#2[][]3]::Collection>>sort: -> (List)
*** Not found cached context for key: [[(List), *], false], cache: 0x9b251cc
(146) Analyzing [(List), *]::List>>appendList: ...
appendList: aList | element |
(elements isNil) ifTrue: [
elements <- aList firstLink.
size <- aList size.
^self
].
element <- elements.
[element next isNil]
whileFalse: [element <- element next].
element next: aList firstLink.
size <- size + aList size.
^self
!
Initial pass on List>>appendList:
Adding subtype to 54 : ?
Tau value is ?
Adding subtype to 54 : ?
Tau value is ?
Adding subtype to 54 : ?
Tau value is ?
Induction pass on List>>appendList: (0)
Adding subtype to 54 : ?
Adding subtype to 54 : *
Tau value is ?
Adding subtype to 54 : ?
Adding subtype to 54 : *
Tau value is ?
Adding subtype to 54 : ?
Adding subtype to 54 : *
Tau value is ?
[(List), *]::List>>appendList: -> (List)
analyzing potential closure args for 29 :: [(List), Collection>>sort:@34#26[1, 2, 0][]29]
adding closure node 29 reads [1, 2, 0] writes []
Base pass on Collection>>sort: (0)
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Found cached context for key: [[(List)], false], cache: 0x9ad9a34
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
captureContext of 29 : Analyzing block Collection>>sort:@34#26[1, 2, 0][]
writing siteIndex: 29
writing 0x9ad68a0 as site index 29
TypeLocator : Found assign site: Node 24 :: (List), back edge: no
checkClosure 23
checkClosure 23 is not found
checkClosure 18
checkClosure 18 is not found
TypeLocator : Found assign site: Node 14 :: ((List), *), back edge: no
checkClosure 23
checkClosure 23 is not found
TypeLocator : Found assign site: Node 19 :: (List), back edge: no
*** Found cached context for key: [[(List), Collection>>sort:@34#26[1, 2, 0][]29], false], cache: 0x9ac54bc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), ((List), *)], false], cache: 0x9ad13fc
*** Found cached context for key: [[(List), (List)], false], cache: 0x9b251cc
Induction pass on Collection>>sort: (0)
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Found cached context for key: [[(List)], false], cache: 0x9ad9a34
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
*** Found cached context for key: [[List], false], cache: 0x9ac1f24
captureContext of 29 : Analyzing block Collection>>sort:@34#26[1, 2, 0][]
writing siteIndex: 29
writing 0x9ad68a0 as site index 29
TypeLocator : Found assign site: Node 24 :: (List), back edge: no
checkClosure 23
checkClosure 23 is not found
checkClosure 18
checkClosure 18 is not found
TypeLocator : Found assign site: Node 14 :: ((List), *), back edge: no
checkClosure 23
checkClosure 23 is not found
TypeLocator : Found assign site: Node 19 :: (List), back edge: no
*** Found cached context for key: [[(List), Collection>>sort:@34#26[1, 2, 0][]29], false], cache: 0x9ac54bc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), Collection>>sort@4#2[][]3], false], cache: 0x9ab6ffc
*** Found cached context for key: [[(List), ((List), *)], false], cache: 0x9ad13fc
*** Found cached context for key: [[(List), (List)], false], cache: 0x9b251cc
[(List), Collection>>sort@4#2[][]3]::Collection>>sort: -> (List)
*** Not found cached context for key: [[(List)], false], cache: 0x9b2bfcc
(147) Analyzing [(List)]::Collection>>asArray ...
asArray | newArray index |
newArray <- Array new: self size.
index <- 1.
self do: [ :element | newArray at: index put: element.
index <- index + 1 ].
^ newArray
!
Initial pass on Collection>>asArray
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Not found cached context for key: [[Array, ?], false], cache: 0x9ab890c
(148) Analyzing [Array, ?]::MetaArray>>new: ...
new: sz
<7 self sz>
!
Initial pass on MetaArray>>new:
[Array, ?]::MetaArray>>new: -> (Array)
captureContext of 14 : Analyzing block Collection>>asArray@15#147[0, 1][1]
writing siteIndex: 14
writing 0x9b2c790 as site index 14
TypeLocator : Found assign site: Node 06 :: (Array), back edge: no
TypeLocator : Found assign site: Node 09 :: 1, back edge: no
*** Not found cached context for key: [[(List), Collection>>asArray@15#147[0, 1][1]14], false], cache: 0x9ac54bc
(149) Analyzing [(List), Collection>>asArray@15#147[0, 1][1]14]::List>>do: ...
do: aBlock
^ elements notNil ifTrue: [ elements do: aBlock ]
!
Initial pass on List>>do:
phi: * | ? = (*)
Induction pass on List>>do: (0)
phi: * | nil = (*)
[(List), Collection>>asArray@15#147[0, 1][1]14]::List>>do: -> *
analyzing potential closure args for 14 :: [(List), Collection>>asArray@15#147[0, 1][1]14]
adding closure node 14 reads [0, 1] writes [1]
Base pass on Collection>>asArray (0)
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Found cached context for key: [[Array, ?], false], cache: 0x9ab890c
captureContext of 14 : Analyzing block Collection>>asArray@15#147[0, 1][1]
writing siteIndex: 14
writing 0x9b2c790 as site index 14
TypeLocator : Found assign site: Node 06 :: (Array), back edge: no
TypeLocator : Found assign site: Node 09 :: 1, back edge: no
*** Found cached context for key: [[(List), Collection>>asArray@15#147[0, 1][1]14], false], cache: 0x9ac54bc
Induction pass on Collection>>asArray (0)
*** Found cached context for key: [[(List)], false], cache: 0x9ac66fc
*** Found cached context for key: [[Array, ?], false], cache: 0x9ab890c
captureContext of 14 : Analyzing block Collection>>asArray@15#147[0, 1][1]
writing siteIndex: 14
writing 0x9b2c790 as site index 14
TypeLocator : Found assign site: Node 06 :: (Array), back edge: no
TypeLocator : Found assign site: Node 09 :: 1, back edge: no
*** Found cached context for key: [[(List), Collection>>asArray@15#147[0, 1][1]14], false], cache: 0x9ac54bc
[(List)]::Collection>>asArray -> (Array)
[(Array), Collection>>sort@4#2[][]3]::Array>>sort: -> (Array)
[(Array)]::Collection>>sort -> (Array)
[nil]::Undefined>>testInference -> nil
Full context dump:
[[nil], false]::Undefined>>testInference -> nil
[[1, 1, 10], false]::Number>>printWidth:base: -> (*, ?)
[[5, 1, 10], false]::Number>>printWidth:base: -> ?
[[(SmallInt), 1, 10], false]::Number>>printWidth:base: -> ?
[[(String), 1, 1, '-', 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), 1, 28, 'array indexing error (index ', 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), 1, (SmallInt), (String), 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), 2, *, *, 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), 29, *, ?, 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), 29, *, (*, ?), 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), (SmallInt), (SmallInt), ')', 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), (SmallInt), (SmallInt), ', length ', 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), (SmallInt), *, ?, 1], false]::Array>>replaceFrom:to:with:startingAt: -> *
[[(String), 1, 1, '-'], false]::Array>>replaceFrom:to:with: -> *
[[(String), 1, 28, 'array indexing error (index '], false]::Array>>replaceFrom:to:with: -> *
[[(String), 1, (SmallInt), (String)], false]::Array>>replaceFrom:to:with: -> *
[[(String), 2, *, *], false]::Array>>replaceFrom:to:with: -> *
[[(String), 29, *, ?], false]::Array>>replaceFrom:to:with: -> *
[[(String), 29, *, (*, ?)], false]::Array>>replaceFrom:to:with: -> *
[[(String), (SmallInt), (SmallInt), ')'], false]::Array>>replaceFrom:to:with: -> *
[[(String), (SmallInt), (SmallInt), ', length '], false]::Array>>replaceFrom:to:with: -> *
[[(String), (SmallInt), *, ?], false]::Array>>replaceFrom:to:with: -> *
[[(List), Collection>>sort@4#2[][]3], true]::Collection>>sort: -> (List)
[[(List), Collection>>sort@4#2[][]3], false]::Collection>>sort: -> (List)
[[(Array), Collection>>sort@4#2[][]3], false]::Array>>sort: -> (Array)
[[(Array)], false]::Collection>>sort -> (Array)
[[(List)], false]::Collection>>asArray -> (Array)
[[(SmallInt)], false]::Number>>negated -> (SmallInt)
[[1], false]::Number>>negative -> false
[[5], false]::Number>>negative -> false
[[(SmallInt)], false]::Number>>negative -> (Boolean)
[[(List)], false]::Collection>>emptyCollection -> (List)
[[(Array)], true]::Collection>>asList -> (List)
[[Link, ((List), *), ?], false]::MetaLink>>value:next: -> (Link)
[[Link, *, ?], false]::MetaLink>>value:next: -> (Link)
[[Array>>do:@7#9[][]6, 1], false]::Block>>value: -> *
[[Array>>do:@7#9[][]6, (SmallInt)], false]::Block>>value: -> *
[[Array>>do:@7#36[][]6, 1], false]::Block>>value: -> *
[[Array>>do:@7#36[][]6, (SmallInt)], false]::Block>>value: -> *
[[Array>>do:@7#94[][]6, 1], false]::Block>>value: -> *
[[Array>>do:@7#94[][]6, (SmallInt)], false]::Block>>value: -> *
[[Object>>print@6#34[][]5, ('ERROR', *)], false]::Block>>value: -> *
[[Object>>print@6#92[][]5, ((String), *)], false]::Block>>value: -> *
[[List>>addAll:@4#8[][]3, *], false]::Block>>value: -> *
[['-'], false]::Array>>size -> 1
[[')'], false]::Array>>size -> 1
[[', length '], false]::Array>>size -> 9
[['array indexing error (index '], false]::Array>>size -> 28
[['ERROR'], false]::Array>>size -> 5
[[(List)], false]::List>>size -> ?
[[(String)], false]::Array>>size -> (SmallInt)
[[(Array)], false]::Array>>size -> (SmallInt)
[[(List)], false]::List>>popFirst -> ((List), *)
[[(List)], false]::List>>firstLink -> ?
[[(List), (List)], false]::List>>appendList: -> (List)
[[(List), *], false]::List>>appendList: -> (List)
[[(List), *], false]::List>>addLast: -> *
[[(List), (Array)], false]::List>>addAll: -> (List)
[[1, *], false]::SmallInt>>+ -> *
[[28, *], false]::SmallInt>>+ -> *
[['-', *], false]::Array>>+ -> (String)
[['array indexing error (index ', ?], false]::Array>>+ -> (String)
[['array indexing error (index ', (*, ?)], false]::Array>>+ -> (String)
[[(SmallInt), *], false]::SmallInt>>+ -> *
[[(String), ?], false]::Array>>+ -> (String)
[[(String), ')'], false]::Array>>+ -> (String)
[[(String), ', length '], false]::Array>>+ -> (String)
[[(List), ((List), *)], false]::List>>add: -> ((List), *)
[[(List), *], false]::List>>add: -> *
[['ERROR', 1], false]::Array>>badIndex: -> 'ERROR'
[['ERROR', (SmallInt)], false]::Array>>badIndex: -> 'ERROR'
[[(String), 1], false]::Array>>badIndex: -> (String)
[[(String), (SmallInt)], false]::Array>>badIndex: -> (String)
[['ERROR', Object>>print@6#34[][]5], false]::Array>>do: -> 'ERROR'
[[(List), Collection>>sort:@34#26[1, 2, 0][]29], false]::List>>do: -> *
[[(List), Collection>>sort:@34#139[1, 2, 0][]29], false]::List>>do: -> *
[[(List), Collection>>asArray@15#147[0, 1][1]14], false]::List>>do: -> *
[[(String), Object>>print@6#92[][]5], false]::Array>>do: -> (String)
[[(Array), List>>addAll:@4#8[][]3], false]::Array>>do: -> (Array)
[['ERROR', 1], false]::String>>basicAt: -> ?
[['ERROR', (SmallInt)], false]::String>>basicAt: -> ?
[[(String), 1], false]::String>>basicAt: -> ?
[[(String), (SmallInt)], false]::String>>basicAt: -> ?
[['ERROR', 1, String>>at:@5#41[][]4], false]::String>>at:ifAbsent: -> ('ERROR', *)
[['ERROR', (SmallInt), String>>at:@5#132[][]4], false]::String>>at:ifAbsent: -> ('ERROR', *)
[[(String), 1, String>>at:@5#98[][]4], false]::String>>at:ifAbsent: -> ((String), *)
[[(String), (SmallInt), String>>at:@5#119[][]4], false]::String>>at:ifAbsent: -> ((String), *)
[[String>>at:@5#41[][]4], false]::Block>>value -> 'ERROR'
[[String>>at:@5#98[][]4], false]::Block>>value -> (String)
[[String>>at:@5#119[][]4], false]::Block>>value -> (String)
[[String>>at:@5#132[][]4], false]::Block>>value -> 'ERROR'
[['ERROR', 1], false]::String>>at: -> ('ERROR', *)
[['ERROR', (SmallInt)], false]::String>>at: -> ('ERROR', *)
[[(String), 1], false]::String>>at: -> ((String), *)
[[(String), (SmallInt)], false]::String>>at: -> ((String), *)
[[(Array), 1], false]::Array>>at: -> *
[[(Array), (SmallInt)], false]::Array>>at: -> *
[[1, 5, Array>>do:@7#36[][]6], false]::Number>>to:do: -> 1
[[1, (SmallInt), Array>>do:@7#9[][]6], false]::Number>>to:do: -> 1
[[1, (SmallInt), Array>>do:@7#94[][]6], false]::Number>>to:do: -> 1
[[0, (SmallInt)], false]::SmallInt>>- -> (SmallInt)
[[1, 1], false]::SmallInt>>- -> 0
[[Link, (Link), 1, ((List), *)], false]::MetaObject>>in:at:put: -> *
[[Link, (Link), 1, *], false]::MetaObject>>in:at:put: -> *
[[Link, (Link), 2, ?], false]::MetaObject>>in:at:put: -> *
[[List, (List), 2, 0], false]::MetaObject>>in:at:put: -> *
[[Char, (Char), 1, ?], false]::MetaObject>>in:at:put: -> *
[[Char, ?], false]::MetaChar>>basicNew: -> *
[[Char], false]::MetaChar>>newline -> *
[[String], false]::MetaString>>newline -> *
[[1], false]::Number>>printString -> (*, ?)
[[5], false]::Number>>printString -> ?
[['ERROR'], false]::String>>printString -> 'ERROR'
[[List], false]::Class>>printString -> *
[[(SmallInt)], false]::Number>>printString -> ?
[[(String)], false]::String>>printString -> (String)
[['ERROR'], false]::Object>>printNl -> 'ERROR'
[[(String)], false]::Object>>printNl -> (String)
[['ERROR'], false]::Object>>print -> 'ERROR'
[[(String)], false]::Object>>print -> (String)
[['ERROR', (String)], false]::Object>>error: -> ?
[[(List), *], false]::Object>>error: -> ?
[[(String), (String)], false]::Object>>error: -> ?
[['-'], false]::Object>>class -> String
[['array indexing error (index '], false]::Object>>class -> String
[[(List)], false]::Object>>class -> List
[[(String)], false]::Object>>class -> String
[[Char, ?], false]::MetaChar>>new: -> *
[[Char, 10], false]::MetaChar>>new: -> *
[[String, (SmallInt)], false]::MetaString>>new: -> (String)
[[String, *], false]::MetaString>>new: -> (String)
[[Array, ?], false]::MetaArray>>new: -> (Array)
[[Array, 10], false]::MetaArray>>new: -> (Array)
[[Link], false]::Class>>new -> (Link)
[[List], true]::Class>>new -> (List)
[[List], false]::MetaList>>new -> (List)
[[Char], false]::Class>>new -> (Char)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment