<commit_before>// Copyright (c) 2014, 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';

import 'dart:async';

topLevelFunction() async {}

Future<int> topLevelWithParameter(int a) async {
  return 7 + a;
}

topLevelWithParameterWrongType(int a) async {
  return 7 + a;
}

var what = 'async getter';
Future<String> get topLevelGetter async {
  return 'I want to be an ${what}';
}

class A {
  static int staticVar = 1;

  static staticMethod(int param) async => staticVar + param;
  static get staticGetter async => staticVar + 3;

  int _x;
  A(this._x);

  operator +(A other) async {
    return new A(_x + other._x);
  }

  get value => _x;
}

class B {
  final _y;
  const B._internal(this._y);

  B() : _y = null;
}

main() {
  Future asyncReturn;

  asyncReturn = topLevelFunction();
  Expect.isTrue(asyncReturn is Future);

  asyncReturn = topLevelWithParameter(4);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((int result) => Expect.equals(result, 11));

  asyncReturn = topLevelGetter;
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((String result) =>
      Expect.stringEquals(result, 'I want to be an async getter'));

  asyncReturn = A.staticMethod(2);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((int result) => Expect.equals(result, 3));

  asyncReturn = A.staticGetter;
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((int result) => Expect.equals(result, 4));

  A a = new A(13);

  var b = new A(9);
  asyncReturn = a + b;
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((A result) => Expect.equals(result.value, 22));

  var foo = 17;
  bar(int p1, p2) async {
    var z = 8;
    return p2 + z + foo;
  }

  asyncReturn = bar(1, 2);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((int result) => Expect.equals(result, 27));

  var moreNesting = (int shadowP1, String p2, num p3) {
    var z = 3;
    aa(int shadowP1) async {
      return foo + z + p3 + shadowP1;
    }

    return aa(6);
  };
  asyncReturn = moreNesting(1, "ignore", 2);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((num result) => Expect.equals(result, 28));

  var checkAsync = (var someFunc) {
    var toTest = someFunc();
    Expect.isTrue(toTest is Future);
    toTest.then((int result) => Expect.equals(result, 4));
  };
  checkAsync(() async => 4);
}<commit_msg>Strong mode fixes for async_test.dart<commit_after>// Copyright (c) 2014, 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';

import 'dart:async';

topLevelFunction() async {}

Future<int> topLevelWithParameter(int a) async {
  return 7 + a;
}

topLevelWithParameterWrongType(int a) async {
  return 7 + a;
}

var what = 'async getter';
Future<String> get topLevelGetter async {
  return 'I want to be an ${what}';
}

class A {
  static int staticVar = 1;

  static staticMethod(int param) async => staticVar + param;
  static get staticGetter async => staticVar + 3;

  int _x;
  A(this._x);

  operator +(A other) async {
    return new A(_x + other._x);
  }

  get value => _x;
}

class B {
  final _y;
  const B._internal(this._y);

  B() : _y = null;
}

main() {
  Future asyncReturn;

  asyncReturn = topLevelFunction();
  Expect.isTrue(asyncReturn is Future);

  asyncReturn = topLevelWithParameter(4);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((Object result) => Expect.equals(result, 11));

  asyncReturn = topLevelGetter;
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((Object result) =>
      Expect.stringEquals(result, 'I want to be an async getter'));

  asyncReturn = A.staticMethod(2);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((Object result) => Expect.equals(result, 3));

  asyncReturn = A.staticGetter;
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((Object result) => Expect.equals(result, 4));

  A a = new A(13);

  var b = new A(9);
  asyncReturn = a + b;
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((Object result) => Expect.equals((result as A).value, 22));

  var foo = 17;
  bar(int p1, p2) async {
    var z = 8;
    return p2 + z + foo;
  }

  asyncReturn = bar(1, 2);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((Object result) => Expect.equals(result, 27));

  var moreNesting = (int shadowP1, String p2, num p3) {
    var z = 3;
    aa(int shadowP1) async {
      return foo + z + p3 + shadowP1;
    }

    return aa(6);
  };
  asyncReturn = moreNesting(1, "ignore", 2);
  Expect.isTrue(asyncReturn is Future);
  asyncReturn.then((Object result) => Expect.equals(result, 28));

  var checkAsync = (var someFunc) {
    var toTest = someFunc();
    Expect.isTrue(toTest is Future);
    toTest.then((int result) => Expect.equals(result, 4));
  };
  checkAsync(() async => 4);
}
{'fraction_non_alphanumeric': 0.13237889782310258, 'fraction_numerical': 0.016866052167091587, 'mean_word_length': 3.6875, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3846504', 'n_tokens_mistral': 1782, 'n_tokens_neox': 1688, 'n_words': 512}