8abf6c67ad
Tweaks. Change-Id: I0fb8b4088c86e5b83f1c76db8a2dfa7c9023c1b9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99000 Commit-Queue: Lasse R.H. Nielsen <lrn@google.com> Reviewed-by: Erik Ernst <eernst@google.com>
77 lines
2.6 KiB
Dart
77 lines
2.6 KiB
Dart
// Copyright (c) 2019, 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.
|
|
|
|
// Tests that a dynamic type does not affect whether an expression is
|
|
// potentially constant, the actual type of the value of an experssion
|
|
// only matters if the expression is evaluated as a constant.
|
|
|
|
main() {
|
|
Object c = C();
|
|
T.test01(c);
|
|
T.test02(c, c);
|
|
T.test03(c, c);
|
|
T.test04(c, c);
|
|
T.test05(c, c);
|
|
T.test06(c, c);
|
|
T.test07(c, c);
|
|
T.test08(c, c);
|
|
T.test09(c, c);
|
|
T.test10(c, c); //# sh3: ok
|
|
T.test11(c, c);
|
|
T.test12(c, c);
|
|
T.test13(c, c);
|
|
T.test14(c);
|
|
T.test15(c, c);
|
|
T.test16(c, c);
|
|
T.test17(c, c);
|
|
T.test18(c, c);
|
|
T.test19(c);
|
|
}
|
|
|
|
class T {
|
|
const T(Object o);
|
|
const T.test01(dynamic x) : this(-x);
|
|
const T.test02(dynamic x, dynamic y) : this(x + y);
|
|
const T.test03(dynamic x, dynamic y) : this(x - y);
|
|
const T.test04(dynamic x, dynamic y) : this(x * y);
|
|
const T.test05(dynamic x, dynamic y) : this(x / y);
|
|
const T.test06(dynamic x, dynamic y) : this(x ~/ y);
|
|
const T.test07(dynamic x, dynamic y) : this(x % y);
|
|
const T.test08(dynamic x, dynamic y) : this(x << y);
|
|
const T.test09(dynamic x, dynamic y) : this(x >> y);
|
|
const T.test10(dynamic x, dynamic y) : this(x >>> y); //# sh3: continued
|
|
const T.test11(dynamic x, dynamic y) : this(x & y);
|
|
const T.test12(dynamic x, dynamic y) : this(x | y);
|
|
const T.test13(dynamic x, dynamic y) : this(x ^ y);
|
|
const T.test14(dynamic x) : this(~x);
|
|
const T.test15(dynamic x, dynamic y) : this(x < y);
|
|
const T.test16(dynamic x, dynamic y) : this(x > y);
|
|
const T.test17(dynamic x, dynamic y) : this(x <= y);
|
|
const T.test18(dynamic x, dynamic y) : this(x >= y);
|
|
const T.test19(dynamic x) : this(x.length);
|
|
}
|
|
|
|
class C {
|
|
const C();
|
|
dynamic operator -() => this;
|
|
dynamic operator +(dynamic other) => this;
|
|
dynamic operator -(dynamic other) => this;
|
|
dynamic operator *(dynamic other) => this;
|
|
dynamic operator /(dynamic other) => this;
|
|
dynamic operator ~/(dynamic other) => this;
|
|
dynamic operator %(dynamic other) => this;
|
|
dynamic operator <<(dynamic other) => this;
|
|
dynamic operator >>(dynamic other) => this;
|
|
dynamic operator >>>(dynamic other) => this; //# sh3: continued
|
|
dynamic operator &(dynamic other) => this;
|
|
dynamic operator |(dynamic other) => this;
|
|
dynamic operator ^(dynamic other) => this;
|
|
dynamic operator ~() => this;
|
|
dynamic operator <(dynamic other) => this;
|
|
dynamic operator >(dynamic other) => this;
|
|
dynamic operator <=(dynamic other) => this;
|
|
dynamic operator >=(dynamic other) => this;
|
|
dynamic get length => this;
|
|
}
|