)]}'
{
  "commit": "2b3823f4a9309c23b0b1d1c0faa31df5f9a24c54",
  "tree": "f9dd649fba376a087a273ed59d25911838e0b703",
  "parents": [
    "1a679da972494215f68067ce52f36fd5fcecfaef"
  ],
  "author": {
    "name": "Olivier Chafik",
    "email": "ochafik@google.com",
    "time": "Wed Feb 10 18:22:21 2016"
  },
  "committer": {
    "name": "Olivier Chafik",
    "email": "ochafik@google.com",
    "time": "Wed Feb 10 18:22:21 2016"
  },
  "message": "Emit TypeScript / Closure ES6_TYPED type annotations in --closure mode (instead of closure comments).\n\n- Replaced ClosureType by a general JS.TypeRef, used in AST for identifier types, return types\n- Convert DartType to JS.TypeRef (in mixin JsTypeRefCodegen), including type parameters (also added to AST in Fun \u0026 ClassExpression)\n- Emit field declarations expected by TS\n- Wrote a TypeScriptTypePrinter (mixed in by Printer) and a ClosureTypePrinter (might disappear soon)\n- Simplified annotation code, called in more places (seems to gives more source info)\n\nExample input:\n\n  List/*\u003cT\u003e*/ func/*\u003cT\u003e*/(List/*\u003cT\u003e*/ items, dynamic/*\u003dT*/ seed) {}\n\n  class Foo\u003cT\u003e {\n    int i;\n    static var x;\n    Foo(this.i, o, {String v : \"?\"}) {}\n  }\n\nOutput:\n\n  function func\u003cT\u003e(items: core.List\u003cT\u003e, seed: T): core.List\u003cT\u003e {}\n\n  const Foo$ \u003d dart.generic(function(T) {\n    class Foo\u003cT\u003e extends core.Object {\n      i: number;\n      static x;\n      Foo(i: number, o, {v \u003d \"?\"}: {v?: string} \u003d {}) {\n        this.i \u003d i;\n      }\n    }\n    ...\n    Foo.x \u003d null;\n    return Foo;\n  });\n\nKnown remaining issues:\n- typedefs expect a `type Callback \u003d (...) \u003d\u003e ...;` statement\n- `exports` is a reserved keyword in TS (either we change the way we do exports, or we\u0027ll need a different temp + extra type annotations of the default-exported object).\n- Generic type is currently locked inside the generic call. Might be able to solve by exporting signatures in .d.ts file, or changing the way we do generics.\n\nBUG\u003d\nR\u003djmesserly@google.com\n\nReview URL: https://codereview.chromium.org/1676463002 .\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ef502bca2c2c8636286614e271257d435a85fe2e",
      "old_mode": 33188,
      "old_path": "lib/src/closure/closure_annotation.dart",
      "new_id": "b139a67706de9411e14699838552f5bd389c9f18",
      "new_mode": 33188,
      "new_path": "lib/src/closure/closure_annotation.dart"
    },
    {
      "type": "modify",
      "old_id": "7229a1da9983d0bcd6ee110fca69d112d8ab61a9",
      "old_mode": 33188,
      "old_path": "lib/src/closure/closure_annotator.dart",
      "new_id": "d527b3df035ca75b72828c69142e1bf662403ea6",
      "new_mode": 33188,
      "new_path": "lib/src/closure/closure_annotator.dart"
    },
    {
      "type": "modify",
      "old_id": "9650a36306b195dc94a98398d8b63c6e0951ea0b",
      "old_mode": 33188,
      "old_path": "lib/src/codegen/js_codegen.dart",
      "new_id": "005808114b65eefe3e35961473b15a75dcb16424",
      "new_mode": 33188,
      "new_path": "lib/src/codegen/js_codegen.dart"
    },
    {
      "type": "modify",
      "old_id": "307e52e0b29df5e052720c615ab12cfd994244d5",
      "old_mode": 33188,
      "old_path": "lib/src/codegen/js_names.dart",
      "new_id": "867d85b0e89bd769a0e6b8348ba11a175f6258fa",
      "new_mode": 33188,
      "new_path": "lib/src/codegen/js_names.dart"
    },
    {
      "type": "modify",
      "old_id": "50ce6ba4ecc43dcfaf6431aa16059c11f326f34f",
      "old_mode": 33188,
      "old_path": "lib/src/codegen/js_printer.dart",
      "new_id": "3325870303cabdb4775e9cf1be0b8a73970e8f26",
      "new_mode": 33188,
      "new_path": "lib/src/codegen/js_printer.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f6f5d61e0c5fc416291703623f2f75c616ac0304",
      "new_mode": 33188,
      "new_path": "lib/src/codegen/js_typeref_codegen.dart"
    },
    {
      "type": "modify",
      "old_id": "1c9481738e311e5f7998ac59299585aee06c1b7a",
      "old_mode": 33188,
      "old_path": "lib/src/js/js_ast.dart",
      "new_id": "68c706a9425e25a9c6235203e4cc158b378f814a",
      "new_mode": 33188,
      "new_path": "lib/src/js/js_ast.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "526d19a6b067cd55e8d55d1b026373b9587e7b6b",
      "new_mode": 33188,
      "new_path": "lib/src/js/js_types.dart"
    },
    {
      "type": "modify",
      "old_id": "5d0b3d172e7b5d96ae1e9cc0ee01b9290037217d",
      "old_mode": 33188,
      "old_path": "lib/src/js/nodes.dart",
      "new_id": "cd0e807a9542a3cf4c5cb13da93722b2f49473a4",
      "new_mode": 33188,
      "new_path": "lib/src/js/nodes.dart"
    },
    {
      "type": "modify",
      "old_id": "02bf379a74871a8b82bd27ef89827c59c42b1c54",
      "old_mode": 33188,
      "old_path": "lib/src/js/printer.dart",
      "new_id": "cc347255cb69d824453503dc5aeac5ba30f5cda4",
      "new_mode": 33188,
      "new_path": "lib/src/js/printer.dart"
    },
    {
      "type": "modify",
      "old_id": "c13218e29793ac755ab70a9e6ed3082cfd61c8b2",
      "old_mode": 33188,
      "old_path": "lib/src/js/template.dart",
      "new_id": "eb55252a95903d41d2029c076ae9324af6c96e29",
      "new_mode": 33188,
      "new_path": "lib/src/js/template.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5f47711e294adab525c5cd6d5abc9f6d252bf135",
      "new_mode": 33188,
      "new_path": "lib/src/js/type_printer.dart"
    },
    {
      "type": "modify",
      "old_id": "8793b073b66f93ec64c9e4cab03a74ba018f014d",
      "old_mode": 33188,
      "old_path": "test/closure/closure_annotation_test.dart",
      "new_id": "8f3ca33bd73ce2c60e0cb7ca7bf59249be56b810",
      "new_mode": 33188,
      "new_path": "test/closure/closure_annotation_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d40e8a759476cb00dc1ce07b1106c078aeab547c",
      "old_mode": 33188,
      "old_path": "test/codegen/closure.dart",
      "new_id": "d909a1d0d66a5aea865e721a6a7c1d0bbc4768e1",
      "new_mode": 33188,
      "new_path": "test/codegen/closure.dart"
    },
    {
      "type": "modify",
      "old_id": "5449e698cc2497eb2354c260be9535485e7ebc99",
      "old_mode": 33188,
      "old_path": "test/codegen/expect/closure.js",
      "new_id": "6547938d252d28503e63e6b82545499c1950b2db",
      "new_mode": 33188,
      "new_path": "test/codegen/expect/closure.js"
    },
    {
      "type": "modify",
      "old_id": "52c36836d643f2d6f14acc3b00a5f75d883a5c8f",
      "old_mode": 33188,
      "old_path": "test/codegen/expect/collection/src/unmodifiable_wrappers.txt",
      "new_id": "f1348aceb8bcff74335416d276a0479994cca0c4",
      "new_mode": 33188,
      "new_path": "test/codegen/expect/collection/src/unmodifiable_wrappers.txt"
    },
    {
      "type": "modify",
      "old_id": "d876cc7cbdfb4c61c36258086af7f1595bf07658",
      "old_mode": 33188,
      "old_path": "test/codegen/expect/collection/src/wrappers.txt",
      "new_id": "3be4c77ea9481701a4f23bff698739a7d8323396",
      "new_mode": 33188,
      "new_path": "test/codegen/expect/collection/src/wrappers.txt"
    },
    {
      "type": "modify",
      "old_id": "31828d7366a961bee48186600348828ba5c55da8",
      "old_mode": 33188,
      "old_path": "test/codegen/expect/map_keys.js.map",
      "new_id": "43afa06a33f82c600f4ae3816c66e55d525866ba",
      "new_mode": 33188,
      "new_path": "test/codegen/expect/map_keys.js.map"
    },
    {
      "type": "modify",
      "old_id": "ba4c447028f05228ed64c72b18e2d830fb19a089",
      "old_mode": 33188,
      "old_path": "test/codegen_test.dart",
      "new_id": "c102bd77586b9df68a35b4734fe248d8b8539459",
      "new_mode": 33188,
      "new_path": "test/codegen_test.dart"
    }
  ]
}
