)]}'
{
  "commit": "dbb7cceb2024d55b0186f981848a5c8d0b27893f",
  "tree": "fbea08377ce8e611634d2f216d1be3d53f0ead14",
  "parents": [
    "335ad151d305f85ee197fb28470b7f0a5b077ac0"
  ],
  "author": {
    "name": "Roberto Lublinerman",
    "email": "rluble@google.com",
    "time": "Thu Nov 09 20:00:55 2017 -0800"
  },
  "committer": {
    "name": "Roberto Lublinerman",
    "email": "rluble@google.com",
    "time": "Thu Nov 16 17:21:06 2017 -0800"
  },
  "message": "Allow native JsMethods coexist with implementations with the same name.\n\nSince there is no overloading in JavaScript, J2CL can only have one\nmember providing the implementation for a name. Based on that rule,\nmultiple native members using the same name are ok as long as at the\nend there is only one method exists with an implementation.\nWe call this \"one live implementation\" rule and we won\u0027t emit an error\nas long as the class follows the rule.\n\nThis allows user to override an implementation with a native override,\nand provide a new member to take over the implementation.\n\nFor example;\n\n  @JsType\n  class A {\n    public void m() { }\n    public native void m(int i);\n  }\n\n  @JsType\n  class B {\n    @Override\n    public native void m();\n    public void m(Object o) { }\n  }\n\nis allowed because at class \"B\", \"void m()\" is overridden the previous\nimplementation in \"A\" making it native hence no existing implementation\nremains except the new provided overload in \"B\". This makes the class B\nfit into one live implementation rule.\n\nChange-Id: I4fb2217231b97dee9f7e9c67bd4acb6f210c5b16\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4fb23b7f742b3b2abde56dcde9f7d3183a2bc273",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/MinimalRebuildCache.java",
      "new_id": "eea03414547a3707b7f71bfb03afaf6dbbbd3d2f",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/MinimalRebuildCache.java"
    },
    {
      "type": "modify",
      "old_id": "b8bb5991ba6f3f746b127d587a80a2f547e13ddc",
      "old_mode": 33188,
      "old_path": "dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java",
      "new_id": "02c86fbdc06a4df1467dad73e1bee15253495daf",
      "new_mode": 33188,
      "new_path": "dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java"
    },
    {
      "type": "modify",
      "old_id": "9e9af720c3ecf04347cb35da8045cb3c78287611",
      "old_mode": 33188,
      "old_path": "dev/core/test/com/google/gwt/dev/jjs/impl/JsInteropRestrictionCheckerTest.java",
      "new_id": "a928f10114fa0f8f7d1b3fd8f4a92457bae48ac9",
      "new_mode": 33188,
      "new_path": "dev/core/test/com/google/gwt/dev/jjs/impl/JsInteropRestrictionCheckerTest.java"
    }
  ]
}
