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

/// @assertion Bitwise expressions invoke the bitwise operators on objects.
/// bitwiseOrExpression:
///   bitwiseXorExpression ('|' bitwiseXorExpression)* |
///   super ('|' bitwiseXorExpression)+
/// ;
/// bitwiseXorExpression:
///   bitwiseAndExpression ('^' bitwiseAndExpression)* |
///   super ('^' bitwiseAndExpression)+
/// ;
/// bitwiseAndExpression:
///   shiftExpression ('&' shiftExpression)* |
///   super ('&' shiftExpression)+
/// ;
/// bitwiseOperator:
///   '&' |
///   '^' |
///   '|'
/// ;
/// A bitwise expression is either an shift expression, or an invocation of a
/// bitwise operator on either super or an expression e1, with argument e2.
/// @description Checks that a type variable cannot be used as the first operand
/// of a bitwise expression without a compile error.
/// @author msyabro


class A<T> {
  test() {
    T & 1;
//    ^
// [analyzer] unspecified
// [cfe] unspecified
  }
}

main() {
  A<String> a = new A<String>();
  a.test();
}

