Teaching a class of novices, it's not surprising that someone tried "Collection new". What was surprising is that this got the VM is a loop of some kind, with emergency stack dumps and so on. Here is my reply:
On 30 Jan 2012, at 01:18 , Xingzhi Harry Pan wrote:
...it's pretty innocent: Collection new
OK. I looked at this. The problem comes when trying to print the collection. Somehow the VM gets confused when trying to do do: ... I'm not quite clear why.
The quick fix is to change the Collection>>new method to
self error: 'Collection is an abstract class, and cannot be instantiated'
However this will break Heap>>new: , which sends super new. It ought to send self basicNew instead.
These two changes seem to avoid the problem, but I'm waiting to see ...
Andrew
But I don't understand the root cause. Printing eventually sends do:, which is self subclassResponsibility. Why don't we get a clean failure? Andrew