4ca65d0ba4
The optimization for non-final fields initialized in a generative constructor did not take into account whether the super constructor call escapes 'this', or uses an un-initialized field. The fix is to ensure we analyze the super constructor first before analyzing a constructor. R=lry@google.com Review URL: https://codereview.chromium.org//61163005 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30408 260f80e4-7a28-3924-810f-c04153c831b5
27 lines
484 B
Dart
27 lines
484 B
Dart
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
escape(object) {
|
|
print(object.field + 42);
|
|
}
|
|
|
|
class A {
|
|
A() {
|
|
escape(this);
|
|
}
|
|
}
|
|
|
|
class B extends A {
|
|
var field;
|
|
B() {
|
|
field = 42;
|
|
}
|
|
}
|
|
|
|
main() {
|
|
Expect.throws(() => new B(), (e) => e is NoSuchMethodError);
|
|
}
|