mirror of
https://github.com/dart-lang/sdk
synced 2024-09-20 04:31:31 +00:00
f8933dda8d
Closes https://github.com/dart-lang/sdk/issues/48515 Expands existing checks for index operations to all operators. This only affects instance members and not extension members. Change-Id: I8cbb5b12a49539ea502e4396e1b469ffb0e17d5e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/235980 Reviewed-by: Riley Porter <rileyporter@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com> Commit-Queue: Srujan Gaddam <srujzs@google.com>
171 lines
6.1 KiB
Dart
171 lines
6.1 KiB
Dart
// Copyright (c) 2022, 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.
|
|
|
|
@JS()
|
|
library operator_test;
|
|
|
|
import 'package:js/js.dart';
|
|
|
|
@JS()
|
|
class JSClass {
|
|
// https://dart.dev/guides/language/language-tour#_operators for the list of
|
|
// operators allowed by the language.
|
|
external void operator <(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator <=(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >=(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator -(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator +(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator /(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator ~/(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator *(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator %(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator |(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator ^(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator &(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator <<(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >>(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >>>(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator [](_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator []=(_, __);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator ~();
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external bool operator ==(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
}
|
|
|
|
@JS()
|
|
@anonymous
|
|
class AnonymousClass {
|
|
external void operator <(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator <=(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >=(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator -(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator +(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator /(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator ~/(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator *(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator %(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator |(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator ^(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator &(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator <<(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >>(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator >>>(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator [](_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator []=(_, __);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external void operator ~();
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
external bool operator ==(_);
|
|
// ^
|
|
// [web] JS interop classes do not support operator methods.
|
|
}
|
|
|
|
@JS()
|
|
class JSClassExtensions {}
|
|
|
|
extension _ on JSClassExtensions {
|
|
// External operators in extensions are allowed for now, but don't work as
|
|
// intended. Specific operators will need to be allowlisted in the future.
|
|
// TODO(srujzs): Remove this test once we do that.
|
|
external void operator <(_);
|
|
external void operator >(_);
|
|
external void operator <=(_);
|
|
external void operator >=(_);
|
|
external void operator -(_);
|
|
external void operator +(_);
|
|
external void operator /(_);
|
|
external void operator ~/(_);
|
|
external void operator *(_);
|
|
external void operator %(_);
|
|
external void operator |(_);
|
|
external void operator ^(_);
|
|
external void operator &(_);
|
|
external void operator <<(_);
|
|
external void operator >>(_);
|
|
external void operator >>>(_);
|
|
external void operator [](_);
|
|
external void operator []=(_, __);
|
|
external void operator ~();
|
|
// No `==` as it's an `Object` method.
|
|
}
|
|
|
|
void main() {}
|