| // 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
|
| * operatorSignature:
|
| * returnType? operator operator formalParameterList
|
| * ;
|
| * operator:
|
| * ‘˜’ |
|
| * binaryOperator |
|
| * ‘[’ ‘]’ |
|
| * ‘[’ ‘]’ ‘=’
|
| * ;
|
| * binaryOperator:
|
| * multiplicativeOperator |
|
| * additiveOperator |
|
| * shiftOperator |
|
| * relationalOperator |
|
| * ‘==’ |
|
| * bitwiseOperator
|
| * ;
|
| * @description Checks that any return type (including function type, type
|
| * parameter, void or no return type at all) can be specified for any operator.
|
| * @author iefremov
|
| */
|
|
|
| typedef int foo(double d);
|
|
|
| class C<T> {
|
| int operator +(var v) => 42;
|
| List operator [](var v) => [];
|
| operator -() {}
|
| operator -(var v) {}
|
| operator []=(var v, var v2) {}
|
| dynamic operator ~() {}
|
| foo operator *(var v) => (double s) => 42;
|
| T operator >(T t) => t;
|
| }
|
|
|
| main() {
|
| C c = new C();
|
| dynamic x = c + c;
|
| x = c - c;
|
| x = c[c];
|
| c[c] = c;
|
| -c;
|
| x = ~c;
|
| x = c == c;
|
| }
|