Hi, apparently neither RoelTyper nor RefactoryTyper is capable of doing elementary type inference for methods, such as
[[[ cls := Object subclass: #Something. cls compile: 'method ^ 1'. typer := RBRefactoryTyper new. typer guessTypeFromAssignment: (Something>>#method) ast body "Object " all := (TypeCollector typeTmpsIn: (Something>>#method) ofClass: Something) asDictionary. (all at: '^') types "an OrderedCollection(Object)" ]]] Of course both of those tools have different objectives so I am not surprised. Are there however other options? Roel Typer paper makes mention of Chuck, but that seems to be for Squeak only. As for RoelTyper I've also encountered very strange behavior: [[[ cls := Object subclass: #Something. cls compile: 'method ^ 1'. all := TypeCollector typeTmpsIn: (Something>>#method) ofClass: Something. all at: '^' ifAbsent: [ 'Not Found' ]. "'Not Found'" all asDictionary at: '^' "ExtractedType: Sends: {} Assignments: {} ". all associations detect: [ :pair | pair key = '^' ] "'^'->ExtractedType: Sends: {} Assignments: {} " ]]] Why does the first #at: fail if the second and especially third succeeds? My debugging lead me to IdentityDictionary>>#scanFor: but I don't know why that method is written in such a way so I stopped there. Thanks, Peter