402e6f492d
Previously, the captured variable analysis did not provide sufficient information for the conversion phase regarding variable uses in initalizers: in particular, it did not differentiate the case when a variable is used in an initializer and captured in the body vs. being captured in the body and not used in an initializer. In addition, there were a few bugs stemming from the use of lazy iterables and OR conjunctives with effectful operations. Now, we separate the information about which variables are captured from flags indicating whether variables are used in initializers. The other bugs are fixed in obvious ways. Finally, we reintroduce some code that ensures that redirecting factory constructors listed in "_redirecting#" field (a hack used when writing DILL files) remain with one-expression bodies after closure conversion. Test Plan: Added a test case for the initializers bug, ensured that the patched SDK builds with closure conversion always-on. Reviewers: dmitryas@google.com BUG= R=dmitryas@google.com Review-Url: https://codereview.chromium.org/2995083002 .