// Copyright (c) 2011, 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 = 2.9

/// @assertion Additive expressions invoke the addition operators on objects.
/// additiveExpression:
///   multiplicativeExpression (additiveOperator multiplicativeExpression)* |
///   super (additiveOperator multiplicativeExpression)+
/// ;
/// additiveOperator:
///   '+' |
///   '-'
/// ;
/// An additive expression is either a multiplicative expression, or an
/// invocation of an additive operator on either super or an expression e1, with
/// argument e2.
/// @description Checks that an additive expression of the form
/// multiplicativeExpression ('+' multiplicativeExpression)*
/// must have at least two operands.
/// Note that there is no unary plus operator in dart.
/// @author msyabro


main() {
  var x=1;
  try {
    + x;
//  ^
// [analyzer] unspecified
// [cfe] unspecified
  } catch (e) {}
}
