// 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.

// Dart test verifying that the parser can handle certain cases where
// grammar ambiguity is resolved in favor of generic sends, not
// relational expressions.

f(arg1, [arg2]) => null;
g<X, Y>(arg) => null;

main() {
  // Generic invocations.
  f(g<int, String>(3));
  f(g<int, List<String>>(3));
  f(g<int, String>(3), 4);
  f(g<int, List<String>>(3), 4);

  // Relational expressions.
  int a = 0, b = 1, c = 2, d = 3;
  f(a < b, c > 3);
  f(a < b, c >> 3);
  f(a < b, c < d >> 3);
}
