Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2504.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2504 Author: eem Time: 29 December 2018, 5:52:25.481882 pm UUID: a00b0fad-c04c-47a6-8a11-5dbff110ac11 Ancestors: VMMaker.oscog-eem.2503
Make the fix more precise. ^self does map to a return type of #void, so only answer in the positive for variables other than self.
=============== Diff against VMMaker.oscog-eem.2503 ===============
Item was changed: ----- Method: TMethod>>addTypesFor:to:in: (in category 'type inference') ----- addTypesFor: node to: typeSet in: aCodeGen "Add the value types for the node to typeSet. Answer if any type was derived from an as-yet-untyped method or variable, which allows us to abort inferReturnTypeFromReturnsIn: if the return type depends on a yet-to-be-typed method or variable." | expr | expr := node. [expr isAssignment or: [expr isStmtList]] whileTrue: [expr isAssignment ifTrue: [expr := expr variable]. expr isStmtList ifTrue: [expr := expr statements last]]. expr isSend ifTrue: [(#(ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:) includes: expr selector) ifTrue: [^expr args inject: false into: [:asYetUntyped :block| asYetUntyped | (self addTypesFor: block to: typeSet in: aCodeGen)]]. (aCodeGen returnTypeForSend: expr in: self ifNil: nil) ifNil: [^(aCodeGen methodNamed: expr selector) notNil and: [expr selector ~~ selector]] ifNotNil: [:type | typeSet add: type. ^false]]. expr isVariable ifTrue: [(aCodeGen typeOfVariable: expr name) ifNotNil: [:type| typeSet add: type] + ifNil: [(typeSet add: (expr name = 'self' - ifNil: [typeSet add: (expr name = 'self' ifTrue: [#void] + ifFalse: [#sqInt])) == #sqInt ifTrue: + [^true]]]. - ifFalse: [#sqInt]). - ^true]]. expr isConstant ifTrue: [(expr value isInteger and: [expr value >= 0]) "cannot determine if signed or unsigned yet..." ifTrue: [typeSet add: expr value] ifFalse: [(expr typeOrNilFrom: aCodeGen in: self) ifNotNil: [:type | typeSet add: type]]]. ^false!
vm-dev@lists.squeakfoundation.org