// 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";

//  Interpolation effect analysis test.

get never => new DateTime.now().millisecondsSinceEpoch == 0;

class A {
  int a = 0;
  toString() {
    ++a;
    return 'A';
  }
}

// Many interpolations to make function too big to inline.
// Summary for [fmt] must include effects from toString().
fmt(x) => '$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x$x';

test(a) {
  if (a == null) return;
  if (never) a.a += 1;
  var b = a.a; // field load
  var c = fmt(a); // field modified through implicit call to toString()
  var d = a.a; // field re-load
  Expect.equals('A 0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 30', '$a $b $c $d');

  // Extra use of [fmt] to prevent inlining on basis of single reference.
  Expect.equals('', fmt(''));
}

main() {
  test(null);
  test(new A());
}
