// Copyright (c) 2015, 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.

/// @assertion It is not a static warning if the type of e is not a subtype of
/// Future. Tools may choose to give a hint in such cases.
///
/// @description Check that no static warning is issued if type of e is not
/// subtype of Future.
///
/// @author a.semenov@unipro.ru


import '../../../Utils/expect.dart';

f() {
  return new Exception();
}

test() async {
  int x = 100500;

  await null;
  await true;
  await 1;
  await x;
  await (x + 3);
  await 'hello';
  await new Object();
  await f();
}

main() {
  asyncStart();
  test().then((value) => asyncEnd());
}
