blob: e0087711b76b47513107fc2a1986fe0c659a3ccc [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'.
}