// 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.
// @dart=2.9
/*@testedFeatures=inference*/
library test;

test1() {
  var /*@ type=Map<int*, String*>* */ x = /*@ typeArgs=int*, String* */ {1: 'x', 2: 'y'};
  x /*@target=Map.[]=*/ [3] = 'z';
  x /*@target=Map.[]=*/ [
      /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
  x /*@target=Map.[]=*/ [
      /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
  x /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
  Map<num, String> y = x;
}

test2() {
  var /*@ type=Map<num*, Pattern*>* */ x = /*@ typeArgs=num*, Pattern* */ {
    1: 'x',
    2: 'y',
    3.0: new RegExp('.')
  };
  x /*@target=Map.[]=*/ [3] = 'z';
  x /*@target=Map.[]=*/ [
      /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
  x /*@target=Map.[]=*/ [4.0] = 'u';
  x /*@target=Map.[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
  Pattern p = null;
  x /*@target=Map.[]=*/ [2] = p;
  Map<int, String> y = /*info:ASSIGNMENT_CAST*/ x;
}

main() {}
