)]}'
{
  "commit": "70d54df4f6bd63b0057d718c6fc3fffc0d94bbc1",
  "tree": "662b46e0f1df451dff6305772ecd0c113a8c8641",
  "parents": [
    "2f3db220d1ff1610e315d95d276782d4533f052b"
  ],
  "author": {
    "name": "Dan Scales",
    "email": "danscales@google.com",
    "time": "Fri Mar 12 11:36:02 2021 -0800"
  },
  "committer": {
    "name": "Dan Scales",
    "email": "danscales@google.com",
    "time": "Wed Mar 17 16:53:00 2021 +0000"
  },
  "message": "cmd/compile:  getting more built-ins to work with generics\n\nFor Builtin ops, we currently stay with using the old\ntypechecker to transform the call to a more specific expression\nand possibly use more specific ops. However, for a bunch of the\nops, we delay calling the old typechecker if any of the args have\ntype params, for a variety of reasons.\n\nIn the near future, we will start creating separate functions that do\nthe same transformations as the old typechecker for calls, builtins,\nindexing, comparisons, etc. These functions can then be called at noder\ntime for nodes with no type params, and at stenciling time for nodes\nwith type params.\n\nRemove unnecessary calls to types1 typechecker for most kinds of\nstatements (still need it for SendStmt, AssignStmt, ReturnStmt, and\nSelectStmt). In particular, we don\u0027t need it for RangeStmt, and this\navoids some complaints by the types1 typechecker on generic code.\n\nOther small changes:\n - Fix check on whether to delay calling types1-typechecker on type\n   conversions. Should check if HasTParam is true, rather than if the\n   type is directly a TYPEPARAM.\n\n - Don\u0027t call types1-typechecker on an indexing operation if the left\n   operand has a typeparam in its type and is not obviously a TMAP,\n   TSLICE, or TARRAY. As above, we will eventually have to create a new\n   function that can do the required transformations (for complicated\n   cases) at noder time or stenciling time.\n\n - Copy n.BuiltinOp in subster.node()\n\n - The complex arithmetic example in absdiff.go now works.\n\n - Added new tests double.go and append.go\n\n - Added new example with a new() call in settable.go\n\nChange-Id: I8f377afb6126cab1826bd3c2732aa8cdf1f7e0b4\nReviewed-on: https://go-review.googlesource.com/c/go/+/301951\nRun-TryBot: Dan Scales \u003cdanscales@google.com\u003e\nTryBot-Result: Go Bot \u003cgobot@golang.org\u003e\nTrust: Dan Scales \u003cdanscales@google.com\u003e\nTrust: Robert Griesemer \u003cgri@golang.org\u003e\nReviewed-by: Robert Griesemer \u003cgri@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "989ebf236e4043c3ea6bc67c3524d312d7fedca4",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/expr.go",
      "new_id": "1ca5552879ed05019c254912eb5d4dac5b20fdea",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/expr.go"
    },
    {
      "type": "modify",
      "old_id": "cf7a3e22b345c3f86b1979d705a15ed630b4018b",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/helpers.go",
      "new_id": "1210d4b58cc35b1f452a86e883090c002a81a8b9",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/helpers.go"
    },
    {
      "type": "modify",
      "old_id": "64b3a942e2738ebbb425322cb3193e87136c3314",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/stencil.go",
      "new_id": "55aee9b6ffbd794ef573f3676417fb03d1af6be6",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/stencil.go"
    },
    {
      "type": "modify",
      "old_id": "1775116f41ce2c7080b02439f68f082dfb08c596",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/stmt.go",
      "new_id": "31c6bfe5c8a92c9df326839bd289cb06320690ce",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/stmt.go"
    },
    {
      "type": "modify",
      "old_id": "5dd58f14f7e6e59a60d445c09335b370be6e6004",
      "old_mode": 33188,
      "old_path": "test/typeparam/absdiff.go",
      "new_id": "1381d7c92c90b54ed910aff292dd061709bc26e7",
      "new_mode": 33188,
      "new_path": "test/typeparam/absdiff.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b9bc2039fc310d5971c128bbefcefc44540ceba",
      "new_mode": 33188,
      "new_path": "test/typeparam/append.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1f7a26c7f4ded73eae646e503446f33cfd3d545e",
      "new_mode": 33188,
      "new_path": "test/typeparam/double.go"
    },
    {
      "type": "modify",
      "old_id": "29874fb189b313042c8ff1992b5845fbab59e65e",
      "old_mode": 33188,
      "old_path": "test/typeparam/settable.go",
      "new_id": "588166da8584fad5b19ce4ec32026202fcb420aa",
      "new_mode": 33188,
      "new_path": "test/typeparam/settable.go"
    }
  ]
}
