scala/scala — pull request #922 by dragos (2012-07-17 09:54:19+00:00)
Title: Fixed SI-6092. Fixed leaky annotations

and relaxed the conditions under which a try-catch is lifted out to an inner method.

Less known fact: lazy values null-out their dependent values is they're accessed only from
their initializer. The analysis is not context-dependent (meaning the owner where a reference
happens needs to be exactly that lazy value).

* Removed no-op code around positions in `LazyAnnotationInfo`
* Don't lift expressions that have no `catch` clause

The two changes combined fix a memory leak that's been plaguing the IDE: an annotation
(even when forced) would hang on to a namer, through the outer field of its call-by-name
parameter.

The test is in the IDE project (couldn't find a simple way to reproduce it outside
the IDE).