blob: 435e7e5f77c8cc4ac9a1fab4ccdd8f0001c5cc0c [file] [log] [blame]
// Copyright (c) 2018, 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.
// @dart = 2.9
/// @assertion The static type of a double valued integer literal is [double]
/// @description Checks that it is a compile error if integer but not a literal
/// is assigned to a class member
/// @author sgrekhov@unipro.ru
int foo() => 42;
class C {
double m;
static double s;
void set instanceSetter(double val) {
m = val;
}
static void set staticSetter(double val) {
s = val;
}
}
main() {
C.s = foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
C?.s = foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
C.s ??= foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
C?.s ??= foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
C.staticSetter = foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
C?.staticSetter = foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
C c = null;
c?.m1 = foo();
// ^^
// [analyzer] unspecified
// [cfe] unspecified
c?.instanceSetter = foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
c = new C();
c.m1 = foo();
// ^^
// [analyzer] unspecified
// [cfe] unspecified
c.instanceSetter = foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
c?.m1 = foo();
// ^^
// [analyzer] unspecified
// [cfe] unspecified
c?.instanceSetter = foo();
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
c.m1 ??= foo();
// ^^
// [analyzer] unspecified
// [cfe] unspecified
c?.m1 ??= foo();
// ^^
// [analyzer] unspecified
// [cfe] unspecified
}