blob: 44c3fe4294a30baf260bc9e25c40791344611dbf [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.
/// @assertion Let the key type and value type of a map literal be the
/// corresponding static types of the type arguments for a map literal.
/// So <int, String>{} and {1: "s"} both have a key type of int and a value type
/// of String
///
/// @description Checks that element type of the map literals is the static type
/// of the type argument used to create the map
/// @author sgrekhov@unipro.ru
main() {
bool b = true;
var collection = [3, 1, 4, 1, 5];
Map<String, int> map1 = {if (b) "1": 1.0};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
Map<String, int> map2 = {if (b) 1: 1};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
Map<String, int> map3 = {if (!b) "1": 1.0,};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
Map<String, int> map4 = {if (!b) 1: 1};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
Map<String, int> map5 = {if (b) for (var v in collection) if (v > 3) "$v": "$v",};
// ^^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// ^
// [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
Map<String, int> map6 = {if (b) for (var v in collection) if (v > 3) v: v,};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
Map<String, int> map7 = {if (!b) for (var v in collection) if (v > 3) "$v": "$v"};
// ^^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// ^
// [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
Map<String, int> map8 = {if (!b) for (var v in collection) if (v > 3) v: v,};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
Map map9 = <String, int>{if (b) "1": 1.0};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
Map map10 = <String, int>{if (b) 1: 1};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
Map map11 = <String, int>{if (!b) "1": 1.0,};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
Map map12 = <String, int>{if (!b) 1: 1};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
Map map13 = <String, int>{if (b) for (var v in collection) if (v > 3) "$v": "$v",};
// ^^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// ^
// [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
Map map14 = <String, int>{if (b) for (var v in collection) if (v > 3) v: v,};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
Map map15 = <String, int>{if (!b) for (var v in collection) if (v > 3) "$v": "$v"};
// ^^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// ^
// [cfe] A value of type 'String' can't be assigned to a variable of type 'int'.
Map map16 = <String, int>{if (!b) for (var v in collection) if (v > 3) v: v,};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
const map17 = <String, int>{if (1 > 2) "1": 1.0};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
const map18 = <String, int>{if (2 > 1) "1": 1.0,};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
const map19 = <String, int>{if (1 > 2) 1: 1};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
const map20 = <String, int>{if (2 > 1) 1: 1,};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
var map21 = const <String, int>{if (1 > 2) "1": 1.0};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
var map22 = const <String, int>{if (2 > 1) "1": 1.0,};
// ^^^
// [analyzer] COMPILE_TIME_ERROR.MAP_VALUE_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'double' can't be assigned to a variable of type 'int'.
var map23 = const <String, int>{if (1 > 2) 1: 1};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
var map24 = const <String, int>{if (2 > 1) 1: 1,};
// ^
// [analyzer] COMPILE_TIME_ERROR.MAP_KEY_TYPE_NOT_ASSIGNABLE
// [cfe] A value of type 'int' can't be assigned to a variable of type 'String'.
}