6f9d6965fe
Notes on test changes: - This revealed runtime failures in some tests in pkg/front_end/testcases/inference. Since these tests were never meant to exercise runtime behavior in the first place, I just changed them so that main() does nothing. - This revealed runtime failures in some tests in tests/language_2. These tests began failing because they used "var" for a fields and then later assigned a value to the field that was incompatible with the inferred type. It looks like the intent was for these fields to have type "dynamic", so I changed the tests accordingly. Change-Id: I0ddb2063427b52b5e4be1884fa333e25be4bf4f3 Reviewed-on: https://dart-review.googlesource.com/16881 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
40 lines
761 B
Dart
40 lines
761 B
Dart
// Copyright (c) 2012, 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";
|
|
|
|
// Dart test program to test type-based optimization on fields.
|
|
|
|
class A {
|
|
dynamic a = 0;
|
|
var b = 0;
|
|
foo() {
|
|
var c = b + 27;
|
|
for (var i = 0; i < 1; i++) {
|
|
for (var j = 0; j < 1; j++) {
|
|
Expect.equals(50, c + 23);
|
|
}
|
|
}
|
|
return a > 0.2;
|
|
}
|
|
|
|
setA(value) {
|
|
a = value;
|
|
}
|
|
|
|
setB(value) {
|
|
b = value;
|
|
}
|
|
|
|
operator >(other) => other == 0.2;
|
|
}
|
|
|
|
main() {
|
|
var a = new A();
|
|
Expect.isFalse(a.foo());
|
|
a.setA(new A());
|
|
a.setB(0);
|
|
Expect.isTrue(a.foo());
|
|
}
|