)]}'
{
  "commit": "3d2d6492c1f49124eefdff7dc945ed0fa09565ce",
  "tree": "36c4109a37b0a328460a6a7268b57c44bd24c286",
  "parents": [
    "d29b88d152344f7ef1a11ae9d45b55c3cebfeccd"
  ],
  "author": {
    "name": "Nate Biggs",
    "email": "natebiggs@google.com",
    "time": "Mon Apr 27 09:42:38 2026 -0700"
  },
  "committer": {
    "name": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Apr 27 09:42:38 2026 -0700"
  },
  "message": "Add \u0027external-effect\u0027 pragma support to all the backends.\n\nCall sites targeting a procedure annotated with `external-effect` will\nnot produce any code, including the argument which will not be\nevaluated.\n\nHowever, the single parameter will be treated as \u0027live\u0027 for the purposes\nof any global analysis the backends do. This is useful for things like\nprotobuf shaking where a user may want to retain certain protobuf\nmessages without actually emitting the code that retains those messages.\n\nToday this functionality is available internally in the vm and wasm SDK\nlibraries. dart2js has similar functionality represented via the\nopaqueTrue and opaqueFalse booleans (which will cause conditional\nbranches to get shaken after analysis). This will replace dart2js\u0027s\nopaque(True/False).\n\nThis also adds validation to the frontend to ensure a method annotated\nwith \u0027external-effect\u0027 is well-formed.\n\nChange-Id: If1c4096673e655c58fe7638840a16125003e7809\nTested: Backend tests for codegen were added. A frontend test was added for the validation. A language test was added to confirm the behavior.\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/476020\nReviewed-by: Alexander Markov \u003calexmarkov@google.com\u003e\nCommit-Queue: Nate Biggs \u003cnatebiggs@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "76c08d297d180e33c2e429ab5c8ae3bac7469a57",
      "old_mode": 33188,
      "old_path": "pkg/_js_interop_checks/lib/js_interop_checks.dart",
      "new_id": "6b238d10f93010b4fe82a0653f7b21e7c0ab5021",
      "new_mode": 33188,
      "new_path": "pkg/_js_interop_checks/lib/js_interop_checks.dart"
    },
    {
      "type": "modify",
      "old_id": "3cf822b6d73fde581e51efc9c397732a779f447f",
      "old_mode": 33188,
      "old_path": "pkg/compiler/doc/pragmas.md",
      "new_id": "74210ec69f018e7905535bf34ed2c2908b11ab13",
      "new_mode": 33188,
      "new_path": "pkg/compiler/doc/pragmas.md"
    },
    {
      "type": "modify",
      "old_id": "8bed4ef0a0f059da840d1a85f6227ec51a63c59d",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/kernel/element_map_impl.dart",
      "new_id": "2796186c722dcaa664d0b5e0e28e3b830017b438",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/kernel/element_map_impl.dart"
    },
    {
      "type": "modify",
      "old_id": "c46ef37b332068288614dba46c0c19d98f87b5cf",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/ssa/builder.dart",
      "new_id": "ccc6bfefbfb01467803462eeccb64bcda84a3ae4",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/ssa/builder.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8498ce8c1ed3dc172a50e31fdcdd51be06792c05",
      "new_mode": 33188,
      "new_path": "pkg/compiler/test/codegen/data/external_effect.dart"
    },
    {
      "type": "modify",
      "old_id": "34a20f5b592c3d8dba9b9addc4117cd5a81027fe",
      "old_mode": 33188,
      "old_path": "pkg/dart2bytecode/lib/bytecode_generator.dart",
      "new_id": "c28cf8da3bf990468deb7f3d80acc6b9c838ac2b",
      "new_mode": 33188,
      "new_path": "pkg/dart2bytecode/lib/bytecode_generator.dart"
    },
    {
      "type": "modify",
      "old_id": "2a1798f8286a648740fb70abd0025606abfbfce1",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/code_generator.dart",
      "new_id": "00e5d45f6182f7ceecde1642b318fafcda75742a",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/code_generator.dart"
    },
    {
      "type": "modify",
      "old_id": "bafb49b4bff967c6b15c45acb41d3c258f7ef372",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/intrinsics.dart",
      "new_id": "fe20cac65f1f668c229a54e68a88c634925c7622",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/intrinsics.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4e4a40462ef3d2d1e8ef276dd4d67063a6cf9518",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/test/ir_tests/external_effect.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "603b4c8f4241cd45b0db1334a5daa2617b940be8",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/test/ir_tests/external_effect.wat"
    },
    {
      "type": "modify",
      "old_id": "c5904a580a0d29bb0ce331167d7019c5ea60e464",
      "old_mode": 33188,
      "old_path": "pkg/dev_compiler/lib/src/kernel/compiler.dart",
      "new_id": "721f433a7326aee6c99c2ebd5dcd5651e519810a",
      "new_mode": 33188,
      "new_path": "pkg/dev_compiler/lib/src/kernel/compiler.dart"
    },
    {
      "type": "modify",
      "old_id": "a7a5d63ebe677408d0316b9eb2137272c866d63d",
      "old_mode": 33188,
      "old_path": "pkg/dev_compiler/lib/src/kernel/compiler_new.dart",
      "new_id": "a19b2c5c526f6f81c911fa02a1edbbb3d958da1f",
      "new_mode": 33188,
      "new_path": "pkg/dev_compiler/lib/src/kernel/compiler_new.dart"
    },
    {
      "type": "modify",
      "old_id": "da6f42c505812ee290fb2f846a7750959e2e2df2",
      "old_mode": 33188,
      "old_path": "pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart",
      "new_id": "efdbc43dffa083ccc753bfc7f817113e9375e491",
      "new_mode": 33188,
      "new_path": "pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8ca3a9ddf2ab7792aafd0eeb2e93433d6ab9a45c",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/api_prototype/external_effect.dart"
    },
    {
      "type": "modify",
      "old_id": "74e7d8b88723dd71bd6fcf1e7a612fa4d67c4d6d",
      "old_mode": 33188,
      "old_path": "pkg/front_end/lib/src/builder/metadata_builder.dart",
      "new_id": "8bc36d6d6bf47ab169126031ff599a4c11ac3df4",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/builder/metadata_builder.dart"
    },
    {
      "type": "modify",
      "old_id": "ded27c0654d6eb7000da72e0c3615b1d341e46bb",
      "old_mode": 33188,
      "old_path": "pkg/front_end/lib/src/codes/diagnostic.g.dart",
      "new_id": "b7242d670f1231b298556cdc0795d94ce872af75",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/codes/diagnostic.g.dart"
    },
    {
      "type": "modify",
      "old_id": "1dcab3ae7594257aa97b9b9dbbfb3604874d7758",
      "old_mode": 33188,
      "old_path": "pkg/front_end/lib/src/kernel/constant_evaluator.dart",
      "new_id": "e08b353a7ce2e35ae0640e04d005145b80a0c390",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/kernel/constant_evaluator.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "711d9413f2e99a5a2a24fc191d7bdef6cba14824",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/kernel/external_effect.dart"
    },
    {
      "type": "modify",
      "old_id": "0574f439326c51ab2f474cde903461ae0aae5d68",
      "old_mode": 33188,
      "old_path": "pkg/front_end/lib/src/kernel/static_weak_references.dart",
      "new_id": "97b5c4e25203da1f364750dbb52795ef14248ec9",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/kernel/static_weak_references.dart"
    },
    {
      "type": "modify",
      "old_id": "d02a830ca2af9c2f248e48a319af608eec10056e",
      "old_mode": 33188,
      "old_path": "pkg/front_end/lib/src/kernel/utils.dart",
      "new_id": "aa5c944fb7facd7f9761cf48c134763103f1fd27",
      "new_mode": 33188,
      "new_path": "pkg/front_end/lib/src/kernel/utils.dart"
    },
    {
      "type": "modify",
      "old_id": "febb0c9a683fe788b80ca093a96b9d9e8897b461",
      "old_mode": 33188,
      "old_path": "pkg/front_end/messages.yaml",
      "new_id": "f1acfea1d1ab479fa6796dedda97a7fe4dd38126",
      "new_mode": 33188,
      "new_path": "pkg/front_end/messages.yaml"
    },
    {
      "type": "modify",
      "old_id": "ddf5b535114e7a3b98a4b557bb901af301b58a41",
      "old_mode": 33188,
      "old_path": "pkg/front_end/test/lint_test.status",
      "new_id": "079b5e3f0920f706bb33d092bb378cbfca2cc175",
      "new_mode": 33188,
      "new_path": "pkg/front_end/test/lint_test.status"
    },
    {
      "type": "modify",
      "old_id": "a39de4d45693b9ae52f18456b0ae2b3d3263d028",
      "old_mode": 33188,
      "old_path": "pkg/front_end/test/spell_checking_list_messages.txt",
      "new_id": "0a5e0393b8df1c3f2ab039d6a49a2d4a1a73a925",
      "new_mode": 33188,
      "new_path": "pkg/front_end/test/spell_checking_list_messages.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0972162cab1136f64417c57ac7c40ac77981f6aa",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/invalid_annotations.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20080188c76ec537fb1d533fda60dc0baf7c0f60",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/invalid_annotations.dart.strong.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20080188c76ec537fb1d533fda60dc0baf7c0f60",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/invalid_annotations.dart.strong.modular.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "10d4ef766fd93fd2e8f82796be6ac2c5261e6ac1",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/invalid_annotations.dart.strong.outline.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20080188c76ec537fb1d533fda60dc0baf7c0f60",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/invalid_annotations.dart.strong.transformed.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dd8310ad3c9ee911fc90646388fc5dd97e19d16f",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/invalid_annotations.dart.textual_outline.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47487dcc2aad266928c9200462537d7d08348a9c",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/invalid_annotations.dart.textual_outline_modelled.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8568f7e2ac138f42822c2e9dbc788d16af6e4e46",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/valid_annotations.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ec2ac16bc9680031a77e388e2a877e7a3f725f1a",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/valid_annotations.dart.strong.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ec2ac16bc9680031a77e388e2a877e7a3f725f1a",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/valid_annotations.dart.strong.modular.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0d575aa21c864bc9f4de5b3325cbfed95d73c39e",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/valid_annotations.dart.strong.outline.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ec2ac16bc9680031a77e388e2a877e7a3f725f1a",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/valid_annotations.dart.strong.transformed.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fb348535d87bf926522b2c526a1723642f3267ce",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/valid_annotations.dart.textual_outline.expect"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8d5f1a936431f94f255403c5728519aae5258d52",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/external_effect/valid_annotations.dart.textual_outline_modelled.expect"
    },
    {
      "type": "modify",
      "old_id": "eb02bc4dc82e7c41e21bfa8e923e799adf92c3e1",
      "old_mode": 33188,
      "old_path": "pkg/kernel/binary.md",
      "new_id": "41a934e8273f902994650299c0ee0b7c3d58ae21",
      "new_mode": 33188,
      "new_path": "pkg/kernel/binary.md"
    },
    {
      "type": "modify",
      "old_id": "6315e2cac37a4bea28cb8f2a860f549acbbb2199",
      "old_mode": 33188,
      "old_path": "pkg/kernel/lib/src/ast/members.dart",
      "new_id": "76d401ef48ad65297eee372a3b08c533bc33e0bb",
      "new_mode": 33188,
      "new_path": "pkg/kernel/lib/src/ast/members.dart"
    },
    {
      "type": "modify",
      "old_id": "e0010ae8762bd65ef953bb18ee9a7083f03cdb19",
      "old_mode": 33188,
      "old_path": "pkg/kernel/lib/text/ast_to_text.dart",
      "new_id": "44a73736366934f6cb3d8821cc0a9f3efc084c73",
      "new_mode": 33188,
      "new_path": "pkg/kernel/lib/text/ast_to_text.dart"
    },
    {
      "type": "modify",
      "old_id": "72bacff43c4c061040537843284152bf5277ebb3",
      "old_mode": 33188,
      "old_path": "runtime/docs/compiler/pragmas_recognized_by_compiler.md",
      "new_id": "81339c1327a287728cf7c53774959601d007e141",
      "new_mode": 33188,
      "new_path": "runtime/docs/compiler/pragmas_recognized_by_compiler.md"
    },
    {
      "type": "modify",
      "old_id": "f0da7fd323ed4793bf2473edb1466373fb64da5a",
      "old_mode": 33188,
      "old_path": "runtime/docs/pragmas.md",
      "new_id": "6260b46f0e19b3aed904a179ccfbada3e21e3a5e",
      "new_mode": 33188,
      "new_path": "runtime/docs/pragmas.md"
    },
    {
      "type": "modify",
      "old_id": "39d530beeb9483970a4d4c5bc0db0d8ff3cd27a8",
      "old_mode": 33188,
      "old_path": "runtime/lib/object.cc",
      "new_id": "13a0bd3b677dc571bb48e3be976697ba171f014d",
      "new_mode": 33188,
      "new_path": "runtime/lib/object.cc"
    },
    {
      "type": "modify",
      "old_id": "c6bfb48c430e8b63e9a28b6c114427873308dcf3",
      "old_mode": 33188,
      "old_path": "runtime/vm/bootstrap_natives.h",
      "new_id": "ab38f4db492c38cf7231e67065b229dcef3649fa",
      "new_mode": 33188,
      "new_path": "runtime/vm/bootstrap_natives.h"
    },
    {
      "type": "modify",
      "old_id": "5d8221ccb54f48fad00a8e80a2767335ae17a434",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc",
      "new_id": "c259aacfb5f143aaa50fb4be623ddc6556981f36",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc"
    },
    {
      "type": "modify",
      "old_id": "9e903a9b7a0aea54debc41fef74b5598bdcd0bb1",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/frontend/kernel_binary_flowgraph.h",
      "new_id": "871563e2d3f64581012226cf352c9ba7b9d6c5cb",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/frontend/kernel_binary_flowgraph.h"
    },
    {
      "type": "modify",
      "old_id": "d530b7f56d32a60eee1effa90e364ea9a681e41f",
      "old_mode": 33188,
      "old_path": "runtime/vm/compiler/recognized_methods_list.h",
      "new_id": "7e0e86116f35c7c73c0b8c2e9e3d030c500b757f",
      "new_mode": 33188,
      "new_path": "runtime/vm/compiler/recognized_methods_list.h"
    },
    {
      "type": "modify",
      "old_id": "99d308beb32db731541a1b51b1c183c36745e6db",
      "old_mode": 33188,
      "old_path": "runtime/vm/object.cc",
      "new_id": "b39e22e576d61b7e8a96ec8c142675060c412fa2",
      "new_mode": 33188,
      "new_path": "runtime/vm/object.cc"
    },
    {
      "type": "modify",
      "old_id": "c4c131400ad553aec2a80c7b47f21a7c5d8e697f",
      "old_mode": 33188,
      "old_path": "runtime/vm/object.h",
      "new_id": "bc58ae9a9ee06d6ba816a549ec4f5a43418c7170",
      "new_mode": 33188,
      "new_path": "runtime/vm/object.h"
    },
    {
      "type": "modify",
      "old_id": "d610bea7702ca972b1f95f23b3b8f2070418d00c",
      "old_mode": 33188,
      "old_path": "runtime/vm/symbol_list.h",
      "new_id": "2391059bf74c7472827a3f376c01418ce969e5bf",
      "new_mode": 33188,
      "new_path": "runtime/vm/symbol_list.h"
    },
    {
      "type": "modify",
      "old_id": "d13d7f8ed318d46343b46ba1d3eb3ae886301557",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/vm/lib/internal_patch.dart",
      "new_id": "3454107fc9694af165c388b0be339a8e4a6e09d9",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/vm/lib/internal_patch.dart"
    },
    {
      "type": "modify",
      "old_id": "eaddf9ada36bba5eb7af1f69d4d81bbdf8558f17",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/wasm/lib/internal_patch.dart",
      "new_id": "36ba55157f238536930d0cc9a441da241e73723d",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/wasm/lib/internal_patch.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "71d72f94eac5b75691d21748240aca78b8acd137",
      "new_mode": 33188,
      "new_path": "tests/language/method/external_effect_test.dart"
    }
  ]
}
