initialization of element is conditional (in the or: block).
I'm amazed, that's a new behavior, is it a consequence of using AST?
But a dumb compiler not knowing the semantic of or: (it is a message like others) could conclude that element may be used uninitialized in the whileFalse block...
A compiler that is inlining or: with a well known semantic has no excuse ;)

2016-08-16 22:12 GMT+02:00 stepharo <stepharo@free.fr>:
While browsing the system I saw that the following method raised a temp read before written...

It did not jump to my eyes. Working on something else....


PositionableStream>>upTo: anObject
�� �� "Answer a subcollection from the current access position to the
�� �� occurrence (if any, but not inclusive) of anObject in the receiver. If
�� �� anObject is not in the collection, answer the entire rest of the receiver."
�� �� | newStream element |
�� �� newStream := (collection species new: 100) writeStream.
�� �� [self atEnd or: [(element := self next) = anObject]]
�� �� �� �� whileFalse: [newStream nextPut: element].
�� �� ^newStream contents