)]}'
{
  "commit": "bbe07eac6076c88a3470a387fa35fdb606d2d4c7",
  "tree": "a8dbd4676aede6facfe5a56cd08cb5cbbae7e663",
  "parents": [
    "5d7abf099949ab26f3979a23c887d0ff9814c24e"
  ],
  "author": {
    "name": "Peter Weinberger",
    "email": "pjw@google.com",
    "time": "Sun Oct 11 15:18:39 2026 -0400"
  },
  "committer": {
    "name": "Peter Weinberger",
    "email": "pjw@google.com",
    "time": "Mon Oct 12 10:49:26 2026 -0700"
  },
  "message": "gopls/internal/golang: handle Typ[Invalid]\n\nPrepare for go.dev/cl/848066, which records invalid expressions\nin types.Info.Types with type Typ[Invalid] rather than omitting them:\n\n- In completion.selector and addPostfixSnippetCandidates, check\n  typeIsValid so that undeclared identifiers (such as unimported\n  package names) are not treated as valid selector operands and do not\n  trigger postfix snippet template errors.\n\n- In completion.builtinArgType, fall back to the parent expected type\n  when the first argument to append has an invalid type.\n\n- In hover, do not report hover information for non-identifier\n  expressions with Typ[Invalid] (such as malformed basic literals).\n\n- In dynamicFuncCallType, do not treat calls to expressions with\n  Typ[Invalid] (such as undeclared identifiers) as dynamic function\n  calls.\n\nFor golang/go#82058\n\nChange-Id: Ia1bbfad6a93f0fbb609cb107735f8f46abc24ed7\nReviewed-on: https://go-review.googlesource.com/c/tools/+/848625\nReviewed-by: Madeline Kalil \u003cmkalil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "04e99967786a2a7781fa59e77d40deb0b24112e7",
      "old_mode": 33188,
      "old_path": "gopls/internal/golang/completion/builtin.go",
      "new_id": "35b1a53acee027116cfc85082f16c072f73fb5d4",
      "new_mode": 33188,
      "new_path": "gopls/internal/golang/completion/builtin.go"
    },
    {
      "type": "modify",
      "old_id": "7084c40e80a9c7d430b0d6cb628d4641154dafa3",
      "old_mode": 33188,
      "old_path": "gopls/internal/golang/completion/completion.go",
      "new_id": "c26ce6c76d4929a741a27a4a269b08c3408b87b8",
      "new_mode": 33188,
      "new_path": "gopls/internal/golang/completion/completion.go"
    },
    {
      "type": "modify",
      "old_id": "a890f44ba5f16c7954a6b130ef88f246739418e5",
      "old_mode": 33188,
      "old_path": "gopls/internal/golang/completion/postfix_snippets.go",
      "new_id": "e60294036f12c7db0b909a871fd389f715d97419",
      "new_mode": 33188,
      "new_path": "gopls/internal/golang/completion/postfix_snippets.go"
    },
    {
      "type": "modify",
      "old_id": "a1d0a663a280a990719b40f97b69ad6f8f9323fc",
      "old_mode": 33188,
      "old_path": "gopls/internal/golang/hover.go",
      "new_id": "dc411062295ebaa9891b4046cee073db3ac69eae",
      "new_mode": 33188,
      "new_path": "gopls/internal/golang/hover.go"
    },
    {
      "type": "modify",
      "old_id": "220ba0a1cc11b9f2c1649260884aee9d1b237042",
      "old_mode": 33188,
      "old_path": "gopls/internal/golang/implementation.go",
      "new_id": "65de3af06fa05d88b12ae89c2895e36f855c2a26",
      "new_mode": 33188,
      "new_path": "gopls/internal/golang/implementation.go"
    }
  ]
}
