|  | // Copyright (c) 2017, 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. | 
|  |  | 
|  | /*@testedFeatures=inference*/ | 
|  | library test; | 
|  |  | 
|  | void foo( | 
|  | [Map<int, String> m1 = /*@typeArgs=int, String*/ const {1: "hello"}, | 
|  | Map<int, String> m2 = /*@typeArgs=int, String*/ const { | 
|  | // One error is from type checking and the other is from const evaluation. | 
|  | /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ "hello": | 
|  | "world" | 
|  | }]) {} | 
|  | void test() { | 
|  | { | 
|  | Map<int, String> l0 = /*@typeArgs=int, String*/ {}; | 
|  | Map<int, String> l1 = /*@typeArgs=int, String*/ {3: "hello"}; | 
|  | Map<int, String> l2 = /*@typeArgs=int, String*/ { | 
|  | /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ "hello": "hello" | 
|  | }; | 
|  | Map<int, String> l3 = /*@typeArgs=int, String*/ { | 
|  | 3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3 | 
|  | }; | 
|  | Map<int, String> l4 = /*@typeArgs=int, String*/ { | 
|  | 3: "hello", | 
|  | /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ "hello": | 
|  | /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3 | 
|  | }; | 
|  | } | 
|  | { | 
|  | Map<dynamic, dynamic> l0 = /*@ typeArgs=dynamic, dynamic */ {}; | 
|  | Map<dynamic, dynamic> l1 = /*@ typeArgs=dynamic, dynamic */ {3: "hello"}; | 
|  | Map<dynamic, dynamic> l2 = /*@ typeArgs=dynamic, dynamic */ { | 
|  | "hello": "hello" | 
|  | }; | 
|  | Map<dynamic, dynamic> l3 = /*@ typeArgs=dynamic, dynamic */ {3: 3}; | 
|  | Map<dynamic, dynamic> l4 = /*@ typeArgs=dynamic, dynamic */ { | 
|  | 3: "hello", | 
|  | "hello": 3 | 
|  | }; | 
|  | } | 
|  | { | 
|  | Map<dynamic, String> l0 = /*@typeArgs=dynamic, String*/ {}; | 
|  | Map<dynamic, String> l1 = /*@typeArgs=dynamic, String*/ {3: "hello"}; | 
|  | Map<dynamic, String> l2 = /*@typeArgs=dynamic, String*/ {"hello": "hello"}; | 
|  | Map<dynamic, String> l3 = /*@typeArgs=dynamic, String*/ { | 
|  | 3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3 | 
|  | }; | 
|  | Map<dynamic, String> l4 = /*@typeArgs=dynamic, String*/ { | 
|  | 3: "hello", | 
|  | "hello": /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3 | 
|  | }; | 
|  | } | 
|  | { | 
|  | Map<int, dynamic> l0 = /*@typeArgs=int, dynamic*/ {}; | 
|  | Map<int, dynamic> l1 = /*@typeArgs=int, dynamic*/ {3: "hello"}; | 
|  | Map<int, dynamic> l2 = /*@typeArgs=int, dynamic*/ { | 
|  | /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ "hello": "hello" | 
|  | }; | 
|  | Map<int, dynamic> l3 = /*@typeArgs=int, dynamic*/ {3: 3}; | 
|  | Map<int, dynamic> l4 = /*@typeArgs=int, dynamic*/ { | 
|  | 3: "hello", | 
|  | /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ "hello": 3 | 
|  | }; | 
|  | } | 
|  | { | 
|  | Map<int, String> l0 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{}; | 
|  | Map<int, String> l1 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{ | 
|  | 3: "hello" | 
|  | }; | 
|  | Map<int, String> l3 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{ | 
|  | 3: 3 | 
|  | }; | 
|  | } | 
|  | { | 
|  | const Map<int, String> l0 = /*@typeArgs=int, String*/ const {}; | 
|  | const Map<int, String> l1 = /*@typeArgs=int, String*/ const {3: "hello"}; | 
|  | const Map<int, String> l2 = /*@typeArgs=int, String*/ const { | 
|  | /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ "hello": | 
|  | "hello" | 
|  | }; | 
|  | const Map<int, String> l3 = /*@typeArgs=int, String*/ const { | 
|  | 3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3 | 
|  | }; | 
|  | const Map<int, String> l4 = /*@typeArgs=int, String*/ const { | 
|  | 3: "hello", | 
|  | /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ "hello": | 
|  | /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3 | 
|  | }; | 
|  | } | 
|  | } | 
|  |  | 
|  | main() {} |