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

bool get inCheckedMode {
  try {
    String a = 42;
  } catch (e) {
    return true;
  }
  return false;
}

class A<T> {
  T field;
}

class B<T> {
  T field = 42;
}

class C<T> {
  T field = 42;
}

main() {
  var a = new A<String>();
  var c = new C<int>();
  if (inCheckedMode) {
    Expect.throws(() => a.field = 42, (e) => e is TypeError);
    Expect.throws(() => new B<String>(), (e) => e is TypeError);
    Expect.throws(() => c.field = 'foo', (e) => e is TypeError);
  } else {
    a.field = 42;
    new B<String>();
    c.field = 'foo';
  }
}

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

bool get inCheckedMode {
  try {
    var i = 42;
    String a = i;
  } catch (e) {
    return true;
  }
  return false;
}

class A<T> {
  T field;
}

class B<T> {
  T field = 42;
}

class C<T> {
  T field = 42;
}

main() {
  var a = new A<String>();
  var c = new C<int>();
  if (inCheckedMode) {
    Expect.throws(() => a.field = 42, (e) => e is TypeError);
    Expect.throws(() => new B<String>(), (e) => e is TypeError);
    Expect.throws(() => c.field = 'foo', (e) => e is TypeError);
  } else {
    a.field = 42;
    new B<String>();
    c.field = 'foo';
  }
}

Add static type warning annotation to make the test pass on analyzer.
Add static type warning annotation to make the test pass on analyzer.

Review URL: https://codereview.chromium.org//61883003

git-svn-id: c93d8a2297af3b929165606efe145742a534bc71@29978 260f80e4-7a28-3924-810f-c04153c831b5
