// 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"; class A { _uniqueSelector() {} final uniqueField = 10; } test1(obj) { var res = 0; for (var i = 0; i < 2; i++) { obj._uniqueSelector(); res += obj.uniqueField; // This load must not be hoisted out of the loop. } return res; } test2(obj) { final objAlias = obj; closure() => objAlias; var res = 0; for (var i = 0; i < 2; i++) { obj._uniqueSelector(); res += objAlias.uniqueField; // This load must not be hoisted out of the loop. } return res; } var foofoo_ = test1; main() { Expect.equals(20, foofoo_(new A())); Expect.throws(() => foofoo_(0)); foofoo_ = test2; Expect.equals(20, foofoo_(new A())); Expect.throws(() => foofoo_(0)); }