)]}'
{
  "commit": "b71bd25a974fa3e7e5bcc156f7d746635f64192c",
  "tree": "2d5bc6345e4607f54df51420b25d9fb6855cf007",
  "parents": [
    "ca59d05807dc6e54f0307dfe3bf8a13d0f609a95"
  ],
  "author": {
    "name": "Erik Ernst",
    "email": "eernst@google.com",
    "time": "Fri Apr 08 17:44:18 2022 +0000"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Fri Apr 08 17:44:18 2022 +0000"
  },
  "message": "Add test about evaluation order\n\nThis CL adds a test of the evaluation order in the case where a function\ninvocation `g(a)` or `r.g(a)` involves the invocation of a getter `g` that\nreturns a function object, and that function object is invoked with an\nactual argument `a`.\n\nThe expectation in the test is that evaluation occurs left-to-right in\nevery case, with one exception: when `g` is a class instance getter (this\ndoes not apply to extension instance getters) the actual argument list\nis evaluated before the getter. This is the actually implemented behavior,\nand the specification is being updated to specify this behavior\n(cf. https://github.com/dart-lang/language/pull/2182).\n\n------- Old description:\n\nA piece of technical debt which has been around for several years is the\nfact that the specified left-to-right evaluation order isn\u0027t implemented\neverywhere.\n\nIn particular, with an ordinary invocation like `r.m(a)` where `m` is a\ngetter that returns a function, the argument is evaluated before the\ngetter is called, which is not a left-to-right ordering.\n\nThis CL adds a test (with 2 libraries) where the evaluation order is\ndetected, such that we can decide how to proceed.\n\nChange-Id: Ia2619fe6b4c4cf4cec63bac9c9f834306bdefe52\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/238903\nReviewed-by: Lasse Nielsen \u003clrn@google.com\u003e\nCommit-Queue: Erik Ernst \u003ceernst@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dd06624e5de3479b983f7adf4624f1c6d69d77cf",
      "new_mode": 33188,
      "new_path": "tests/language/call/evaluation_order_lib.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5d88df7429f897572e853c6b6616dfc9e9f508b5",
      "new_mode": 33188,
      "new_path": "tests/language/call/evaluation_order_test.dart"
    }
  ]
}
