// Copyright (c) 2016, 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 Let T be the static type of o. It is a static type warning if T
/// does not have an accessible instance member named m unless either:
/// • T or a superinterface of T is annotated with an annotation denoting a
///   constant identical to the constant @proxy defined in dart:core. Or
/// • T is Type, e is a constant type literal and the class corresponding to e
///   has a static getter named m.
/// • T is Function and m is call. The type Function is treated as if it has a
///   call method for any possible signature of call. The expectation is that
///   any concrete subclass of Function will implement call. Note that a warning
///   will be issue if this is not the case. Furthermore, any use of call on a
///   subclass of Function that fails to implement call will also provoke a
///   warning, as this exemption is limited to type Function, and does not apply
///   to its subtypes.
/// @description Checks that there is no static type warning if T is Function
/// and m is call.
/// @author ngl@unipro.ru

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

libfunc(int i) {
  return i + 1;
}

class A {
  test() {
    locfunc(int i) {
      return i + 3;
    }
    Expect.equals(3, libfunc.call(2));
    Expect.equals(5, locfunc.call(2));
  }
}

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