dart-sdk/pkg/kernel/testcases/closures_initializers
Samir Jindel a459f73fac Convert closures in all initializers, and share the context between them.
Summary:

Previously, we only handled `FieldInitializer` and `LocalInitializer`.

Now we handle all initializers.

Previously, we would create separate contexts for each initializers, which was
incorrect because it changes made to an argument from a closure within one
initializer would not be seen by a closure within another.

Now, we create the context in a `LocalInitializer` so all initializers will see
the same copy of the argument variables.

There is still an outstanding issue where variables introduced as local
initializers and later captured by closures in subsequent initializers are not
placed into the context. However, this will at least trigger an assert in the closure conversion pass.

Test Plan:

'closures_initializers/initializers.dart(.expect)' has been updated with very
simple test cases for super and redirecting initializers. The second bug
mentioned (captured local initializers) has not been reproduced yet.

BUG=
R=dmitryas@google.com

Review-Url: https://codereview.chromium.org/2981603002 .
2017-07-14 10:59:17 +02:00
..
initializers.dart Convert closures in all initializers, and share the context between them. 2017-07-14 10:59:17 +02:00
initializers.dart.expect Convert closures in all initializers, and share the context between them. 2017-07-14 10:59:17 +02:00
local_initializers.dart.expect Revert "Fix closure conversion in field and local initializers." 2017-07-10 10:12:45 +02:00