// 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 A shift expression of the form super op e2 is equivalent
 * to the method invocation super.op(e2).
 * @description Checks that an expressions of the form super << e2
 * is equivalent to the method invocation super.operator<<(e2).
 * @author kaigorodov
 */
import '../../../Utils/expect.dart';

var logStr = "";

class S {
  operator <<(var v) {
    logStr = "${logStr}<<";
    return true;
  }
  operator >>(var v) {
    logStr = "${logStr}>>";
    return true;
  }
}

class A extends S {
  test() {
    logStr = "";
    super << 1;
    super >> 1;
    Expect.equals("<<>>", logStr);
  }
}

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