)]}'
{
  "commit": "b31d067141945cdfc397da9402a6210490c6a233",
  "tree": "e703303c2a484bb6747e7abd936224d48a69981e",
  "parents": [
    "357817c7cf903fbd9f325c87c536d54214ffc2cf"
  ],
  "author": {
    "name": "Roberto Lublinerman",
    "email": "rluble@google.com",
    "time": "Tue May 27 10:13:07 2014 -0700"
  },
  "committer": {
    "name": "Gerrit Code Review",
    "email": "noreply-gerritcodereview@google.com",
    "time": "Wed May 28 16:29:22 2014 +0000"
  },
  "message": "Wrong ClassCastException with varargs of uninstantiable type.\n\nIf there is a vararg of an uninstatiable type Foo as in the following\nexample,\n\n  m(Foo... foos) {\n    ...\n  }\n\n  fooArr \u003d m();\n\nthe compiler might emit the following code for the call\n\n  fooArr \u003d (null[]) /* inlined code for m() */;\n\nSuch call will fail at runtime as the compiler determines that Foo[]\ncan not be cast to null[].\n\nThree options were considered.\n1. Make a cast from Foo[] to  null[] succeed if Foo is not\n   instantiable.\n2. Make the JNewArray AST node by of type null[] if its base type\n   was not instantiable.\n3. Don\u0027t model at all null[], i.e. don\u0027t let an array be tightned\n   to null[].\n\nThe drawbacks of 1 and 2 is loss of information by transforming casts\nto different array classes to (null[]).\n\nThe drawback of 3 is potential increase in codesize which does not\nseem to occurr in practice.\n\nBug: issue 8736.\nChange-Id: I3348836b78ad59e11685a3a55650df81afa75269\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "af202f424372ec1b32483bfe396d20290997108f",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java",
      "new_id": "ab8c41801dc48a85dfd300ee084375950e640dd8",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java"
    },
    {
      "type": "modify",
      "old_id": "f77281aba1ed360840061693ae7834d1a0f9e94a",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java",
      "new_id": "1813d2de2c169bfdfe8bacfbd5b7c1bc947e73ca",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java"
    },
    {
      "type": "modify",
      "old_id": "bbaa2db909415aa60b6bdaf735b738acdc5b241d",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java",
      "new_id": "836dc17b3f67e8575bcc5b6235285e0ebd1a955c",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java"
    },
    {
      "type": "modify",
      "old_id": "f780cae78125bb8abc493b787673f51c2cb0f07b",
      "old_mode": 33188,
      "old_path": "user/test/com/google/gwt/dev/jjs/test/VarargsTest.java",
      "new_id": "23e0a034380d1ad4173b4e4fc51de0a421252957",
      "new_mode": 33188,
      "new_path": "user/test/com/google/gwt/dev/jjs/test/VarargsTest.java"
    }
  ]
}
