diff --git a/Cargo.lock b/Cargo.lock index a7cf3370ac1..7719e26ffd2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,13 +18,10 @@ dependencies = [ ] [[package]] -name = "always-assert" -version = "0.2.0" +name = "allocator-api2" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1078fa1ce1e34b1872d8611ad921196d76bdd7027e949fbe31231abde201892" -dependencies = [ - "tracing", -] +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -93,9 +90,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.96" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "argfile" @@ -170,6 +167,15 @@ dependencies = [ "cfg_aliases", ] +[[package]] +name = "boxcar" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6740c6e2fc6360fa57c35214c7493826aee95993926092606f27c983b40837be" +dependencies = [ + "loom", +] + [[package]] name = "bstr" version = "1.11.3" @@ -253,9 +259,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chalk-derive" -version = "0.99.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572583d9b97f9d277e5c7607f8239a30e2e04d3ed3b47c87d1cb2152ae724073" +checksum = "ab2d131019373f0d0d1f2af0abd4f719739f6583c1b33965112455f643a910af" dependencies = [ "proc-macro2", "quote", @@ -265,9 +271,9 @@ dependencies = [ [[package]] name = "chalk-ir" -version = "0.99.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e60e0ef9c81dce1336a9ed3c76f08775f5b623151d96d85ba45f7b10de76d1c7" +checksum = "4f114996bda14c0213f014a4ef31a7867dcf5f539a3900477fc6b20138e7a17b" dependencies = [ "bitflags 2.8.0", "chalk-derive", @@ -275,9 +281,9 @@ dependencies = [ [[package]] name = "chalk-recursive" -version = "0.99.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a06350d614e22b03a69b8105e3541614450a7ea48bc58ecc6c6bd92731a3995" +checksum = "551e956e031c09057c7b21f17d48d91de99c9b6b6e34bceaf5e7202d71021268" dependencies = [ "chalk-derive", "chalk-ir", @@ -288,9 +294,9 @@ dependencies = [ [[package]] name = "chalk-solve" -version = "0.99.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e428761e9b55bee516bfe2457caed8b6d1b86353f92ae825bbe438a36ce91e8" +checksum = "cd7ca50181156ce649efe8e5dd00580f573651554e4dcd11afa4e2ac93f53324" dependencies = [ "chalk-derive", "chalk-ir", @@ -304,9 +310,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", @@ -314,14 +320,14 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "clap" -version = "4.5.31" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -329,9 +335,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.31" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -341,11 +347,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn", @@ -505,6 +511,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -559,6 +574,20 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "deranged" version = "0.3.11" @@ -583,9 +612,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "ena" @@ -714,6 +743,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "fs-err" version = "2.11.0" @@ -738,6 +773,19 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a" +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log 0.4.25", + "rustversion", + "windows", +] + [[package]] name = "getrandom" version = "0.3.1" @@ -786,12 +834,20 @@ name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] [[package]] -name = "heck" -version = "0.4.1" +name = "hashlink" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.2", +] [[package]] name = "heck" @@ -831,7 +887,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -1027,6 +1083,19 @@ version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + [[package]] name = "lz4_flex" version = "0.11.3" @@ -1271,6 +1340,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +[[package]] +name = "portable-atomic" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + [[package]] name = "powerfmt" version = "0.2.0" @@ -1288,9 +1363,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -1310,18 +1385,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] [[package]] name = "ra-ap-rustc_abi" -version = "0.97.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3829c3355d1681ffeaf1450ec71edcdace6820fe2e86469d8fc1ad45e2c96460" +checksum = "f1651b0f7e8c3eb7c27a88f39d277e69c32bfe58e3be174d286c1a24d6a7a4d8" dependencies = [ "bitflags 2.8.0", "ra-ap-rustc_hashes", @@ -1331,18 +1406,18 @@ dependencies = [ [[package]] name = "ra-ap-rustc_hashes" -version = "0.97.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd4d6d4c434bec08e02370a4f64a4985312097215a62e82d0f757f3a98e502e" +checksum = "2bcd85e93dc0ea850bcfe7957a115957df799ccbc9eea488bdee5ec6780d212b" dependencies = [ "rustc-stable-hash", ] [[package]] name = "ra-ap-rustc_index" -version = "0.97.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad6fc4bd7522e31096e2de5b0351144fe0684b608791ee26c842bf2da1b19ae" +checksum = "62b295fc0640cd9fe0ecab872ee4a17a96f90a3998ec9f0c4765e9b8415c12cc" dependencies = [ "ra-ap-rustc_index_macros", "smallvec", @@ -1350,9 +1425,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_index_macros" -version = "0.97.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb234e1f84b92be45276c3025bee18789e9bc95bec8789bec961e78edb01c52" +checksum = "c675f4257023aa933882906f13802cae287e88cc39ab13cbb96809083db0c801" dependencies = [ "proc-macro2", "quote", @@ -1361,9 +1436,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_lexer" -version = "0.97.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3a40bd11dc43d1cb110e730b80620cf8102f4cca8920a02b65954da0ed931f" +checksum = "c8358702c2a510ea84ba5801ddc047d9ad9520902cfb0e6173277610cdce2c9c" dependencies = [ "memchr", "unicode-properties", @@ -1372,9 +1447,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_parse_format" -version = "0.97.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5feb877478994cb4c0c0c7a5116a352eefc0634aefc8636feb00a893fa5b7135" +checksum = "b98f402011d46732c35c47bfd111dec0495747fef2ec900ddee7fe15d78449a7" dependencies = [ "ra-ap-rustc_index", "ra-ap-rustc_lexer", @@ -1382,9 +1457,9 @@ dependencies = [ [[package]] name = "ra-ap-rustc_pattern_analysis" -version = "0.97.0" +version = "0.100.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76774d35934d464c4115908cde16f76a4f7e540fe1eea6b79336c556e37bdd3" +checksum = "bef3ff73fa4653252ffe1d1e9177a446f49ef46d97140e4816b7ff2dad59ed53" dependencies = [ "ra-ap-rustc_index", "rustc-hash 2.1.1", @@ -1395,20 +1470,22 @@ dependencies = [ [[package]] name = "ra_ap_base_db" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8e4a327f1a8ace5afced54ebaa1a34f8cf0bb535a28aefb8300e8ea49a7d6e" +checksum = "4baa9734d254af14fd603528ad594650dea601b1764492bd39988da38598ae67" dependencies = [ + "dashmap 5.5.3", "la-arena", "lz4_flex", "ra_ap_cfg", "ra_ap_intern", - "ra_ap_salsa", + "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", "ra_ap_vfs", "rustc-hash 2.1.1", + "salsa", "semver", "tracing", "triomphe", @@ -1416,9 +1493,9 @@ dependencies = [ [[package]] name = "ra_ap_cfg" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d974450788b1f90243c5f2231875ed4d7087444975c0190a1c2cb02c3ed465d" +checksum = "0ef2ba45636c5e585040c0c4bee640737a6001b08309f1a25ca78cf04abfbf90" dependencies = [ "ra_ap_intern", "ra_ap_tt", @@ -1428,15 +1505,15 @@ dependencies = [ [[package]] name = "ra_ap_edition" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b1b961a84cb09a4e06e44d06b2e77bcf546d0c2623df9545ba9cc694880989" +checksum = "8955c1484d5e7274f755187788ba0d51eb149f870c69cdf0d87c3b7edea20ea0" [[package]] name = "ra_ap_hir" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff0672e35a6cf12333cb6b9e3fd18aba4bc724fa7c7b24c3253df4730be1f9c3" +checksum = "a51d7955beff2212701b149bea36d4cf2dc0f5cd129652c9bcf0cb5c0b021078" dependencies = [ "arrayvec", "either", @@ -1460,14 +1537,14 @@ dependencies = [ [[package]] name = "ra_ap_hir_def" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fde2fb9361257e31e73e63eb2d07445ea3fd4cd1e7bae7f45e7ba82bcfcde29a" +checksum = "e5c97e617e4c585d24b3d4f668861452aedddfbe0262f4c53235dcea77e62f9b" dependencies = [ "arrayvec", "bitflags 2.8.0", "cov-mark", - "dashmap", + "dashmap 5.5.3", "drop_bomb", "either", "fst", @@ -1483,12 +1560,14 @@ dependencies = [ "ra_ap_hir_expand", "ra_ap_intern", "ra_ap_mbe", + "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", "ra_ap_tt", "rustc-hash 2.1.1", "rustc_apfloat", + "salsa", "smallvec", "text-size", "tracing", @@ -1497,9 +1576,9 @@ dependencies = [ [[package]] name = "ra_ap_hir_expand" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1823b649710bf1829c894f774dfe66acb33a3e5bc7409ff7836cd19f6e09c250" +checksum = "be57c0d7e3f2180dd8ea584b11447f34060eadc06f0f6d559e2a790f6e91b6c5" dependencies = [ "cov-mark", "either", @@ -1511,12 +1590,14 @@ dependencies = [ "ra_ap_intern", "ra_ap_mbe", "ra_ap_parser", + "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", "ra_ap_syntax-bridge", "ra_ap_tt", "rustc-hash 2.1.1", + "salsa", "smallvec", "tracing", "triomphe", @@ -1524,9 +1605,9 @@ dependencies = [ [[package]] name = "ra_ap_hir_ty" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a591a02787bd2e938c25fceb1f831d0929b9c08726e6d831f85c4a9fba04b5" +checksum = "f260f35748f3035b46a8afcdebda7cb75d95c24750105fad86101d09a9d387c8" dependencies = [ "arrayvec", "bitflags 2.8.0", @@ -1535,6 +1616,7 @@ dependencies = [ "chalk-recursive", "chalk-solve", "cov-mark", + "dashmap 5.5.3", "either", "ena", "indexmap 2.7.0", @@ -1543,18 +1625,19 @@ dependencies = [ "nohash-hasher", "oorandom", "ra-ap-rustc_abi", - "ra-ap-rustc_hashes", "ra-ap-rustc_index", "ra-ap-rustc_pattern_analysis", "ra_ap_base_db", "ra_ap_hir_def", "ra_ap_hir_expand", "ra_ap_intern", + "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", "rustc-hash 2.1.1", "rustc_apfloat", + "salsa", "scoped-tls", "smallvec", "tracing", @@ -1564,14 +1647,15 @@ dependencies = [ [[package]] name = "ra_ap_ide_db" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c74386061453edc3ebfd52141c7c3cde109a7427faff9792a303c3c09a762a01" +checksum = "0426263be26e27cb55a3b9ef88b120511b66fe7d9b418a2473d6d5f3ac2fe0a6" dependencies = [ "arrayvec", "bitflags 2.8.0", "cov-mark", "crossbeam-channel", + "dashmap 5.5.3", "either", "fst", "indexmap 2.7.0", @@ -1583,22 +1667,25 @@ dependencies = [ "ra_ap_hir", "ra_ap_parser", "ra_ap_profile", + "ra_ap_query-group-macro", "ra_ap_span", "ra_ap_stdx", "ra_ap_syntax", + "ra_ap_vfs", "rayon", "rustc-hash 2.1.1", + "salsa", "tracing", "triomphe", ] [[package]] name = "ra_ap_intern" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8239ffde688b558a4335f03d14fa42dcebb203f452367830554b18e17ff1c683" +checksum = "f6ea8c9615b3b0688cf557e7310dbd9432f43860c8ea766d54f4416cbecf3571" dependencies = [ - "dashmap", + "dashmap 5.5.3", "hashbrown 0.14.5", "rustc-hash 2.1.1", "triomphe", @@ -1606,9 +1693,9 @@ dependencies = [ [[package]] name = "ra_ap_load-cargo" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01dd50ca287042b06ca3cc62b60e6891bacee3886d39381d26f9f966e509b1c7" +checksum = "570907e16725c13a678bfd8050ce8839af2831da042a0878b75ee8c41b0f7b0c" dependencies = [ "anyhow", "crossbeam-channel", @@ -1628,9 +1715,9 @@ dependencies = [ [[package]] name = "ra_ap_mbe" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c193592a0d1dcd315cf8c60f25d37a15c6b50c2b58bfbc6eac38b123e45c8c21" +checksum = "e893fe03b04b30c9b5a339ac2bf39ce32ac9c05a8b50121b7d89ce658346e164" dependencies = [ "arrayvec", "cov-mark", @@ -1649,9 +1736,9 @@ dependencies = [ [[package]] name = "ra_ap_parser" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b380f96951dd56b8231eeb47884fea12c57b8515ac748eedd590b26cd156681c" +checksum = "6fd9a264120968b14a66b6ba756cd7f99435385b5dbc2f0a611cf3a12221c385" dependencies = [ "drop_bomb", "ra-ap-rustc_lexer", @@ -1661,18 +1748,18 @@ dependencies = [ [[package]] name = "ra_ap_paths" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0801105582f532bc59a2b5714a30966c4cf9bd3e5b66f4161763c1d974d2c7d5" +checksum = "f47817351651e36b56ff3afc483b41600053c9cb7e67d945467c0abe93416032" dependencies = [ "camino", ] [[package]] name = "ra_ap_proc_macro_api" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da377b243e376b82819f875c1c6624125d27b682a740bd4cafc30b4f496d0ffa" +checksum = "d96da3b8b9f6b813a98f5357eef303905450741f47ba90adaab8a5371b748416" dependencies = [ "indexmap 2.7.0", "ra_ap_intern", @@ -1689,9 +1776,9 @@ dependencies = [ [[package]] name = "ra_ap_profile" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6d1391bee4f86e56385438a2dcb739cbb96bd0fbf49799a492332d57e6db62" +checksum = "13637377287c84f88a628e40229d271ef0081c0d683956bd99a6c8278a4f8b14" dependencies = [ "cfg-if", "libc", @@ -1701,9 +1788,9 @@ dependencies = [ [[package]] name = "ra_ap_project_model" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b1ac2712d5f6a20197b360890031e64b4ea097b511f50e2cb8ab1a0e24f577" +checksum = "053c5207a638fc7a752c7a454bc952b28b0d02f0bf9f6d7ec785ec809579d8fa" dependencies = [ "anyhow", "cargo_metadata", @@ -1726,71 +1813,54 @@ dependencies = [ ] [[package]] -name = "ra_ap_salsa" -version = "0.0.266" +name = "ra_ap_query-group-macro" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc3a0a272f50e2ab831452bd3f4e7f8a571ccf01282d76f4a078f661135ed0ce" +checksum = "0f1a38f07b442e47a234cbe2e8fd1b8a41ff0cc5123cb1cf994c5ce20edb5bd6" dependencies = [ - "indexmap 2.7.0", - "itertools 0.12.1", - "lock_api", - "oorandom", - "parking_lot", - "ra_ap_salsa-macros", - "rustc-hash 2.1.1", - "smallvec", - "tracing", - "triomphe", -] - -[[package]] -name = "ra_ap_salsa-macros" -version = "0.0.266" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d59b47a54fd5468ce0dc03b146afd0932ae0f3d05a5c15ca78d29d5e85bc31" -dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", + "salsa", "syn", ] [[package]] name = "ra_ap_span" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f10dbdd611d2546be7c400934007865e85bb37570566c715edb3aac76367a782" +checksum = "8818680c6f7da3b32cb2bb0992940b24264b1aa90203aa94812e09ab34d362d1" dependencies = [ "hashbrown 0.14.5", "la-arena", - "ra_ap_salsa", "ra_ap_stdx", "ra_ap_syntax", "ra_ap_vfs", "rustc-hash 2.1.1", + "salsa", "text-size", ] [[package]] name = "ra_ap_stdx" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7d5c58fcda9b35d61e23f334b2b11221abf53e7f5e4344fc7eb1de18b2cbf68" +checksum = "f1c10bee1b03fc48083862c13cf06bd3ed17760463ecce2734103a2f511e5ed4" dependencies = [ - "always-assert", "crossbeam-channel", "itertools 0.12.1", "jod-thread", "libc", "miow", + "tracing", "windows-sys 0.59.0", ] [[package]] name = "ra_ap_syntax" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75334f45a8095223823ef1d2789c085460b7b9368c63a6430d46f6f2b9bd5cb5" +checksum = "92bc32f3946fc5fcbdc79e61b7e26a8c2a3a56f3ef6ab27c7d298a9e21a462f2" dependencies = [ "cov-mark", "either", @@ -1808,9 +1878,9 @@ dependencies = [ [[package]] name = "ra_ap_syntax-bridge" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b331a50f90ae587d230b1b55b3852ebf67ab740dec33c1a4b0900005037e77c2" +checksum = "a42052c44c98c122c37aac476260c8f19d8fec495edc9c05835307c9ae86194d" dependencies = [ "ra_ap_intern", "ra_ap_parser", @@ -1824,9 +1894,9 @@ dependencies = [ [[package]] name = "ra_ap_toolchain" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d56e1b3a34eac0448e54afccf63a6b7699ef14a734b2f1b340246ccdd00c0d3" +checksum = "75996e70b3a0c68cd5157ba01f018964c7c6a5d7b209047d449b393139d0b57f" dependencies = [ "camino", "home", @@ -1834,9 +1904,9 @@ dependencies = [ [[package]] name = "ra_ap_tt" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b974b1211e0b1e17e44b1f256ca1b4a3734d4d98f43ba09ee0a8476fc3a5b83" +checksum = "0e4ee31e93bfabe83e6720b7469db88d7ad7ec5c59a1f011efec4aa1327ffc5c" dependencies = [ "arrayvec", "ra-ap-rustc_lexer", @@ -1847,9 +1917,9 @@ dependencies = [ [[package]] name = "ra_ap_vfs" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b004e20f901dae213cb1673111a2b56fec4f0d1c4c894b62668a0f69ce25065" +checksum = "f6aac1e277ac70bb073f40f8a3fc44e4b1bb9e4d4b1d0e0bd2f8269543560f80" dependencies = [ "crossbeam-channel", "fst", @@ -1863,9 +1933,9 @@ dependencies = [ [[package]] name = "ra_ap_vfs-notify" -version = "0.0.266" +version = "0.0.270" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f9e8df03407d76e044f99ef45fafd686d775508aa7d1ba836e9eca58b833a3" +checksum = "cd95285146049621ee8f7a512c982a008bf036321fcc9b01a95c1ad7e6aeae57" dependencies = [ "crossbeam-channel", "notify", @@ -2030,12 +2100,59 @@ dependencies = [ "smallvec", ] +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + [[package]] name = "ryu" version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +[[package]] +name = "salsa" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd55c6549513b2a42884dae31e3d4f4ac8a6cc51062e68e24d162133889f327c" +dependencies = [ + "boxcar", + "crossbeam-queue", + "dashmap 6.1.0", + "hashbrown 0.15.2", + "hashlink", + "indexmap 2.7.0", + "parking_lot", + "portable-atomic", + "rayon", + "rustc-hash 2.1.1", + "salsa-macro-rules", + "salsa-macros", + "smallvec", + "tracing", +] + +[[package]] +name = "salsa-macro-rules" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2619b4b451beab0a7e4364ff1e6f31950e7e418888fd9bf2f28889671563166a" + +[[package]] +name = "salsa-macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be57a99b3896e8d26850428a6874fb86849e2db874e1db3528e5cee4337d277" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "same-file" version = "1.0.6" @@ -2068,18 +2185,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.218" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.218" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -2088,9 +2205,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.139" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -2201,9 +2318,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.98" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -2636,6 +2753,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -2645,6 +2772,66 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" diff --git a/MODULE.bazel b/MODULE.bazel index 8152b2d3e41..fe418cd40c6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -71,13 +71,13 @@ use_repo( tree_sitter_extractors_deps = use_extension("//misc/bazel/3rdparty:tree_sitter_extractors_extension.bzl", "r") use_repo( tree_sitter_extractors_deps, - "vendor_ts__anyhow-1.0.96", + "vendor_ts__anyhow-1.0.97", "vendor_ts__argfile-0.2.1", - "vendor_ts__chalk-ir-0.99.0", - "vendor_ts__chrono-0.4.39", - "vendor_ts__clap-4.5.31", + "vendor_ts__chalk-ir-0.100.0", + "vendor_ts__chrono-0.4.40", + "vendor_ts__clap-4.5.32", "vendor_ts__dunce-1.0.5", - "vendor_ts__either-1.14.0", + "vendor_ts__either-1.15.0", "vendor_ts__encoding-0.2.33", "vendor_ts__figment-0.10.19", "vendor_ts__flate2-1.1.0", @@ -88,31 +88,31 @@ use_repo( "vendor_ts__mustache-0.9.0", "vendor_ts__num-traits-0.2.19", "vendor_ts__num_cpus-1.16.0", - "vendor_ts__proc-macro2-1.0.93", - "vendor_ts__quote-1.0.38", - "vendor_ts__ra_ap_base_db-0.0.266", - "vendor_ts__ra_ap_cfg-0.0.266", - "vendor_ts__ra_ap_hir-0.0.266", - "vendor_ts__ra_ap_hir_def-0.0.266", - "vendor_ts__ra_ap_hir_expand-0.0.266", - "vendor_ts__ra_ap_hir_ty-0.0.266", - "vendor_ts__ra_ap_ide_db-0.0.266", - "vendor_ts__ra_ap_intern-0.0.266", - "vendor_ts__ra_ap_load-cargo-0.0.266", - "vendor_ts__ra_ap_parser-0.0.266", - "vendor_ts__ra_ap_paths-0.0.266", - "vendor_ts__ra_ap_project_model-0.0.266", - "vendor_ts__ra_ap_span-0.0.266", - "vendor_ts__ra_ap_stdx-0.0.266", - "vendor_ts__ra_ap_syntax-0.0.266", - "vendor_ts__ra_ap_vfs-0.0.266", + "vendor_ts__proc-macro2-1.0.94", + "vendor_ts__quote-1.0.40", + "vendor_ts__ra_ap_base_db-0.0.270", + "vendor_ts__ra_ap_cfg-0.0.270", + "vendor_ts__ra_ap_hir-0.0.270", + "vendor_ts__ra_ap_hir_def-0.0.270", + "vendor_ts__ra_ap_hir_expand-0.0.270", + "vendor_ts__ra_ap_hir_ty-0.0.270", + "vendor_ts__ra_ap_ide_db-0.0.270", + "vendor_ts__ra_ap_intern-0.0.270", + "vendor_ts__ra_ap_load-cargo-0.0.270", + "vendor_ts__ra_ap_parser-0.0.270", + "vendor_ts__ra_ap_paths-0.0.270", + "vendor_ts__ra_ap_project_model-0.0.270", + "vendor_ts__ra_ap_span-0.0.270", + "vendor_ts__ra_ap_stdx-0.0.270", + "vendor_ts__ra_ap_syntax-0.0.270", + "vendor_ts__ra_ap_vfs-0.0.270", "vendor_ts__rand-0.9.0", "vendor_ts__rayon-1.10.0", "vendor_ts__regex-1.11.1", - "vendor_ts__serde-1.0.218", - "vendor_ts__serde_json-1.0.139", + "vendor_ts__serde-1.0.219", + "vendor_ts__serde_json-1.0.140", "vendor_ts__serde_with-3.12.0", - "vendor_ts__syn-2.0.98", + "vendor_ts__syn-2.0.100", "vendor_ts__toml-0.8.20", "vendor_ts__tracing-0.1.41", "vendor_ts__tracing-flame-0.2.0", diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index df919b42c9d..9cf8f8806a2 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -1007,9 +1007,11 @@ private module DataFlowIntegrationInput implements SsaImpl::DataFlowIntegrationI } } - predicate guardControlsBlock(Guard guard, SsaInput::BasicBlock bb, boolean branch) { + predicate guardDirectlyControlsBlock(Guard guard, SsaInput::BasicBlock bb, boolean branch) { guard.(IRGuards::IRGuardCondition).controls(bb, branch) } + + predicate keepAllPhiInputBackEdges() { any() } } private module DataFlowIntegrationImpl = SsaImpl::DataFlowIntegration; diff --git a/cpp/ql/src/Diagnostics/ExtractionWarnings.ql b/cpp/ql/src/Diagnostics/ExtractionWarnings.ql index dcfb599bbeb..f32768734ca 100644 --- a/cpp/ql/src/Diagnostics/ExtractionWarnings.ql +++ b/cpp/ql/src/Diagnostics/ExtractionWarnings.ql @@ -14,5 +14,5 @@ where or warning instanceof ExtractionUnknownProblem select warning, - "Extraction failed in " + warning.getFile() + " with warning " + warning.getProblemMessage(), - warning.getSeverity() + "Extraction failed in " + warning.getFile() + " with warning " + + warning.getProblemMessage().replaceAll("$", "$$"), warning.getSeverity() diff --git a/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.ql b/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.ql index c7eac620b3b..9da14fbfb46 100644 --- a/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.ql +++ b/cpp/ql/src/Diagnostics/Internal/ExtractionErrors.ql @@ -17,5 +17,6 @@ from ExtractionError error where error instanceof ExtractionUnknownError or exists(error.getFile().getRelativePath()) -select error, "Extraction failed in " + error.getFile() + " with error " + error.getErrorMessage(), - error.getSeverity() +select error, + "Extraction failed in " + error.getFile() + " with error " + + error.getErrorMessage().replaceAll("$", "$$"), error.getSeverity() diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected index 85ef90b127d..513c23e3c6e 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected @@ -68,31 +68,23 @@ | test.cpp:10:8:10:9 | t2 | test.cpp:11:7:11:8 | [input] SSA phi read(t2) | | test.cpp:10:8:10:9 | t2 | test.cpp:11:7:11:8 | [input] SSA phi(*t2) | | test.cpp:10:8:10:9 | t2 | test.cpp:13:10:13:11 | t2 | -| test.cpp:11:7:11:8 | [input] SSA phi read(t2) | test.cpp:15:3:15:6 | SSA phi read(t2) | -| test.cpp:11:7:11:8 | [input] SSA phi(*t2) | test.cpp:15:3:15:6 | SSA phi(*t2) | +| test.cpp:11:7:11:8 | [input] SSA phi read(t2) | test.cpp:15:8:15:9 | t2 | +| test.cpp:11:7:11:8 | [input] SSA phi(*t2) | test.cpp:15:8:15:9 | t2 | | test.cpp:11:7:11:8 | t1 | test.cpp:21:8:21:9 | t1 | | test.cpp:12:5:12:10 | ... = ... | test.cpp:13:10:13:11 | t2 | | test.cpp:12:10:12:10 | 0 | test.cpp:12:5:12:10 | ... = ... | -| test.cpp:13:5:13:8 | [input] SSA phi read(t2) | test.cpp:15:3:15:6 | SSA phi read(t2) | -| test.cpp:13:5:13:8 | [input] SSA phi(*t2) | test.cpp:15:3:15:6 | SSA phi(*t2) | -| test.cpp:13:10:13:11 | t2 | test.cpp:13:5:13:8 | [input] SSA phi read(t2) | -| test.cpp:13:10:13:11 | t2 | test.cpp:13:5:13:8 | [input] SSA phi(*t2) | -| test.cpp:15:3:15:6 | SSA phi read(t2) | test.cpp:15:8:15:9 | t2 | -| test.cpp:15:3:15:6 | SSA phi(*t2) | test.cpp:15:8:15:9 | t2 | +| test.cpp:13:10:13:11 | t2 | test.cpp:15:8:15:9 | t2 | +| test.cpp:13:10:13:11 | t2 | test.cpp:15:8:15:9 | t2 | | test.cpp:15:8:15:9 | t2 | test.cpp:23:15:23:16 | [input] SSA phi read(*t2) | | test.cpp:15:8:15:9 | t2 | test.cpp:23:15:23:16 | [input] SSA phi read(t2) | | test.cpp:17:3:17:8 | ... = ... | test.cpp:21:8:21:9 | t1 | | test.cpp:17:8:17:8 | 0 | test.cpp:17:3:17:8 | ... = ... | -| test.cpp:21:8:21:9 | t1 | test.cpp:23:15:23:16 | [input] SSA phi read(t1) | -| test.cpp:21:8:21:9 | t1 | test.cpp:23:15:23:16 | [input] SSA phi(*t1) | +| test.cpp:21:8:21:9 | t1 | test.cpp:23:19:23:19 | SSA phi read(t1) | +| test.cpp:21:8:21:9 | t1 | test.cpp:23:19:23:19 | SSA phi(*t1) | | test.cpp:23:15:23:16 | 0 | test.cpp:23:15:23:16 | 0 | -| test.cpp:23:15:23:16 | 0 | test.cpp:23:15:23:16 | [input] SSA phi(*i) | +| test.cpp:23:15:23:16 | 0 | test.cpp:23:19:23:19 | SSA phi(*i) | | test.cpp:23:15:23:16 | [input] SSA phi read(*t2) | test.cpp:23:19:23:19 | SSA phi read(*t2) | -| test.cpp:23:15:23:16 | [input] SSA phi read(i) | test.cpp:23:19:23:19 | SSA phi read(i) | -| test.cpp:23:15:23:16 | [input] SSA phi read(t1) | test.cpp:23:19:23:19 | SSA phi read(t1) | | test.cpp:23:15:23:16 | [input] SSA phi read(t2) | test.cpp:23:19:23:19 | SSA phi read(t2) | -| test.cpp:23:15:23:16 | [input] SSA phi(*i) | test.cpp:23:19:23:19 | SSA phi(*i) | -| test.cpp:23:15:23:16 | [input] SSA phi(*t1) | test.cpp:23:19:23:19 | SSA phi(*t1) | | test.cpp:23:19:23:19 | SSA phi read(*t2) | test.cpp:24:10:24:11 | t2 | | test.cpp:23:19:23:19 | SSA phi read(i) | test.cpp:23:19:23:19 | i | | test.cpp:23:19:23:19 | SSA phi read(t1) | test.cpp:23:23:23:24 | t1 | diff --git a/cpp/ql/test/library-tests/preprocessor/preprocessor/pp.cpp b/cpp/ql/test/library-tests/preprocessor/preprocessor/pp.cpp index 70fada58da9..8ff6ff9a3d3 100644 --- a/cpp/ql/test/library-tests/preprocessor/preprocessor/pp.cpp +++ b/cpp/ql/test/library-tests/preprocessor/preprocessor/pp.cpp @@ -10,7 +10,7 @@ // semmle-extractor-options: -I${testdir}/more_headers/ "-U SOME_SYM" #undef BAR #define SCARY(a,aa,aaah) /* we ignore a */ (aa /* but we take aa */) /* and we ignore aaa */ -#define LOG(fmt, ...) printf("Warning: %s", fmt, __VA__ARGS__) +#define LOG(fmt, ...) printf("Warning: %s", fmt, __VA__ARGS__) #include "pp.h" #if 0 @@ -59,7 +59,7 @@ public: #else #define IN_TEMPLATE #endif - + static int val; }; @@ -71,7 +71,128 @@ templateClassContext tcci; #define BAR -#if defined(BAR) && \ +#if defined(BAR) &&\ defined(BAR) #warning BAR defined #endif + +#if defined MACROTHREE/**hello*/ && /*world*/\ +/*hw*/ (defined(MACROONE)) /* macroone */ +#endif + +#if defined SIMPLE_COMMENT //this comment \ + (defined(SIMPLE_COMMENT)) spans over multiple lines +#endif + +#if defined(FOO) &&\ + defined(BAR) +#define CONDITIONAL_MACRO_1 1 +#endif + +#if defined(FOO) && \ + defined(BAR) && \ + !defined(BAZ) +#define CONDITIONAL_MACRO_2 2 +#endif + +#define FOO 8 +#define BAR 2 +#define BAZ 4 +#if ((FOO / BAR) \ + == 4) && ((BAZ \ + * QUX) \ + > 10) +#define CONDITIONAL_MACRO_3 3 +#endif + +// Testing \t spaced PreprocessorIf +#if defined(FOO) && \ + defined(BAR) && \ + defined(BAZ) +#define CONDITIONAL_MACRO_4 4 +#endif + + +#if defined /* //test */ SIMPLE_COMMENT //this comment \ + (defined(SIMPLE_COMMENT)) spans over multiple lines +#endif + +#warning foo \ + +#warning foo \ +\ +/* a comment */ + +#warning foo \ +\ + +#warning foo \ +\ +// a comment + + +#define FOO 8 +#define BAR 2 +#define BAZ 4 +#if ((FOO / BAR) \ + == 4) && ((BAZ \ + /** comment */ \ + * QUX) \ + /** comment */ \ + > 10) +#define CONDITIONAL_MACRO_3 3 +#endif + +#define X 1 +#define Y 2 +#if defined(X) && \ + /*this is a comment*/ defined(Y) \ + // another comment +#endif + +#warning FOO\ + \ + \ + \ +BAR + + +#warning foo \ +\ +/* comment */ \ +\ + + +#if/** */A/* ... */&&B +#endif + + +#if/** */ /**/ A +#endif + +#if \ +\ +A && B +#endif + + +#ifdef /* + + + +*/ FOOBAR +#warning a +#else +#warning b +#endif + + +#if /* + +//test + +*/ FOOBAR +#endif + +#if/*...*//*...*/A +#endif \ No newline at end of file diff --git a/cpp/ql/test/library-tests/preprocessor/preprocessor/preproc.expected b/cpp/ql/test/library-tests/preprocessor/preprocessor/preproc.expected index d1b64ff7bd9..7c448ba6550 100644 --- a/cpp/ql/test/library-tests/preprocessor/preprocessor/preproc.expected +++ b/cpp/ql/test/library-tests/preprocessor/preprocessor/preproc.expected @@ -33,17 +33,64 @@ | pp.cpp:0:0:0:0 | pp.cpp | 50 | 2 | 50 | 48 | Macro | MACRO_TEMPLATECLASSCONTEXT_REFERENCED | 5 | | pp.cpp:0:0:0:0 | pp.cpp | 54 | 3 | 54 | 39 | Macro | MACRO_TEMPLATEMETHODCONTEXT | 6 | | pp.cpp:0:0:0:0 | pp.cpp | 57 | 1 | 57 | 21 | PreprocessorIfdef | INSTANTIATION | N/A | -| pp.cpp:0:0:0:0 | pp.cpp | 59 | 1 | 59 | 6 | PreprocessorElse | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 59 | 1 | 59 | 6 | PreprocessorElse | | N/A | | pp.cpp:0:0:0:0 | pp.cpp | 60 | 3 | 60 | 21 | Macro | IN_TEMPLATE | | -| pp.cpp:0:0:0:0 | pp.cpp | 61 | 1 | 61 | 7 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 61 | 1 | 61 | 7 | PreprocessorEndif | | N/A | | pp.cpp:0:0:0:0 | pp.cpp | 69 | 1 | 69 | 21 | Macro | INSTANTIATION | | | pp.cpp:0:0:0:0 | pp.cpp | 72 | 1 | 72 | 11 | Macro | BAR | | -| pp.cpp:0:0:0:0 | pp.cpp | 74 | 1 | 74 | 21 | PreprocessorIf | defined(BAR) && \\ | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 74 | 1 | 75 | 14 | PreprocessorIf | defined(BAR) && defined(BAR) | N/A | | pp.cpp:0:0:0:0 | pp.cpp | 76 | 1 | 76 | 20 | PreprocessorWarning | BAR defined | N/A | | pp.cpp:0:0:0:0 | pp.cpp | 77 | 1 | 77 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 79 | 1 | 80 | 26 | PreprocessorIf | defined MACROTHREE && (defined(MACROONE)) | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 81 | 1 | 81 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 83 | 1 | 83 | 26 | PreprocessorIf | defined SIMPLE_COMMENT | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 85 | 1 | 85 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 87 | 1 | 88 | 16 | PreprocessorIf | defined(FOO) && defined(BAR) | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 90 | 1 | 90 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 92 | 1 | 94 | 17 | PreprocessorIf | defined(FOO) && defined(BAR) && !defined(BAZ) | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 96 | 1 | 96 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 98 | 1 | 98 | 13 | Macro | FOO | 8 | +| pp.cpp:0:0:0:0 | pp.cpp | 99 | 1 | 99 | 13 | Macro | BAR | 2 | +| pp.cpp:0:0:0:0 | pp.cpp | 100 | 1 | 100 | 13 | Macro | BAZ | 4 | +| pp.cpp:0:0:0:0 | pp.cpp | 101 | 1 | 104 | 8 | PreprocessorIf | ((FOO / BAR) == 4) && ((BAZ * QUX) > 10) | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 106 | 1 | 106 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 109 | 1 | 111 | 13 | PreprocessorIf | defined(FOO) && defined(BAR) && defined(BAZ) | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 112 | 1 | 112 | 29 | Macro | CONDITIONAL_MACRO_4 | 4 | +| pp.cpp:0:0:0:0 | pp.cpp | 113 | 1 | 113 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 116 | 1 | 116 | 39 | PreprocessorIf | defined SIMPLE_COMMENT | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 118 | 1 | 118 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 120 | 1 | 120 | 12 | PreprocessorWarning | foo | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 122 | 1 | 122 | 12 | PreprocessorWarning | foo | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 126 | 1 | 126 | 12 | PreprocessorWarning | foo | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 129 | 1 | 129 | 12 | PreprocessorWarning | foo | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 134 | 1 | 134 | 13 | Macro | FOO | 8 | +| pp.cpp:0:0:0:0 | pp.cpp | 135 | 1 | 135 | 13 | Macro | BAR | 2 | +| pp.cpp:0:0:0:0 | pp.cpp | 136 | 1 | 136 | 13 | Macro | BAZ | 4 | +| pp.cpp:0:0:0:0 | pp.cpp | 137 | 1 | 142 | 8 | PreprocessorIf | ((FOO / BAR) == 4) && ((BAZ * QUX) > 10) | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 144 | 1 | 144 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 146 | 1 | 146 | 11 | Macro | X | 1 | +| pp.cpp:0:0:0:0 | pp.cpp | 147 | 1 | 147 | 11 | Macro | Y | 2 | +| pp.cpp:0:0:0:0 | pp.cpp | 148 | 1 | 149 | 36 | PreprocessorIf | defined(X) && defined(Y) | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 151 | 1 | 151 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 153 | 1 | 157 | 3 | PreprocessorWarning | FOO BAR | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 160 | 1 | 160 | 12 | PreprocessorWarning | foo | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 166 | 1 | 166 | 22 | PreprocessorIf | A &&B | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 167 | 1 | 167 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 170 | 1 | 170 | 20 | PreprocessorIf | A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 171 | 1 | 171 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 173 | 1 | 175 | 6 | PreprocessorIf | A && B | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 176 | 1 | 176 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 179 | 1 | 183 | 9 | PreprocessorIfdef | FOOBAR | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 185 | 1 | 185 | 5 | PreprocessorElse | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 186 | 1 | 186 | 10 | PreprocessorWarning | b | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 187 | 1 | 187 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 190 | 1 | 194 | 9 | PreprocessorIf | FOOBAR | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 195 | 1 | 195 | 6 | PreprocessorEndif | N/A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 197 | 1 | 197 | 18 | PreprocessorIf | A | N/A | +| pp.cpp:0:0:0:0 | pp.cpp | 198 | 1 | 198 | 6 | PreprocessorEndif | N/A | N/A | | pp.h:0:0:0:0 | pp.h | 1 | 1 | 1 | 12 | PreprocessorPragma | once | N/A | | pp.h:0:0:0:0 | pp.h | 2 | 1 | 2 | 29 | PreprocessorWarning | "This should happen" | N/A | -| pp.h:0:0:0:0 | pp.h | 3 | 1 | 3 | 27 | PreprocessorLine | 33 "emerald_city.h" | N/A | +| pp.h:0:0:0:0 | pp.h | 3 | 1 | 3 | 27 | PreprocessorLine | 33 "emerald_city.h" | N/A | | pp.h:0:0:0:0 | pp.h | 4 | 1 | 4 | 30 | PreprocessorPragma | byte_order(big_endian) | N/A | | pp.h:0:0:0:0 | pp.h | 5 | 1 | 5 | 33 | PreprocessorWarning | "Not in Kansas any more" | N/A | | pp.h:0:0:0:0 | pp.h | 7 | 1 | 11 | 8 | Macro | MULTILINE | world a long | diff --git a/cpp/ql/test/query-tests/Diagnostics/ExtractionErrors.expected b/cpp/ql/test/query-tests/Diagnostics/ExtractionErrors.expected index f7d1b79cd17..1fa54609422 100644 --- a/cpp/ql/test/query-tests/Diagnostics/ExtractionErrors.expected +++ b/cpp/ql/test/query-tests/Diagnostics/ExtractionErrors.expected @@ -1,2 +1,3 @@ +| containserror.cpp:9:14:9:14 | Recoverable extraction error: 'x' has already been declared in the current scope | Extraction failed in containserror.cpp with error "containserror.cpp", line 9: error: "x" has already been declared in the current scope\n \tconst char *x = "Foo2 $$@ bar2 $$@ baz2";\n \t ^\n\n | 2 | | doesnotcompile.cpp:4:2:4:2 | Recoverable extraction error: identifier 'This' is undefined | Extraction failed in doesnotcompile.cpp with error "doesnotcompile.cpp", line 4: error: identifier "This" is undefined\n \tThis is not correct C/C++ code.\n \t^\n\n | 2 | | doesnotcompile.cpp:4:10:4:10 | Recoverable extraction error: expected a ';' | Extraction failed in doesnotcompile.cpp with error "doesnotcompile.cpp", line 4: error: expected a ";"\n \tThis is not correct C/C++ code.\n \t ^\n\n | 2 | diff --git a/cpp/ql/test/query-tests/Diagnostics/ExtractionWarnings.expected b/cpp/ql/test/query-tests/Diagnostics/ExtractionWarnings.expected index 69cba1e1420..2393f4dbde0 100644 --- a/cpp/ql/test/query-tests/Diagnostics/ExtractionWarnings.expected +++ b/cpp/ql/test/query-tests/Diagnostics/ExtractionWarnings.expected @@ -1,2 +1,3 @@ +| containserror.cpp:9:14:9:14 | Recoverable extraction error: 'x' has already been declared in the current scope | Extraction failed in containserror.cpp with warning "containserror.cpp", line 9: error: "x" has already been declared in the current scope\n \tconst char *x = "Foo2 $$@ bar2 $$@ baz2";\n \t ^\n\n | 1 | | doesnotcompile.cpp:4:2:4:2 | Recoverable extraction error: identifier 'This' is undefined | Extraction failed in doesnotcompile.cpp with warning "doesnotcompile.cpp", line 4: error: identifier "This" is undefined\n \tThis is not correct C/C++ code.\n \t^\n\n | 1 | | doesnotcompile.cpp:4:10:4:10 | Recoverable extraction error: expected a ';' | Extraction failed in doesnotcompile.cpp with warning "doesnotcompile.cpp", line 4: error: expected a ";"\n \tThis is not correct C/C++ code.\n \t ^\n\n | 1 | diff --git a/cpp/ql/test/query-tests/Diagnostics/Info.expected b/cpp/ql/test/query-tests/Diagnostics/Info.expected index a3254130360..77a298109d6 100644 --- a/cpp/ql/test/query-tests/Diagnostics/Info.expected +++ b/cpp/ql/test/query-tests/Diagnostics/Info.expected @@ -1,4 +1,4 @@ -| containserror.cpp:0:0:0:0 | containserror.cpp | containserror.cpp | fromSource, normalTermination | +| containserror.cpp:0:0:0:0 | containserror.cpp | containserror.cpp | ExtractionProblem (severity 1), fromSource, normalTermination | | containswarning.cpp:0:0:0:0 | containswarning.cpp | containswarning.cpp | fromSource, normalTermination | | doesnotcompile.cpp:0:0:0:0 | doesnotcompile.cpp | doesnotcompile.cpp | ExtractionProblem (severity 1), fromSource, normalTermination | | file://:0:0:0:0 | | | | diff --git a/cpp/ql/test/query-tests/Diagnostics/containserror.cpp b/cpp/ql/test/query-tests/Diagnostics/containserror.cpp index 175fcc579f1..63e11dfe64f 100644 --- a/cpp/ql/test/query-tests/Diagnostics/containserror.cpp +++ b/cpp/ql/test/query-tests/Diagnostics/containserror.cpp @@ -3,3 +3,8 @@ void containserror() { #error An error! } + +void error_with_placeholder() { + const char *x = "Foo1 $@ bar1 $@ baz1"; + const char *x = "Foo2 $@ bar2 $@ baz2"; +} \ No newline at end of file diff --git a/csharp/ql/consistency-queries/DataFlowConsistency.ql b/csharp/ql/consistency-queries/DataFlowConsistency.ql index 2f34368b669..638bace3892 100644 --- a/csharp/ql/consistency-queries/DataFlowConsistency.ql +++ b/csharp/ql/consistency-queries/DataFlowConsistency.ql @@ -34,30 +34,18 @@ private module Input implements InputSig { n instanceof FlowSummaryNode or n.asExpr().(ObjectCreation).hasInitializer() + or + exists( + n.(PostUpdateNode).getPreUpdateNode().asExprAtNode(LocalFlow::getPostUpdateReverseStep(_)) + ) } predicate argHasPostUpdateExclude(ArgumentNode n) { n instanceof FlowSummaryNode or - not exists(LocalFlow::getAPostUpdateNodeForArg(n.getControlFlowNode())) - or n instanceof ParamsArgumentNode - } - - predicate postHasUniquePreExclude(PostUpdateNode n) { - exists(ControlFlow::Nodes::ExprNode e, ControlFlow::Nodes::ExprNode arg | - e = LocalFlow::getAPostUpdateNodeForArg(arg) and - e != arg and - n = TExprPostUpdateNode(e) - ) - } - - predicate uniquePostUpdateExclude(Node n) { - exists(ControlFlow::Nodes::ExprNode e, ControlFlow::Nodes::ExprNode arg | - e = LocalFlow::getAPostUpdateNodeForArg(arg) and - e != arg and - n.asExpr() = arg.getExpr() - ) + or + n.asExpr() = any(Expr e | not exprMayHavePostUpdateNode(e)) } predicate reverseReadExclude(Node n) { n.asExpr() = any(AwaitExpr ae).getExpr() } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index f7b6fd5ff13..c5e915b0535 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -691,19 +691,22 @@ module LocalFlow { ) } - /** Gets a node for which to construct a post-update node for argument `arg`. */ - ControlFlow::Nodes::ExprNode getAPostUpdateNodeForArg(ControlFlow::Nodes::ExprNode arg) { - arg.getExpr() instanceof Argument and - result = getALastEvalNode*(arg) and - exists(Expr e, Type t | result.getExpr() = e and t = e.stripCasts().getType() | - t instanceof RefType and - not t instanceof NullType - or - t = any(TypeParameter tp | not tp.isValueType()) - or - t.isRefLikeType() - ) and - not exists(getALastEvalNode(result)) + /** + * Holds if a reverse local flow step should be added from the post-update node + * for `e` to the post-update node for the result. + * + * This is needed to allow for side-effects on compound expressions to propagate + * to sub components. For example, in + * + * ```csharp + * m(b ? x : y) + * ``` + * + * we add a reverse flow step from `[post] b ? x : y` to `[post] x` and to + * `[post] y`, in order for the side-effect of `m` to reach both `x` and `y`. + */ + ControlFlow::Nodes::ExprNode getPostUpdateReverseStep(ControlFlow::Nodes::ExprNode e) { + result = getALastEvalNode(e) } /** @@ -763,6 +766,13 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo, string model) { VariableCapture::valueStep(nodeFrom, nodeTo) or nodeTo = nodeFrom.(LocalFunctionCreationNode).getAnAccess(true) + or + nodeTo.(PostUpdateNode).getPreUpdateNode().(ExprNode).getControlFlowNode() = + LocalFlow::getPostUpdateReverseStep(nodeFrom + .(PostUpdateNode) + .getPreUpdateNode() + .(ExprNode) + .getControlFlowNode()) ) and model = "" or @@ -1061,6 +1071,20 @@ private class FieldOrPropertyUsedInSource extends FieldOrProperty { } } +/** + * Hold if `e` has a type that allows for it to have a post-update node. + */ +predicate exprMayHavePostUpdateNode(Expr e) { + exists(Type t | t = e.stripCasts().getType() | + t instanceof RefType and + not t instanceof NullType + or + t = any(TypeParameter tp | not tp.isValueType()) + or + t.isRefLikeType() + ) +} + /** A collection of cached types and predicates to be evaluated in the same stage. */ cached private module Cached { @@ -1106,7 +1130,15 @@ private module Cached { cfn.getAstNode().(ObjectCreation).hasInitializer() } or TExprPostUpdateNode(ControlFlow::Nodes::ExprNode cfn) { - cfn = LocalFlow::getAPostUpdateNodeForArg(_) + ( + cfn.getExpr() instanceof Argument + or + cfn = + LocalFlow::getPostUpdateReverseStep(any(ControlFlow::Nodes::ExprNode e | + exists(any(SourcePostUpdateNode p).getPreUpdateNode().asExprAtNode(e)) + )) + ) and + exprMayHavePostUpdateNode(cfn.getExpr()) or exists(Expr e | e = cfn.getExpr() | fieldOrPropertyStore(_, _, _, e, true) @@ -2722,17 +2754,23 @@ abstract class PostUpdateNode extends Node { } module PostUpdateNodes { - class ObjectCreationNode extends PostUpdateNode, ExprNode, TExprNode { + abstract class SourcePostUpdateNode extends PostUpdateNode { + abstract Node getPreUpdateSourceNode(); + + final override Node getPreUpdateNode() { result = this.getPreUpdateSourceNode() } + } + + class ObjectCreationNode extends SourcePostUpdateNode, ExprNode, TExprNode { private ObjectCreation oc; ObjectCreationNode() { this = TExprNode(oc.getAControlFlowNode()) } - override Node getPreUpdateNode() { + override Node getPreUpdateSourceNode() { exists(ControlFlow::Nodes::ElementNode cfn | this = TExprNode(cfn) | - result.(ObjectInitializerNode).getControlFlowNode() = cfn + result = TObjectInitializerNode(cfn) or not oc.hasInitializer() and - result.(MallocNode).getControlFlowNode() = cfn + result = TMallocNode(cfn) ) } } @@ -2744,7 +2782,7 @@ module PostUpdateNodes { * Such a node acts as both a post-update node for the `MallocNode`, as well as * a pre-update node for the `ObjectCreationNode`. */ - class ObjectInitializerNode extends PostUpdateNode, NodeImpl, ArgumentNodeImpl, + class ObjectInitializerNode extends SourcePostUpdateNode, NodeImpl, ArgumentNodeImpl, TObjectInitializerNode { private ObjectCreation oc; @@ -2758,7 +2796,7 @@ module PostUpdateNodes { /** Gets the initializer to which this initializer node belongs. */ ObjectOrCollectionInitializer getInitializer() { result = oc.getInitializer() } - override MallocNode getPreUpdateNode() { result.getControlFlowNode() = cfn } + override MallocNode getPreUpdateSourceNode() { result = TMallocNode(cfn) } override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { pos.isQualifier() and @@ -2781,23 +2819,12 @@ module PostUpdateNodes { override string toStringImpl() { result = "[pre-initializer] " + cfn } } - class ExprPostUpdateNode extends PostUpdateNode, NodeImpl, TExprPostUpdateNode { + class ExprPostUpdateNode extends SourcePostUpdateNode, NodeImpl, TExprPostUpdateNode { private ControlFlow::Nodes::ElementNode cfn; ExprPostUpdateNode() { this = TExprPostUpdateNode(cfn) } - override ExprNode getPreUpdateNode() { - // For compound arguments, such as `m(b ? x : y)`, we want the leaf nodes - // `[post] x` and `[post] y` to have two pre-update nodes: (1) the compound argument, - // `if b then x else y`; and the (2) the underlying expressions; `x` and `y`, - // respectively. - // - // This ensures that we get flow out of the call into both leafs (1), while still - // maintaining the invariant that the underlying expression is a pre-update node (2). - cfn = LocalFlow::getAPostUpdateNodeForArg(result.getControlFlowNode()) - or - cfn = result.getControlFlowNode() - } + override ExprNode getPreUpdateSourceNode() { result = TExprNode(cfn) } override DataFlowCallable getEnclosingCallableImpl() { result.getAControlFlowNode() = cfn @@ -2825,41 +2852,41 @@ module PostUpdateNodes { override Node getPreUpdateNode() { result.(FlowSummaryNode).getSummaryNode() = preUpdateNode } } - private class InstanceParameterAccessPostUpdateNode extends PostUpdateNode, + private class InstanceParameterAccessPostUpdateNode extends SourcePostUpdateNode, InstanceParameterAccessNode { InstanceParameterAccessPostUpdateNode() { isPostUpdate = true } - override InstanceParameterAccessPreNode getPreUpdateNode() { + override InstanceParameterAccessPreNode getPreUpdateSourceNode() { result = TInstanceParameterAccessNode(cfn, false) } override string toStringImpl() { result = "[post] this" } } - private class PrimaryConstructorThisAccessPostUpdateNode extends PostUpdateNode, + private class PrimaryConstructorThisAccessPostUpdateNode extends SourcePostUpdateNode, PrimaryConstructorThisAccessNode { PrimaryConstructorThisAccessPostUpdateNode() { isPostUpdate = true } - override PrimaryConstructorThisAccessPreNode getPreUpdateNode() { + override PrimaryConstructorThisAccessPreNode getPreUpdateSourceNode() { result = TPrimaryConstructorThisAccessNode(p, false, callable) } override string toStringImpl() { result = "[post] this" } } - class LocalFunctionCreationPostUpdateNode extends LocalFunctionCreationNode, PostUpdateNode { + class LocalFunctionCreationPostUpdateNode extends LocalFunctionCreationNode, SourcePostUpdateNode { LocalFunctionCreationPostUpdateNode() { isPostUpdate = true } - override LocalFunctionCreationPreNode getPreUpdateNode() { + override LocalFunctionCreationPreNode getPreUpdateSourceNode() { result = TLocalFunctionCreationNode(cfn, false) } override string toStringImpl() { result = "[post] " + cfn } } - private class CapturePostUpdateNode extends PostUpdateNode, CaptureNode { + private class CapturePostUpdateNode extends SourcePostUpdateNode, CaptureNode { private CaptureNode pre; CapturePostUpdateNode() { @@ -2867,7 +2894,7 @@ module PostUpdateNodes { pre.getSynthesizedCaptureNode()) } - override CaptureNode getPreUpdateNode() { result = pre } + override CaptureNode getPreUpdateSourceNode() { result = pre } override string toStringImpl() { result = "[post] " + cn } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll index f1299d5ad09..420cf518e80 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -1062,7 +1062,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu } /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */ - predicate guardControlsBlock(Guard guard, ControlFlow::BasicBlock bb, boolean branch) { + predicate guardDirectlyControlsBlock(Guard guard, ControlFlow::BasicBlock bb, boolean branch) { exists(ConditionBlock conditionBlock, ControlFlow::SuccessorTypes::ConditionalSuccessor s | guard.getAControlFlowNode() = conditionBlock.getLastNode() and s.getValue() = branch and diff --git a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected index 4a16e2491df..a6ecbc3356d 100644 --- a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected @@ -252,7 +252,7 @@ | CSharp7.cs:233:28:233:29 | access to local variable i1 | CSharp7.cs:235:38:235:39 | access to local variable i1 | | CSharp7.cs:233:28:233:33 | ... > ... | CSharp7.cs:233:13:233:33 | [false] ... && ... | | CSharp7.cs:233:28:233:33 | ... > ... | CSharp7.cs:233:13:233:33 | [true] ... && ... | -| CSharp7.cs:235:13:235:42 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | +| CSharp7.cs:235:13:235:42 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:235:33:235:36 | "int " | CSharp7.cs:235:31:235:41 | $"..." | | CSharp7.cs:235:38:235:39 | access to local variable i1 | CSharp7.cs:235:31:235:41 | $"..." | | CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:237:23:237:31 | String s1 | @@ -260,18 +260,17 @@ | CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:241:18:241:18 | access to local variable o | | CSharp7.cs:237:23:237:31 | SSA def(s1) | CSharp7.cs:239:41:239:42 | access to local variable s1 | | CSharp7.cs:237:23:237:31 | String s1 | CSharp7.cs:237:23:237:31 | SSA def(s1) | -| CSharp7.cs:239:13:239:45 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | +| CSharp7.cs:239:13:239:45 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:239:33:239:39 | "string " | CSharp7.cs:239:31:239:44 | $"..." | | CSharp7.cs:239:41:239:42 | access to local variable s1 | CSharp7.cs:239:31:239:44 | $"..." | | CSharp7.cs:241:18:241:18 | access to local variable o | CSharp7.cs:242:9:243:9 | [input] SSA phi read(o) | | CSharp7.cs:241:18:241:18 | access to local variable o | CSharp7.cs:244:18:244:18 | access to local variable o | -| CSharp7.cs:242:9:243:9 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | +| CSharp7.cs:242:9:243:9 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:244:18:244:28 | [input] SSA phi read(o) | | CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:244:23:244:28 | Object v1 | | CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:245:9:246:9 | [input] SSA phi read(o) | -| CSharp7.cs:244:18:244:28 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | -| CSharp7.cs:245:9:246:9 | [input] SSA phi read(o) | CSharp7.cs:248:9:274:9 | SSA phi read(o) | -| CSharp7.cs:248:9:274:9 | SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | +| CSharp7.cs:244:18:244:28 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | +| CSharp7.cs:245:9:246:9 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:254:27:254:27 | access to local variable o | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:257:18:257:23 | Int32 i2 | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:260:18:260:23 | Int32 i3 | @@ -312,10 +311,8 @@ | CSharp7.cs:285:39:285:42 | access to local variable list | CSharp7.cs:287:36:287:39 | access to local variable list | | CSharp7.cs:287:36:287:39 | access to local variable list | CSharp7.cs:289:32:289:35 | access to local variable list | | CSharp7.cs:297:18:297:18 | access to local variable x | CSharp7.cs:297:18:297:22 | SSA def(x) | -| CSharp7.cs:297:18:297:22 | SSA def(x) | CSharp7.cs:297:18:297:22 | [input] SSA phi(x) | -| CSharp7.cs:297:18:297:22 | [input] SSA phi(x) | CSharp7.cs:297:25:297:25 | SSA phi(x) | +| CSharp7.cs:297:18:297:22 | SSA def(x) | CSharp7.cs:297:25:297:25 | access to local variable x | | CSharp7.cs:297:22:297:22 | 0 | CSharp7.cs:297:18:297:18 | access to local variable x | -| CSharp7.cs:297:25:297:25 | SSA phi(x) | CSharp7.cs:297:25:297:25 | access to local variable x | | CSharp7.cs:297:25:297:25 | access to local variable x | CSharp7.cs:297:25:297:30 | ... < ... | | CSharp7.cs:297:25:297:25 | access to local variable x | CSharp7.cs:297:35:297:35 | access to local variable x | | CSharp7.cs:297:25:297:30 | ... < ... | CSharp7.cs:297:25:297:44 | [false] ... && ... | @@ -326,6 +323,5 @@ | CSharp7.cs:297:35:297:44 | [true] ... is ... | CSharp7.cs:297:25:297:44 | [true] ... && ... | | CSharp7.cs:297:40:297:44 | Int32 y | CSharp7.cs:297:40:297:44 | SSA def(y) | | CSharp7.cs:297:40:297:44 | SSA def(y) | CSharp7.cs:299:31:299:31 | access to local variable y | -| CSharp7.cs:297:47:297:49 | SSA def(x) | CSharp7.cs:297:47:297:49 | [input] SSA phi(x) | -| CSharp7.cs:297:47:297:49 | [input] SSA phi(x) | CSharp7.cs:297:25:297:25 | SSA phi(x) | +| CSharp7.cs:297:47:297:49 | SSA def(x) | CSharp7.cs:297:25:297:25 | access to local variable x | | CSharp7.cs:297:49:297:49 | access to local variable x | CSharp7.cs:297:47:297:49 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index c5f00cd656f..7333890f68f 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -421,46 +421,40 @@ edges | GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | | | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | | GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:508:20:508:33 | [post] (...) ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:22 | [post] ...! : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:546:20:546:24 | [post] ... = ... : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:22 | access to field field | provenance | | | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:22 | access to field field | provenance | | -| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:22 | access to field field | provenance | | | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:22 | access to field field | provenance | | | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:22 | access to field field | provenance | | -| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | provenance | | -| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:508:20:508:33 | [post] (...) ... : SimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | provenance | | +| GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:21 | access to field field | provenance | | | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:21 | access to field field | provenance | | -| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:21 | access to field field | provenance | | | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:21 | access to field field | provenance | | | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | provenance | | -| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:538:20:538:22 | [post] ...! : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | provenance | | -| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:546:20:546:24 | [post] ... = ... : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | provenance | | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | provenance | | | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | provenance | | @@ -880,43 +874,37 @@ nodes | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | semmle.label | sc [Return] : SimpleClass [field field] : String | | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String | | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | semmle.label | "taint source" : String | -| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | semmle.label | [post] access to local variable x1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | semmle.label | [post] access to local variable x2 : SimpleClass [field field] : String | +| GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | semmle.label | [post] ... ? ... : ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | semmle.label | access to local variable x1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:491:15:491:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | semmle.label | access to local variable x2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:492:15:492:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | semmle.label | [post] access to local variable y1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | semmle.label | [post] access to local variable y2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | semmle.label | [post] access to local variable y3 : SimpleClass [field field] : String | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | semmle.label | [post] ... ? ... : ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | semmle.label | access to local variable y1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:498:15:498:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | semmle.label | access to local variable y2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:499:15:499:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | semmle.label | access to local variable y3 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:15:500:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | semmle.label | [post] access to local variable x : SubSimpleClass [field field] : String | -| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | semmle.label | access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:508:20:508:33 | [post] (...) ... : SimpleClass [field field] : String | semmle.label | [post] (...) ... : SimpleClass [field field] : String | +| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:509:15:509:21 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | semmle.label | [post] access to parameter x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | +| GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | semmle.label | [post] ... ?? ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | semmle.label | access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:516:15:516:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | semmle.label | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:517:15:517:21 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | semmle.label | [post] access to local variable z : SimpleClass [field field] : String | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | semmle.label | [post] ... switch { ... } : SimpleClass [field field] : String | | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:531:15:531:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | semmle.label | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:15:532:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | semmle.label | access to local variable z : SimpleClass [field field] : String | | GlobalDataFlow.cs:533:15:533:21 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String | +| GlobalDataFlow.cs:538:20:538:22 | [post] ...! : SimpleClass [field field] : String | semmle.label | [post] ...! : SimpleClass [field field] : String | | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | semmle.label | access to parameter sc : SimpleClass [field field] : String | | GlobalDataFlow.cs:539:15:539:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:546:20:546:24 | [post] ... = ... : SimpleClass [field field] : String | semmle.label | [post] ... = ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:547:15:547:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | semmle.label | e : null [element] : String | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 43c462eaced..8fcf385a4f5 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -461,46 +461,40 @@ edges | GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | | | GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | | | GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:508:20:508:33 | [post] (...) ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:22 | [post] ...! : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:546:20:546:24 | [post] ... = ... : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:22 | access to field field | provenance | | | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:22 | access to field field | provenance | | -| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | GlobalDataFlow.cs:498:15:498:22 | access to field field | provenance | | | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | GlobalDataFlow.cs:499:15:499:22 | access to field field | provenance | | | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | GlobalDataFlow.cs:500:15:500:22 | access to field field | provenance | | -| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | provenance | | -| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:508:20:508:33 | [post] (...) ... : SimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:509:15:509:21 | access to field field | provenance | | +| GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | GlobalDataFlow.cs:516:15:516:21 | access to field field | provenance | | | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:517:15:517:21 | access to field field | provenance | | -| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | provenance | | -| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:531:15:531:21 | access to field field | provenance | | | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | GlobalDataFlow.cs:532:15:532:21 | access to field field | provenance | | | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | GlobalDataFlow.cs:533:15:533:21 | access to field field | provenance | | -| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:538:20:538:22 | [post] ...! : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:539:15:539:22 | access to field field | provenance | | -| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | +| GlobalDataFlow.cs:546:20:546:24 | [post] ... = ... : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | provenance | | | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | GlobalDataFlow.cs:547:15:547:21 | access to field field | provenance | | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | provenance | | | GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | provenance | | @@ -983,43 +977,37 @@ nodes | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | semmle.label | sc [Return] : SimpleClass [field field] : String | | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String | | GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | semmle.label | "taint source" : String | -| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | semmle.label | [post] access to local variable x1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | semmle.label | [post] access to local variable x2 : SimpleClass [field field] : String | +| GlobalDataFlow.cs:490:20:490:31 | [post] ... ? ... : ... : SimpleClass [field field] : String | semmle.label | [post] ... ? ... : ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | semmle.label | access to local variable x1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:491:15:491:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | semmle.label | access to local variable x2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:492:15:492:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | semmle.label | [post] access to local variable y1 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | semmle.label | [post] access to local variable y2 : SimpleClass [field field] : String | -| GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | semmle.label | [post] access to local variable y3 : SimpleClass [field field] : String | +| GlobalDataFlow.cs:497:20:497:43 | [post] ... ? ... : ... : SimpleClass [field field] : String | semmle.label | [post] ... ? ... : ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:498:15:498:16 | access to local variable y1 : SimpleClass [field field] : String | semmle.label | access to local variable y1 : SimpleClass [field field] : String | | GlobalDataFlow.cs:498:15:498:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:499:15:499:16 | access to local variable y2 : SimpleClass [field field] : String | semmle.label | access to local variable y2 : SimpleClass [field field] : String | | GlobalDataFlow.cs:499:15:499:22 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:500:15:500:16 | access to local variable y3 : SimpleClass [field field] : String | semmle.label | access to local variable y3 : SimpleClass [field field] : String | | GlobalDataFlow.cs:500:15:500:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | semmle.label | [post] access to local variable x : SubSimpleClass [field field] : String | -| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SubSimpleClass [field field] : String | semmle.label | access to local variable x : SubSimpleClass [field field] : String | +| GlobalDataFlow.cs:508:20:508:33 | [post] (...) ... : SimpleClass [field field] : String | semmle.label | [post] (...) ... : SimpleClass [field field] : String | +| GlobalDataFlow.cs:509:15:509:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:509:15:509:21 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | semmle.label | [post] access to parameter x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | +| GlobalDataFlow.cs:515:20:515:25 | [post] ... ?? ... : SimpleClass [field field] : String | semmle.label | [post] ... ?? ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:516:15:516:15 | access to parameter x : SimpleClass [field field] : String | semmle.label | access to parameter x : SimpleClass [field field] : String | | GlobalDataFlow.cs:516:15:516:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:517:15:517:15 | access to local variable y : SimpleClass [field field] : String | semmle.label | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:517:15:517:21 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | -| GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | semmle.label | [post] access to local variable y : SimpleClass [field field] : String | -| GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | semmle.label | [post] access to local variable z : SimpleClass [field field] : String | +| GlobalDataFlow.cs:525:20:530:9 | [post] ... switch { ... } : SimpleClass [field field] : String | semmle.label | [post] ... switch { ... } : SimpleClass [field field] : String | | GlobalDataFlow.cs:531:15:531:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:531:15:531:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:532:15:532:15 | access to local variable y : SimpleClass [field field] : String | semmle.label | access to local variable y : SimpleClass [field field] : String | | GlobalDataFlow.cs:532:15:532:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:533:15:533:15 | access to local variable z : SimpleClass [field field] : String | semmle.label | access to local variable z : SimpleClass [field field] : String | | GlobalDataFlow.cs:533:15:533:21 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String | +| GlobalDataFlow.cs:538:20:538:22 | [post] ...! : SimpleClass [field field] : String | semmle.label | [post] ...! : SimpleClass [field field] : String | | GlobalDataFlow.cs:539:15:539:16 | access to parameter sc : SimpleClass [field field] : String | semmle.label | access to parameter sc : SimpleClass [field field] : String | | GlobalDataFlow.cs:539:15:539:22 | access to field field | semmle.label | access to field field | -| GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | semmle.label | [post] access to local variable x : SimpleClass [field field] : String | +| GlobalDataFlow.cs:546:20:546:24 | [post] ... = ... : SimpleClass [field field] : String | semmle.label | [post] ... = ... : SimpleClass [field field] : String | | GlobalDataFlow.cs:547:15:547:15 | access to local variable x : SimpleClass [field field] : String | semmle.label | access to local variable x : SimpleClass [field field] : String | | GlobalDataFlow.cs:547:15:547:21 | access to field field | semmle.label | access to field field | | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | semmle.label | e : null [element] : String | diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 9e488197e7c..7dc5e3e4636 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -72,11 +72,10 @@ | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | -| LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | +| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | +| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:92:13:92:17 | access to local variable sink8 | LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | @@ -480,14 +479,12 @@ | LocalDataFlow.cs:307:18:307:33 | String nonSink17 | LocalDataFlow.cs:307:18:307:33 | SSA def(nonSink17) | | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | LocalDataFlow.cs:315:15:315:20 | access to local variable sink73 | -| LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | +| LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | -| LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | -| LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | | LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | -| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | +| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | | LocalDataFlow.cs:314:13:314:18 | access to local variable sink74 | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | LocalDataFlow.cs:316:15:316:20 | access to local variable sink74 | | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | @@ -526,12 +523,10 @@ | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:376:35:376:35 | access to local variable x | | LocalDataFlow.cs:373:17:373:25 | "tainted" | LocalDataFlow.cs:373:13:373:13 | access to local variable x | -| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | +| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | -| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | -| LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | +| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | -| LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | | SSA.cs:5:26:5:32 | SSA param(tainted) | SSA.cs:8:24:8:30 | access to parameter tainted | @@ -559,47 +554,38 @@ | SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | | SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:30:24:30:31 | access to local variable nonSink0 | | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | -| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | +| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:22:27:22:28 | "" | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | | SSA.cs:23:13:23:22 | [post] access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:22 | access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | -| SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | -| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | -| SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | -| SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | +| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | -| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | +| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | -| SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:28:16:28:23 | access to local variable nonSink1 | SSA.cs:28:16:28:28 | SSA def(nonSink1) | -| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | +| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:28:27:28:28 | "" | SSA.cs:28:16:28:23 | access to local variable nonSink1 | | SSA.cs:29:13:29:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:22 | access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | -| SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | | SSA.cs:30:13:30:20 | access to local variable nonSink1 | SSA.cs:30:13:30:31 | SSA def(nonSink1) | -| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | -| SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | -| SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | +| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:20 | access to local variable nonSink1 | -| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | +| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | -| SSA.cs:31:9:31:24 | SSA phi(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | -| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | +| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:34:27:34:28 | "" | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | -| SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | @@ -610,30 +596,25 @@ | SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | | SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | | SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | +| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | +| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | +| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | +| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | -| SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:46:16:46:23 | access to local variable nonSink2 | SSA.cs:46:16:46:28 | SSA def(nonSink2) | -| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | +| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:46:27:46:28 | "" | SSA.cs:46:16:46:23 | access to local variable nonSink2 | | SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | | SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | -| SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:49:13:49:20 | access to local variable nonSink2 | SSA.cs:49:13:49:31 | SSA def(nonSink2) | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:51:21:51:28 | access to local variable nonSink2 | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:53:21:53:28 | access to local variable nonSink2 | @@ -644,19 +625,14 @@ | SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | | SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | | SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | -| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | -| SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | -| SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | -| SSA.cs:55:9:55:24 | SSA phi(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | +| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | +| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | SSA.cs:59:23:59:30 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | @@ -744,15 +720,14 @@ | SSA.cs:85:15:85:20 | [post] access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:85:15:85:20 | access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | SSA.cs:88:16:88:28 | SSA def(ssaSink4) | -| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | +| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:88:27:88:28 | "" | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | | SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | | SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | -| SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | @@ -763,33 +738,27 @@ | SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | | SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | | SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | -| SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | -| SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | +| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | +| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | | SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | | SSA.cs:101:16:101:23 | access to local variable nonSink3 | SSA.cs:101:16:101:28 | SSA def(nonSink3) | -| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | +| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:101:27:101:28 | "" | SSA.cs:101:16:101:23 | access to local variable nonSink3 | | SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | | SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | -| SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:104:13:104:20 | access to local variable nonSink3 | SSA.cs:104:13:104:31 | SSA def(nonSink3) | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:106:21:106:28 | access to local variable nonSink3 | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:108:21:108:28 | access to local variable nonSink3 | @@ -800,19 +769,14 @@ | SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | | SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | | SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | -| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | -| SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | -| SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | -| SSA.cs:110:9:110:32 | SSA phi(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | +| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | +| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:110:23:110:30 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | | SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | | SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | @@ -826,15 +790,14 @@ | SSA.cs:114:9:114:14 | access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | access to field S | SSA.cs:117:13:117:18 | access to field S | | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | -| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:114:32:114:33 | "" | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | | SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | -| SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | +| SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | SSA.cs:123:23:123:28 | access to field S | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:119:21:119:24 | this access | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:121:21:121:24 | this access | | SSA.cs:117:13:117:16 | this access | SSA.cs:119:21:119:24 | this access | @@ -851,27 +814,20 @@ | SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | | SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | | SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:119:21:119:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | -| SSA.cs:119:21:119:26 | access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | -| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:119:21:119:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:121:21:121:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | -| SSA.cs:121:21:121:26 | access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | -| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | -| SSA.cs:123:9:123:30 | SSA phi read(this.S) | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:121:21:121:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:123:23:123:26 | [post] this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:26 | this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:28 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | @@ -892,12 +848,11 @@ | SSA.cs:127:9:127:14 | access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | access to field S | SSA.cs:130:13:130:18 | access to field S | | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:127:35:127:36 | "" | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | | SSA.cs:128:13:128:22 | [post] access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:22 | access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | -| SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | SSA.cs:136:23:136:28 | access to field S | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:132:21:132:24 | this access | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:134:21:134:24 | this access | | SSA.cs:130:13:130:16 | this access | SSA.cs:132:21:132:24 | this access | @@ -910,24 +865,18 @@ | SSA.cs:130:13:130:46 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | | SSA.cs:130:13:130:46 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | | SSA.cs:130:39:130:46 | access to local variable nonSink0 | SSA.cs:130:13:130:35 | access to field SsaFieldNonSink0 | -| SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:132:21:132:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:132:21:132:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | -| SSA.cs:132:21:132:26 | access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | -| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:132:21:132:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:134:21:134:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | -| SSA.cs:134:21:134:26 | access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | -| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:136:9:136:30 | SSA phi read(this.S) | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:134:21:134:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:136:23:136:26 | [post] this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:26 | this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:28 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | @@ -940,12 +889,10 @@ | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:146:13:146:13 | (...) ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:149:17:149:17 | access to parameter t | | SSA.cs:147:13:147:13 | access to parameter t | SSA.cs:147:13:147:26 | SSA def(t) | -| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:147:13:147:26 | [input] SSA phi(t) | -| SSA.cs:147:13:147:26 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:147:17:147:26 | default(...) | SSA.cs:147:13:147:13 | access to parameter t | | SSA.cs:149:13:149:13 | access to parameter t | SSA.cs:149:13:149:17 | SSA def(t) | -| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:149:13:149:17 | [input] SSA phi(t) | -| SSA.cs:149:13:149:17 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:149:17:149:17 | access to parameter t | SSA.cs:149:13:149:13 | access to parameter t | | SSA.cs:152:36:152:36 | SSA param(t) | SSA.cs:154:13:154:13 | access to parameter t | | SSA.cs:152:36:152:36 | t | SSA.cs:152:36:152:36 | SSA param(t) | @@ -953,8 +900,7 @@ | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:21 | [input] SSA phi(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:155:25:155:25 | access to parameter t | | SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:13:155:26 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:155:13:155:26 | [input] SSA phi(t) | +| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:152:17:152:28 | SSA phi(t) | | SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:25:155:25 | SSA def(t) | | SSA.cs:166:10:166:13 | this | SSA.cs:166:19:166:22 | this access | | SSA.cs:166:28:166:31 | null | SSA.cs:166:19:166:24 | access to field S | @@ -963,29 +909,22 @@ | SSA.cs:168:35:168:35 | SSA param(i) | SSA.cs:171:13:171:13 | access to parameter i | | SSA.cs:168:35:168:35 | i | SSA.cs:168:35:168:35 | SSA param(i) | | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | SSA.cs:170:16:170:28 | SSA def(ssaSink5) | -| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | +| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:170:27:170:28 | "" | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | | SSA.cs:171:13:171:13 | access to parameter i | SSA.cs:171:13:171:15 | SSA def(i) | -| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:13:178:13 | [input] SSA phi(i) | -| SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | +| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | SSA.cs:173:13:173:30 | SSA def(ssaSink5) | -| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | +| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | | SSA.cs:173:24:173:30 | access to parameter tainted | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | -| SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:174:13:178:13 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | -| SSA.cs:174:20:174:20 | SSA phi(i) | SSA.cs:174:20:174:20 | access to parameter i | | SSA.cs:174:20:174:20 | access to parameter i | SSA.cs:174:20:174:22 | SSA def(i) | -| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:177:17:177:29 | [input] SSA phi(i) | -| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | +| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | +| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | [post] access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | -| SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:177:17:177:29 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | -| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | -| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | -| SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | +| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | | Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | @@ -1805,509 +1744,408 @@ | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1708:24:1713 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1708:24:1713 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1723:24:1728 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1723:24:1728 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1738:24:1743 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1738:24:1743 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1753:24:1758 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1753:24:1758 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1768:24:1773 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1768:24:1773 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1783:24:1788 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1783:24:1788 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1798:24:1803 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1798:24:1803 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1813:24:1818 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1813:24:1818 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1828:24:1833 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1828:24:1833 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1843:24:1848 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1843:24:1848 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1858:24:1863 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1858:24:1863 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1873:24:1878 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1873:24:1878 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1888:24:1893 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1888:24:1893 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1903:24:1908 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1903:24:1908 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1918:24:1923 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1918:24:1923 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1933:24:1938 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1933:24:1938 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1948:24:1953 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1948:24:1953 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1963:24:1968 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1963:24:1968 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1978:24:1983 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1978:24:1983 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1993:24:1998 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1993:24:1998 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2008:24:2013 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2008:24:2013 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2023:24:2028 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2023:24:2028 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2038:24:2043 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2038:24:2043 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2053:24:2058 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2053:24:2058 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2068:24:2073 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2068:24:2073 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2083:24:2088 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2083:24:2088 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2098:24:2103 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2098:24:2103 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2113:24:2118 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2113:24:2118 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2128:24:2133 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2128:24:2133 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2143:24:2148 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2143:24:2148 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2158:24:2163 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2158:24:2163 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2173:24:2178 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2173:24:2178 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2188:24:2193 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2188:24:2193 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2203:24:2208 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2203:24:2208 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2218:24:2223 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2218:24:2223 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2233:24:2238 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2233:24:2238 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2248:24:2253 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2248:24:2253 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2263:24:2268 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2263:24:2268 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2278:24:2283 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2278:24:2283 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2293:24:2298 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2293:24:2298 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2308:24:2313 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2308:24:2313 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2323:24:2328 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2323:24:2328 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2338:24:2343 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2338:24:2343 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2353:24:2358 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2353:24:2358 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2368:24:2373 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2368:24:2373 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2383:24:2388 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2383:24:2388 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2398:24:2403 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2398:24:2403 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2413:24:2418 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2413:24:2418 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2428:24:2433 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2428:24:2433 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2443:24:2448 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2443:24:2448 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2458:24:2463 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2458:24:2463 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2473:24:2478 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2473:24:2478 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2488:24:2493 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2488:24:2493 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2503:24:2508 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2503:24:2508 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2518:24:2523 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2518:24:2523 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2533:24:2538 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2533:24:2538 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2548:24:2553 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2548:24:2553 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2563:24:2568 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2563:24:2568 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2578:24:2583 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2578:24:2583 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2593:24:2598 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2593:24:2598 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2608:24:2613 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2608:24:2613 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2623:24:2628 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2623:24:2628 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2638:24:2643 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2638:24:2643 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2653:24:2658 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2653:24:2658 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2668:24:2673 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2668:24:2673 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2683:24:2688 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2683:24:2688 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2698:24:2703 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2698:24:2703 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2713:24:2718 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2713:24:2718 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2728:24:2733 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2728:24:2733 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2743:24:2748 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2743:24:2748 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2758:24:2763 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2758:24:2763 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2773:24:2778 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2773:24:2778 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2788:24:2793 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2788:24:2793 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2803:24:2808 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2803:24:2808 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2818:24:2823 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2818:24:2823 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2833:24:2838 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2833:24:2838 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2848:24:2853 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2848:24:2853 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2863:24:2868 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2863:24:2868 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2878:24:2883 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2878:24:2883 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2893:24:2898 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2893:24:2898 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2908:24:2913 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2908:24:2913 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2923:24:2928 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2923:24:2928 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2938:24:2943 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2938:24:2943 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2953:24:2958 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2953:24:2958 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2968:24:2973 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2968:24:2973 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2983:24:2988 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2983:24:2988 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2998:24:3003 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2998:24:3003 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3013:24:3018 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3013:24:3018 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3028:24:3033 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3028:24:3033 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3043:24:3048 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3043:24:3048 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3058:24:3063 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3058:24:3063 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3073:24:3078 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3073:24:3078 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3088:24:3093 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3088:24:3093 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3103:24:3108 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3103:24:3108 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3118:24:3123 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3118:24:3123 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3133:24:3138 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3133:24:3138 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3148:24:3153 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3148:24:3153 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3163:24:3168 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3163:24:3168 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3178:24:3183 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3178:24:3183 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3193:24:3198 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3193:24:3198 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1742:25:1742 | access to local variable x | diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected index ea0ae7f9da7..48bf36691e0 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected @@ -80,11 +80,10 @@ | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | | LocalDataFlow.cs:88:9:88:36 | SSA def(nonSink0) | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | LocalDataFlow.cs:88:9:88:16 | access to local variable nonSink0 | -| LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:24:88:28 | "abc" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | +| LocalDataFlow.cs:88:24:88:28 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:88:32:88:36 | "def" | LocalDataFlow.cs:88:20:88:36 | ... ? ... : ... | -| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:88:20:88:36 | SSA phi(sink7) | +| LocalDataFlow.cs:88:32:88:36 | [input] SSA phi(sink7) | LocalDataFlow.cs:92:29:92:33 | access to local variable sink7 | | LocalDataFlow.cs:89:15:89:22 | [post] access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:89:15:89:22 | access to local variable nonSink0 | LocalDataFlow.cs:96:32:96:39 | access to local variable nonSink0 | | LocalDataFlow.cs:92:13:92:17 | access to local variable sink8 | LocalDataFlow.cs:92:13:92:33 | SSA def(sink8) | @@ -589,14 +588,12 @@ | LocalDataFlow.cs:307:18:307:33 | String nonSink17 | LocalDataFlow.cs:307:18:307:33 | SSA def(nonSink17) | | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | | LocalDataFlow.cs:313:13:313:38 | SSA def(sink73) | LocalDataFlow.cs:315:15:315:20 | access to local variable sink73 | -| LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | +| LocalDataFlow.cs:313:22:313:29 | [input] SSA phi read(sink0) | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | | LocalDataFlow.cs:313:22:313:29 | access to local variable nonSink0 | LocalDataFlow.cs:314:31:314:38 | access to local variable nonSink0 | | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | LocalDataFlow.cs:313:13:313:18 | access to local variable sink73 | -| LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | -| LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | LocalDataFlow.cs:313:22:313:38 | SSA phi read(sink0) | | LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:22:313:38 | ... ?? ... | -| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:313:34:313:38 | [input] SSA phi read(sink0) | +| LocalDataFlow.cs:313:34:313:38 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | | LocalDataFlow.cs:314:13:314:18 | access to local variable sink74 | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | | LocalDataFlow.cs:314:13:314:38 | SSA def(sink74) | LocalDataFlow.cs:316:15:316:20 | access to local variable sink74 | | LocalDataFlow.cs:314:22:314:26 | access to local variable sink0 | LocalDataFlow.cs:314:22:314:38 | ... ?? ... | @@ -636,12 +633,10 @@ | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:376:35:376:35 | access to local variable x | | LocalDataFlow.cs:373:17:373:25 | "tainted" | LocalDataFlow.cs:373:13:373:13 | access to local variable x | -| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | +| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | -| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | -| LocalDataFlow.cs:381:13:381:29 | [input] SSA phi(x) | LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | +| LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | -| LocalDataFlow.cs:382:9:382:17 | SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | | SSA.cs:5:26:5:32 | SSA param(tainted) | SSA.cs:8:24:8:30 | access to parameter tainted | @@ -669,50 +664,41 @@ | SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | | SSA.cs:19:13:19:20 | access to local variable nonSink0 | SSA.cs:30:24:30:31 | access to local variable nonSink0 | | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | -| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | +| SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:22:27:22:28 | "" | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | | SSA.cs:23:13:23:22 | [post] access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:22 | access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:29 | access to property Length | SSA.cs:23:13:23:33 | ... > ... | | SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | -| SSA.cs:23:13:23:33 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | -| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | -| SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | -| SSA.cs:24:13:24:31 | [input] SSA phi(ssaSink1) | SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | +| SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | -| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:31 | [input] SSA phi read(ssaSink0) | +| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | -| SSA.cs:25:9:25:24 | SSA phi(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:28:16:28:23 | access to local variable nonSink1 | SSA.cs:28:16:28:28 | SSA def(nonSink1) | -| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | +| SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:28:27:28:28 | "" | SSA.cs:28:16:28:23 | access to local variable nonSink1 | | SSA.cs:29:13:29:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:22 | access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:29 | access to property Length | SSA.cs:29:13:29:33 | ... > ... | | SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | -| SSA.cs:29:13:29:33 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | | SSA.cs:30:13:30:20 | access to local variable nonSink1 | SSA.cs:30:13:30:31 | SSA def(nonSink1) | -| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | -| SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | -| SSA.cs:30:13:30:31 | [input] SSA phi(nonSink1) | SSA.cs:31:9:31:24 | SSA phi(nonSink1) | +| SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:20 | access to local variable nonSink1 | -| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:31 | [input] SSA phi read(nonSink0) | +| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | -| SSA.cs:31:9:31:24 | SSA phi(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | -| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | +| SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:34:27:34:28 | "" | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | | SSA.cs:35:13:35:29 | access to property Length | SSA.cs:35:13:35:33 | ... > ... | -| SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:35:13:35:33 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | @@ -724,31 +710,26 @@ | SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | | SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | | SSA.cs:38:17:38:33 | access to property Length | SSA.cs:38:17:38:37 | ... > ... | -| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:39:17:39:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | +| SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | +| SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | +| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | -| SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:41:17:41:29 | [input] SSA phi(ssaSink2) | -| SSA.cs:43:9:43:24 | SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | +| SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | +| SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | -| SSA.cs:43:9:43:24 | SSA phi(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:46:16:46:23 | access to local variable nonSink2 | SSA.cs:46:16:46:28 | SSA def(nonSink2) | -| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | +| SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:46:27:46:28 | "" | SSA.cs:46:16:46:23 | access to local variable nonSink2 | | SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | [post] access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | | SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | | SSA.cs:47:13:47:22 | access to parameter nonTainted | SSA.cs:50:17:50:26 | access to parameter nonTainted | | SSA.cs:47:13:47:29 | access to property Length | SSA.cs:47:13:47:33 | ... > ... | -| SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:47:13:47:33 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:47:13:47:33 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:49:13:49:20 | access to local variable nonSink2 | SSA.cs:49:13:49:31 | SSA def(nonSink2) | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:51:21:51:28 | access to local variable nonSink2 | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:53:21:53:28 | access to local variable nonSink2 | @@ -760,19 +741,14 @@ | SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | | SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | | SSA.cs:50:17:50:33 | access to property Length | SSA.cs:50:17:50:37 | ... > ... | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | -| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:51:17:51:29 | [input] SSA phi(nonSink2) | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | -| SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | SSA.cs:55:9:55:24 | SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | -| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:53:17:53:29 | [input] SSA phi(nonSink2) | -| SSA.cs:55:9:55:24 | SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | -| SSA.cs:55:9:55:24 | SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | -| SSA.cs:55:9:55:24 | SSA phi(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | +| SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | +| SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | +| SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | SSA.cs:59:23:59:30 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | @@ -860,16 +836,15 @@ | SSA.cs:85:15:85:20 | [post] access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:85:15:85:20 | access to field S | SSA.cs:114:9:114:14 | access to field S | | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | SSA.cs:88:16:88:28 | SSA def(ssaSink4) | -| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | +| SSA.cs:88:16:88:28 | SSA def(ssaSink4) | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:88:27:88:28 | "" | SSA.cs:88:16:88:23 | access to local variable ssaSink4 | | SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | [post] access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | | SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | | SSA.cs:89:13:89:22 | access to parameter nonTainted | SSA.cs:92:17:92:26 | access to parameter nonTainted | | SSA.cs:89:13:89:29 | access to property Length | SSA.cs:89:13:89:33 | ... > ... | -| SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:89:13:89:33 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | +| SSA.cs:89:13:89:33 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | @@ -881,34 +856,28 @@ | SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | | SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | | SSA.cs:92:17:92:33 | access to property Length | SSA.cs:92:17:92:37 | ... > ... | -| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:93:17:93:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | -| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | -| SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:95:17:95:29 | [input] SSA phi(ssaSink4) | -| SSA.cs:97:9:97:32 | SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | -| SSA.cs:97:9:97:32 | SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | -| SSA.cs:97:9:97:32 | SSA phi(ssaSink4) | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | +| SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | +| SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | +| SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | | SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | | SSA.cs:101:16:101:23 | access to local variable nonSink3 | SSA.cs:101:16:101:28 | SSA def(nonSink3) | -| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | +| SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:101:27:101:28 | "" | SSA.cs:101:16:101:23 | access to local variable nonSink3 | | SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | [post] access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | | SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | | SSA.cs:102:13:102:22 | access to parameter nonTainted | SSA.cs:105:17:105:26 | access to parameter nonTainted | | SSA.cs:102:13:102:29 | access to property Length | SSA.cs:102:13:102:33 | ... > ... | -| SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:102:13:102:33 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:102:13:102:33 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:104:13:104:20 | access to local variable nonSink3 | SSA.cs:104:13:104:31 | SSA def(nonSink3) | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:106:21:106:28 | access to local variable nonSink3 | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:108:21:108:28 | access to local variable nonSink3 | @@ -920,19 +889,14 @@ | SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | | SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | | SSA.cs:105:17:105:33 | access to property Length | SSA.cs:105:17:105:37 | ... > ... | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | -| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:106:17:106:29 | [input] SSA phi(nonSink3) | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | -| SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | SSA.cs:110:9:110:32 | SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | -| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:108:17:108:29 | [input] SSA phi(nonSink3) | -| SSA.cs:110:9:110:32 | SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | -| SSA.cs:110:9:110:32 | SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | -| SSA.cs:110:9:110:32 | SSA phi(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | +| SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | +| SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | +| SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:110:23:110:30 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | | SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | | SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | @@ -946,16 +910,15 @@ | SSA.cs:114:9:114:14 | access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | access to field S | SSA.cs:117:13:117:18 | access to field S | | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | -| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:114:32:114:33 | "" | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | | SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | | SSA.cs:115:13:115:29 | access to property Length | SSA.cs:115:13:115:33 | ... > ... | -| SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:115:13:115:33 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | +| SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | SSA.cs:123:23:123:28 | access to field S | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:119:21:119:24 | this access | | SSA.cs:117:13:117:16 | [post] this access | SSA.cs:121:21:121:24 | this access | | SSA.cs:117:13:117:16 | this access | SSA.cs:119:21:119:24 | this access | @@ -973,27 +936,20 @@ | SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | | SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | | SSA.cs:118:17:118:33 | access to property Length | SSA.cs:118:17:118:37 | ... > ... | -| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:119:21:119:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | -| SSA.cs:119:21:119:26 | access to field S | SSA.cs:119:17:119:41 | [input] SSA phi read(this.S) | -| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:119:17:119:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | -| SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | SSA.cs:123:9:123:30 | SSA phi read(this.S) | -| SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:119:21:119:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:121:21:121:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:24 | this access | SSA.cs:123:23:123:26 | this access | -| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | -| SSA.cs:121:21:121:26 | access to field S | SSA.cs:121:17:121:41 | [input] SSA phi read(this.S) | -| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:121:17:121:41 | [input] SSA phi(this.S.SsaFieldSink1) | -| SSA.cs:123:9:123:30 | SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | -| SSA.cs:123:9:123:30 | SSA phi read(this.S) | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:123:9:123:30 | SSA phi(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:121:21:121:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | +| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:123:23:123:26 | [post] this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:26 | this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:28 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | @@ -1014,13 +970,12 @@ | SSA.cs:127:9:127:14 | access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | access to field S | SSA.cs:130:13:130:18 | access to field S | | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:127:35:127:36 | "" | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | | SSA.cs:128:13:128:22 | [post] access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:22 | access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:29 | access to property Length | SSA.cs:128:13:128:33 | ... > ... | -| SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:128:13:128:33 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | SSA.cs:136:23:136:28 | access to field S | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:132:21:132:24 | this access | | SSA.cs:130:13:130:16 | [post] this access | SSA.cs:134:21:134:24 | this access | | SSA.cs:130:13:130:16 | this access | SSA.cs:132:21:132:24 | this access | @@ -1034,24 +989,18 @@ | SSA.cs:130:13:130:46 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | | SSA.cs:130:39:130:46 | access to local variable nonSink0 | SSA.cs:130:13:130:35 | access to field SsaFieldNonSink0 | | SSA.cs:131:17:131:33 | access to property Length | SSA.cs:131:17:131:37 | ... > ... | -| SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | | SSA.cs:132:21:132:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:132:21:132:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | -| SSA.cs:132:21:132:26 | access to field S | SSA.cs:132:17:132:44 | [input] SSA phi read(this.S) | -| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:132:17:132:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | SSA.cs:136:9:136:30 | SSA phi read(this.S) | -| SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:132:21:132:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:134:21:134:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:24 | this access | SSA.cs:136:23:136:26 | this access | -| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | -| SSA.cs:134:21:134:26 | access to field S | SSA.cs:134:17:134:44 | [input] SSA phi read(this.S) | -| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:134:17:134:44 | [input] SSA phi(this.S.SsaFieldNonSink0) | -| SSA.cs:136:9:136:30 | SSA phi read(this.S) | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:136:9:136:30 | SSA phi(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:134:21:134:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | +| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:136:23:136:26 | [post] this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:26 | this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:28 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | @@ -1065,12 +1014,10 @@ | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:146:13:146:13 | (...) ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:149:17:149:17 | access to parameter t | | SSA.cs:147:13:147:13 | access to parameter t | SSA.cs:147:13:147:26 | SSA def(t) | -| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:147:13:147:26 | [input] SSA phi(t) | -| SSA.cs:147:13:147:26 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:147:17:147:26 | default(...) | SSA.cs:147:13:147:13 | access to parameter t | | SSA.cs:149:13:149:13 | access to parameter t | SSA.cs:149:13:149:17 | SSA def(t) | -| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:149:13:149:17 | [input] SSA phi(t) | -| SSA.cs:149:13:149:17 | [input] SSA phi(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | | SSA.cs:149:17:149:17 | access to parameter t | SSA.cs:149:13:149:13 | access to parameter t | | SSA.cs:152:36:152:36 | SSA param(t) | SSA.cs:154:13:154:13 | access to parameter t | | SSA.cs:152:36:152:36 | t | SSA.cs:152:36:152:36 | SSA param(t) | @@ -1079,8 +1026,7 @@ | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:21 | [input] SSA phi(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:155:25:155:25 | access to parameter t | | SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:13:155:26 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:155:13:155:26 | [input] SSA phi(t) | +| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:152:17:152:28 | SSA phi(t) | | SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:25:155:25 | SSA def(t) | | SSA.cs:166:10:166:13 | this | SSA.cs:166:19:166:22 | this access | | SSA.cs:166:28:166:31 | null | SSA.cs:166:19:166:24 | access to field S | @@ -1089,31 +1035,24 @@ | SSA.cs:168:35:168:35 | SSA param(i) | SSA.cs:171:13:171:13 | access to parameter i | | SSA.cs:168:35:168:35 | i | SSA.cs:168:35:168:35 | SSA param(i) | | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | SSA.cs:170:16:170:28 | SSA def(ssaSink5) | -| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | +| SSA.cs:170:16:170:28 | SSA def(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:170:27:170:28 | "" | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | | SSA.cs:171:13:171:13 | access to parameter i | SSA.cs:171:13:171:15 | SSA def(i) | | SSA.cs:171:13:171:15 | ...-- | SSA.cs:171:13:171:19 | ... > ... | -| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:13:178:13 | [input] SSA phi(i) | -| SSA.cs:171:13:171:19 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | +| SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | SSA.cs:173:13:173:30 | SSA def(ssaSink5) | -| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | +| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | | SSA.cs:173:24:173:30 | access to parameter tainted | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | -| SSA.cs:174:13:178:13 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:174:13:178:13 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | -| SSA.cs:174:20:174:20 | SSA phi(i) | SSA.cs:174:20:174:20 | access to parameter i | | SSA.cs:174:20:174:20 | access to parameter i | SSA.cs:174:20:174:22 | SSA def(i) | | SSA.cs:174:20:174:22 | ...-- | SSA.cs:174:20:174:26 | ... > ... | -| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:177:17:177:29 | [input] SSA phi(i) | -| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | +| SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | +| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | [post] access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | -| SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:177:17:177:29 | [input] SSA phi(i) | SSA.cs:174:20:174:20 | SSA phi(i) | -| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | -| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:177:17:177:29 | [input] SSA phi read(ssaSink5) | -| SSA.cs:180:9:180:24 | SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | +| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | | Splitting.cs:3:28:3:34 | SSA param(tainted) | Splitting.cs:5:17:5:23 | access to parameter tainted | @@ -2054,509 +1993,408 @@ | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1708:24:1713 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1708:24:1713 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1723:24:1728 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1723:24:1728 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1738:24:1743 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1738:24:1743 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1753:24:1758 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1753:24:1758 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1768:24:1773 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1768:24:1773 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1783:24:1788 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1783:24:1788 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1798:24:1803 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1798:24:1803 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1813:24:1818 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1813:24:1818 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1828:24:1833 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1828:24:1833 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1843:24:1848 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1843:24:1848 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1858:24:1863 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1858:24:1863 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1873:24:1878 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1873:24:1878 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1888:24:1893 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1888:24:1893 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1903:24:1908 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1903:24:1908 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1918:24:1923 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1918:24:1923 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1933:24:1938 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1933:24:1938 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1948:24:1953 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1948:24:1953 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1963:24:1968 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1963:24:1968 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1978:24:1983 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1978:24:1983 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1993:24:1998 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1993:24:1998 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2008:24:2013 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2008:24:2013 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2023:24:2028 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2023:24:2028 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2038:24:2043 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2038:24:2043 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2053:24:2058 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2053:24:2058 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2068:24:2073 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2068:24:2073 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2083:24:2088 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2083:24:2088 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2098:24:2103 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2098:24:2103 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2113:24:2118 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2113:24:2118 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2128:24:2133 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2128:24:2133 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2143:24:2148 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2143:24:2148 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2158:24:2163 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2158:24:2163 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2173:24:2178 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2173:24:2178 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2188:24:2193 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2188:24:2193 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2203:24:2208 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2203:24:2208 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2218:24:2223 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2218:24:2223 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2233:24:2238 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2233:24:2238 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2248:24:2253 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2248:24:2253 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2263:24:2268 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2263:24:2268 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2278:24:2283 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2278:24:2283 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2293:24:2298 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2293:24:2298 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2308:24:2313 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2308:24:2313 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2323:24:2328 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2323:24:2328 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2338:24:2343 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2338:24:2343 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2353:24:2358 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2353:24:2358 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2368:24:2373 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2368:24:2373 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2383:24:2388 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2383:24:2388 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2398:24:2403 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2398:24:2403 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2413:24:2418 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2413:24:2418 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2428:24:2433 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2428:24:2433 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2443:24:2448 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2443:24:2448 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2458:24:2463 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2458:24:2463 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2473:24:2478 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2473:24:2478 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2488:24:2493 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2488:24:2493 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2503:24:2508 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2503:24:2508 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2518:24:2523 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2518:24:2523 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2533:24:2538 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2533:24:2538 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2548:24:2553 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2548:24:2553 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2563:24:2568 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2563:24:2568 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2578:24:2583 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2578:24:2583 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2593:24:2598 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2593:24:2598 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2608:24:2613 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2608:24:2613 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2623:24:2628 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2623:24:2628 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2638:24:2643 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2638:24:2643 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2653:24:2658 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2653:24:2658 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2668:24:2673 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2668:24:2673 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2683:24:2688 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2683:24:2688 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2698:24:2703 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2698:24:2703 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2713:24:2718 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2713:24:2718 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2728:24:2733 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2728:24:2733 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2743:24:2748 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2743:24:2748 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2758:24:2763 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2758:24:2763 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2773:24:2778 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2773:24:2778 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2788:24:2793 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2788:24:2793 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2803:24:2808 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2803:24:2808 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2818:24:2823 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2818:24:2823 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2833:24:2838 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2833:24:2838 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2848:24:2853 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2848:24:2853 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2863:24:2868 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2863:24:2868 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2878:24:2883 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2878:24:2883 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2893:24:2898 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2893:24:2898 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2908:24:2913 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2908:24:2913 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2923:24:2928 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2923:24:2928 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2938:24:2943 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2938:24:2943 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2953:24:2958 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2953:24:2958 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2968:24:2973 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2968:24:2973 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2983:24:2988 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2983:24:2988 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:2998:24:3003 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2998:24:3003 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3013:24:3018 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3013:24:3018 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3028:24:3033 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3028:24:3033 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3043:24:3048 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3043:24:3048 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3058:24:3063 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3058:24:3063 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3073:24:3078 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3073:24:3078 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3088:24:3093 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3088:24:3093 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3103:24:3108 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3103:24:3108 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3118:24:3123 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3118:24:3123 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3133:24:3138 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3133:24:3138 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3148:24:3153 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3148:24:3153 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3163:24:3168 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3163:24:3168 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3178:24:3183 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3178:24:3183 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(x) | -| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | +| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:3193:24:3198 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3193:24:3198 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(x) | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1742:25:1742 | access to local variable x | diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst index b4a3446e942..fa2c1d4e8a8 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst @@ -349,6 +349,48 @@ Note that this flow is already recognized by the CodeQL JS analysis, but for thi - The last column, **value**, indicates the kind of flow to add. The value **value** means the input value is unchanged as it flows to the output. + +Example: Modeling properties injected by a middleware function +-------------------------------------------------------------- + +In this example, we'll show how to model a hypothetical middleware function that adds a tainted value +on the incoming request objects: + +.. code-block:: js + + const express = require('express') + const app = express() + + app.use(require('@example/middleware').injectData()) + + app.get('/foo', (req, res) => { + req.data; // <-- mark 'req.data' as a taint source + }); + +This can be achieved with the following data extension: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/javascript-all + extensible: sourceModel + data: + - [ + "@example/middleware", + "Member[injectData].ReturnValue.GuardedRouteHandler.Parameter[0].Member[data]", + "remote", + ] + +- Since we're adding a new taint source, we add a tuple to the **sourceModel** extensible predicate. +- The first column, **"@example/middleware"**, begins the search at imports of the hypothetical NPM package **@example/middleware**. +- **Member[injectData]** selects accesses to the **injectData** member. +- **ReturnValue** selects the return value of the call to **injectData**. +- **GuardedRouteHandler** interprets the current value as a middleware function and selects all route handlers guarded by that middleware. Since the current value is passd to **app.use()**, the callback subsequently passed to **app.get()** is seen as a guarded route handler. +- **Parameter[0]** selects the first parameter of the callback (the parameter named **req**). +- **Member[data]** selects accesses to the **data** property of the **req** object. +- Finally, the kind **remote** indicates that this is considered a source of remote flow. + Reference material ------------------ @@ -494,6 +536,12 @@ Components related to decorators: - **DecoratedParameter** selects a parameter that is decorated by the current value. - **DecoratedMember** selects a method, field, or accessor that is decorated by the current value. +Additionally there is a component related to middleware functions: + +- **GuardedRouteHandler** interprets the current value as a middleware function, and selects any route handler function that comes after it in the routing hierarchy. + This can be used to model properties injected onto request and response objects, such as **req.db** after a middleware that injects a database connection. + Note that this currently over-approximates the set of route handlers but may be made more accurate in the future. + Additional notes about the syntax of operands: - Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, **Member[foo,bar]** matches the union of **Member[foo]** and **Member[bar]**. diff --git a/go/documentation/library-coverage/coverage.csv b/go/documentation/library-coverage/coverage.csv index aa938f4c2bb..d8091bbda64 100644 --- a/go/documentation/library-coverage/coverage.csv +++ b/go/documentation/library-coverage/coverage.csv @@ -21,7 +21,7 @@ errors,,,3,,,,,,,,,,,,,,,,,,,,,,,3, expvar,,,6,,,,,,,,,,,,,,,,,,,,,,,6, fmt,3,,16,,,,3,,,,,,,,,,,,,,,,,,,16, github.com/ChrisTrenkamp/goxpath,3,,,,,,,,,,,,,,,,,,3,,,,,,,, -github.com/Masterminds/squirrel,32,,,,,,,,,,,,,,32,,,,,,,,,,,, +github.com/Masterminds/squirrel,32,27,,,,,,,,,,,,,32,,,,,,27,,,,,, github.com/Sirupsen/logrus,145,,,,,,145,,,,,,,,,,,,,,,,,,,, github.com/antchfx/htmlquery,4,,,,,,,,,,,,,,,,,,4,,,,,,,, github.com/antchfx/jsonquery,4,,,,,,,,,,,,,,,,,,4,,,,,,,, @@ -77,7 +77,7 @@ github.com/kataras/iris/server/web/context,6,,,,,,,,6,,,,,,,,,,,,,,,,,, github.com/kataras/jwt,5,,,,5,,,,,,,,,,,,,,,,,,,,,, github.com/kelseyhightower/envconfig,,6,,,,,,,,,,,,,,,,,,,,6,,,,, github.com/labstack/echo,3,12,2,,,,,,2,,,,,,,1,,,,,,,,12,,2, -github.com/lann/squirrel,32,,,,,,,,,,,,,,32,,,,,,,,,,,, +github.com/lann/squirrel,32,27,,,,,,,,,,,,,32,,,,,,27,,,,,, github.com/lestrrat-go/jwx,2,,,,2,,,,,,,,,,,,,,,,,,,,,, github.com/lestrrat-go/libxml2/parser,3,,,,,,,,,,,,,,,,,,3,,,,,,,, github.com/lestrrat/go-jwx/jwk,1,,,,1,,,,,,,,,,,,,,,,,,,,,, @@ -106,7 +106,7 @@ google.golang.org/protobuf/internal/encoding/text,,,1,,,,,,,,,,,,,,,,,,,,,,,1, google.golang.org/protobuf/internal/impl,,,2,,,,,,,,,,,,,,,,,,,,,,,2, google.golang.org/protobuf/proto,,,8,,,,,,,,,,,,,,,,,,,,,,,8, google.golang.org/protobuf/reflect/protoreflect,,,1,,,,,,,,,,,,,,,,,,,,,,,1, -gopkg.in/Masterminds/squirrel,32,,,,,,,,,,,,,,32,,,,,,,,,,,, +gopkg.in/Masterminds/squirrel,32,27,,,,,,,,,,,,,32,,,,,,27,,,,,, gopkg.in/couchbase/gocb,8,22,48,,,,,8,,,,,,,,,,,,,22,,,,,48, gopkg.in/glog,90,,,,,,90,,,,,,,,,,,,,,,,,,,, gopkg.in/go-jose/go-jose,3,,4,,2,1,,,,,,,,,,,,,,,,,,,,4, diff --git a/go/documentation/library-coverage/coverage.rst b/go/documentation/library-coverage/coverage.rst index 08f7b73d800..2f45f4b7e33 100644 --- a/go/documentation/library-coverage/coverage.rst +++ b/go/documentation/library-coverage/coverage.rst @@ -31,7 +31,7 @@ Go framework & library support `MongoDB Go Driver `_,``go.mongodb.org/mongo-driver*``,11,5,14 `Revel `_,"``github.com/revel/revel*``, ``github.com/robfig/revel*``",46,20,4 `SendGrid `_,``github.com/sendgrid/sendgrid-go*``,,1, - `Squirrel `_,"``github.com/Masterminds/squirrel*``, ``github.com/lann/squirrel*``, ``gopkg.in/Masterminds/squirrel``",,,96 + `Squirrel `_,"``github.com/Masterminds/squirrel*``, ``github.com/lann/squirrel*``, ``gopkg.in/Masterminds/squirrel``",81,,96 `Standard library `_,"````, ``archive/*``, ``bufio``, ``bytes``, ``cmp``, ``compress/*``, ``container/*``, ``context``, ``crypto``, ``crypto/*``, ``database/*``, ``debug/*``, ``embed``, ``encoding``, ``encoding/*``, ``errors``, ``expvar``, ``flag``, ``fmt``, ``go/*``, ``hash``, ``hash/*``, ``html``, ``html/*``, ``image``, ``image/*``, ``index/*``, ``io``, ``io/*``, ``log``, ``log/*``, ``maps``, ``math``, ``math/*``, ``mime``, ``mime/*``, ``net``, ``net/*``, ``os``, ``os/*``, ``path``, ``path/*``, ``plugin``, ``reflect``, ``reflect/*``, ``regexp``, ``regexp/*``, ``slices``, ``sort``, ``strconv``, ``strings``, ``sync``, ``sync/*``, ``syscall``, ``syscall/*``, ``testing``, ``testing/*``, ``text/*``, ``time``, ``time/*``, ``unicode``, ``unicode/*``, ``unsafe``, ``weak``",52,609,104 `XORM `_,"``github.com/go-xorm/xorm*``, ``xorm.io/xorm*``",,,68 `XPath `_,``github.com/antchfx/xpath*``,,,4 @@ -74,5 +74,5 @@ Go framework & library support `yaml `_,``gopkg.in/yaml*``,,9, `zap `_,``go.uber.org/zap*``,,11,33 Others,``github.com/kanikanema/gorqlite``,8,2,24 - Totals,,560,1048,1556 + Totals,,641,1048,1556 diff --git a/go/ql/lib/change-notes/2025-03-02-squirrel-source-models.md b/go/ql/lib/change-notes/2025-03-02-squirrel-source-models.md new file mode 100644 index 00000000000..05896168630 --- /dev/null +++ b/go/ql/lib/change-notes/2025-03-02-squirrel-source-models.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* Added `database` source models for the `github.com/Masterminds/squirrel` ORM package. + diff --git a/go/ql/lib/ext/github.com.mastermind.squirrel.model.yml b/go/ql/lib/ext/github.com.masterminds.squirrel.model.yml similarity index 59% rename from go/ql/lib/ext/github.com.mastermind.squirrel.model.yml rename to go/ql/lib/ext/github.com.masterminds.squirrel.model.yml index 6f3c5830e45..3544f0ac3cf 100644 --- a/go/ql/lib/ext/github.com.mastermind.squirrel.model.yml +++ b/go/ql/lib/ext/github.com.masterminds.squirrel.model.yml @@ -6,6 +6,37 @@ extensions: - ["squirrel", "github.com/Masterminds/squirrel"] - ["squirrel", "gopkg.in/Masterminds/squirrel"] - ["squirrel", "github.com/lann/squirrel"] + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["group:squirrel", "", True, "QueryContextWith", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "", True, "QueryRowContextWith", "", "", "ReturnValue", "database", "manual"] + - ["group:squirrel", "", True, "QueryRowWith", "", "", "ReturnValue", "database", "manual"] + - ["group:squirrel", "", True, "QueryWith", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "DeleteBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "DeleteBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "DeleteBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "InsertBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "InsertBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "InsertBuilder", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "InsertBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "QueryRower", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "QueryRowerContext", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "Queryer", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "QueryerContext", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "SelectBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "SelectBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "SelectBuilder", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "SelectBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "StdSql", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "StdSql", True, "QueryRow", "", "", "ReturnValue", "database", "manual"] + - ["group:squirrel", "StdSqlCtx", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "StdSqlCtx", True, "QueryRowContext", "", "", "ReturnValue", "database", "manual"] + - ["group:squirrel", "UpdateBuilder", True, "Query", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "UpdateBuilder", True, "QueryContext", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "UpdateBuilder", True, "QueryRow", "", "", "ReturnValue[0]", "database", "manual"] + - ["group:squirrel", "UpdateBuilder", True, "QueryRowContext", "", "", "ReturnValue[0]", "database", "manual"] - addsTo: pack: codeql/go-all extensible: sinkModel @@ -49,3 +80,5 @@ extensions: - ["group:squirrel", "UpdateBuilder", True, "Suffix", "", "", "Argument[0]", "sql-injection", "manual"] - ["group:squirrel", "UpdateBuilder", True, "Table", "", "", "Argument[0]", "sql-injection", "manual"] # UpdateBuilder.Where has to be modeled in QL to avoid FPs when a non-string argument is used + + # There are summary models for Row.Scan, RowScanner.Scan, {Insert,Delete,Select,Update}Builder.Scan and {Insert,Delete,Select,Update}Builder.ScanContext modeled in QL diff --git a/go/ql/lib/go.qll b/go/ql/lib/go.qll index df725017dc8..51ff4916e16 100644 --- a/go/ql/lib/go.qll +++ b/go/ql/lib/go.qll @@ -57,6 +57,7 @@ import semmle.go.frameworks.Protobuf import semmle.go.frameworks.Revel import semmle.go.frameworks.Spew import semmle.go.frameworks.SQL +import semmle.go.frameworks.Squirrel import semmle.go.frameworks.Stdlib import semmle.go.frameworks.SystemCommandExecutors import semmle.go.frameworks.Testing diff --git a/go/ql/lib/semmle/go/frameworks/Squirrel.qll b/go/ql/lib/semmle/go/frameworks/Squirrel.qll new file mode 100644 index 00000000000..c7d75003cfe --- /dev/null +++ b/go/ql/lib/semmle/go/frameworks/Squirrel.qll @@ -0,0 +1,85 @@ +/** + * Provides classes modeling security-relevant aspects of the `squirrel` ORM package. + */ + +import go + +/** + * Provides classes modeling security-relevant aspects of the `squirrel` ORM package. + */ +module Squirrel { + private string packagePath() { + result = + package([ + "github.com/Masterminds/squirrel", + "github.com/lann/squirrel", + "gopkg.in/Masterminds/squirrel", + ], "") + } + + private class RowScan extends TaintTracking::FunctionModel, Method { + FunctionInput inp; + FunctionOutput outp; + + RowScan() { + // signature: func (r *Row) Scan(dest ...interface{}) error + this.hasQualifiedName(packagePath(), "Row", "Scan") and + inp.isReceiver() and + outp.isParameter(_) + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input = inp and output = outp + } + } + + private class RowScannerScan extends TaintTracking::FunctionModel, Method { + FunctionInput inp; + FunctionOutput outp; + + RowScannerScan() { + // signature: func (rs *RowScanner) Scan(dest ...interface{}) error + this.hasQualifiedName(packagePath(), "RowScanner", "Scan") and + inp.isReceiver() and + outp.isParameter(_) + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input = inp and output = outp + } + } + + private class BuilderScan extends TaintTracking::FunctionModel, Method { + FunctionInput inp; + FunctionOutput outp; + + BuilderScan() { + // signature: func (b {Insert,Delete,Select,Update}Builder) Scan(dest ...interface{}) error + this.hasQualifiedName(packagePath(), + ["DeleteBuilder", "InsertBuilder", "SelectBuilder", "UpdateBuilder"], "Scan") and + inp.isReceiver() and + outp.isParameter(_) + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input = inp and output = outp + } + } + + private class BuilderScanContext extends TaintTracking::FunctionModel, Method { + FunctionInput inp; + FunctionOutput outp; + + BuilderScanContext() { + // signature: func (b {Insert,Delete,Select,Update}Builder) ScanContext(ctx context.Context, dest ...interface{}) error + this.hasQualifiedName(packagePath(), + ["DeleteBuilder", "InsertBuilder", "SelectBuilder", "UpdateBuilder"], "ScanContext") and + inp.isReceiver() and + exists(int i | i > 0 | outp.isParameter(i)) + } + + override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { + input = inp and output = outp + } + } +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/go.mod b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/go.mod index 9a16d637f9b..560bcd759c3 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/go.mod +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/go.mod @@ -8,9 +8,11 @@ require ( github.com/couchbase/gocb v1.6.7 github.com/couchbase/gocb/v2 v2.9.4 github.com/jmoiron/sqlx v1.4.0 + github.com/Masterminds/squirrel v1.5.4 github.com/rqlite/gorqlite v0.0.0-20250128004930-114c7828b55a go.mongodb.org/mongo-driver v1.17.3 gorm.io/gorm v1.25.12 + github.com/nonexistent/sources v0.0.0-20250300000000-000000000000 ) require ( diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/source.ext.yml b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/source.ext.yml index 853b9e9a719..5e7e11e1b31 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/source.ext.yml +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/source.ext.yml @@ -3,4 +3,9 @@ extensions: pack: codeql/threat-models extensible: threatModelConfiguration data: - - ["database", true, 0] \ No newline at end of file + - ["database", true, 0] + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["github.com/nonexistent/sources", "", False, "Source", "", "", "ReturnValue", "database", "manual"] \ No newline at end of file diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/test.ext.yml b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/test.ext.yml index 00f4b3659c3..45623fd20ad 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/test.ext.yml +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/test.ext.yml @@ -5,3 +5,9 @@ extensions: extensible: threatModelConfiguration data: - ["database", true, 0] + + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["github.com/nonexistent/sources", "", False, "Source", "", "", "ReturnValue", "database", "manual"] \ No newline at end of file diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/test_Masterminds_squirrel.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/test_Masterminds_squirrel.go new file mode 100644 index 00000000000..cc1418e884c --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/test_Masterminds_squirrel.go @@ -0,0 +1,291 @@ +package test + +//go:generate depstubber -vendor github.com/Masterminds/squirrel DeleteBuilder,InsertBuilder,QueryRower,QueryRowerContext,Queryer,QueryerContext,SelectBuilder,StdSql,StdSqlCtx,UpdateBuilder QueryContextWith,QueryRowContextWith,QueryRowWith,QueryWith + +import ( + "context" + + "github.com/Masterminds/squirrel" + src "github.com/nonexistent/sources" +) + +func test_Masterminds_squirrel_QueryRower(ctx context.Context, db squirrel.QueryRower, sqlizer squirrel.Sqlizer) { + scanner := db.QueryRow("") // $ source + + var r1, r2, r3 string + scanner.Scan(&r1, &r2, &r3) + + sink(r1) // $ hasTaintFlow="r1" + sink(r2) // $ hasTaintFlow="r2" + sink(r3) // $ hasTaintFlow="r3" + + scanner2 := squirrel.QueryRowWith(db, sqlizer) // $ source + + var r4, r5, r6 string + scanner2.Scan(&r4, &r5, &r6) + + sink(r4) // $ hasTaintFlow="r4" + sink(r5) // $ hasTaintFlow="r5" + sink(r6) // $ hasTaintFlow="r6" +} + +func test_Masterminds_squirrel_QueryRowerContext(ctx context.Context, db squirrel.QueryRowerContext, sqlizer squirrel.Sqlizer) { + scanner := db.QueryRowContext(ctx, "") // $ source + + var r1, r2, r3 string + scanner.Scan(&r1, &r2, &r3) + + sink(r1) // $ hasTaintFlow="r1" + sink(r2) // $ hasTaintFlow="r2" + sink(r3) // $ hasTaintFlow="r3" + + scanner2 := squirrel.QueryRowContextWith(ctx, db, sqlizer) // $ source + + var r4, r5, r6 string + scanner2.Scan(&r4, &r5, &r6) + + sink(r4) // $ hasTaintFlow="r4" + sink(r5) // $ hasTaintFlow="r5" + sink(r6) // $ hasTaintFlow="r6" +} + +func test_Masterminds_squirrel_Queryer(ctx context.Context, db squirrel.Queryer, sqlizer squirrel.Sqlizer) { + v1, err := db.Query("") // $ source + if err != nil { + return + } + sink(v1) // $ hasTaintFlow="v1" + + v2, err := squirrel.QueryWith(db, sqlizer) // $ source + if err != nil { + return + } + sink(v2) // $ hasTaintFlow="v2" +} + +func test_Masterminds_squirrel_QueryerContext(ctx context.Context, db squirrel.QueryerContext, sqlizer squirrel.Sqlizer) { + v1, err := db.QueryContext(ctx, "") // $ source + if err != nil { + return + } + sink(v1) // $ hasTaintFlow="v1" + + v2, err := squirrel.QueryContextWith(ctx, db, sqlizer) // $ source + if err != nil { + return + } + sink(v2) // $ hasTaintFlow="v2" +} + +// StdSqlCtx extends StdSql so we can test both with a StdSqlCtx +func test_Masterminds_squirrel_StdSql_StdSqlCtx(ctx context.Context, std squirrel.StdSqlCtx) { + v1, err := std.Query("") // $ source + if err != nil { + return + } + sink(v1) // $ hasTaintFlow="v1" + + v2, err := std.QueryContext(ctx, "") // $ source + if err != nil { + return + } + + sink(v2) // $ hasTaintFlow="v2" + + s3 := std.QueryRow("") // $ source + + if err != nil { + return + } + var r31, r32, r33 string + s3.Scan(&r31, &r32, &r33) + + sink(r31) // $ hasTaintFlow="r31" + sink(r32) // $ hasTaintFlow="r32" + sink(r33) // $ hasTaintFlow="r33" + + s4 := std.QueryRowContext(ctx, "") // $ source + + var r41, r42, r43 string + s4.Scan(&r41, &r42, &r43) + + sink(r41) // $ hasTaintFlow="r41" + sink(r42) // $ hasTaintFlow="r42" + sink(r43) // $ hasTaintFlow="r43" +} + +func test_Masterminds_squirrel_DeleteBuilder(ctx context.Context, builder squirrel.DeleteBuilder) { + v1, err := builder.Query() // $ source + if err != nil { + return + } + sink(v1) // $ hasTaintFlow="v1" + + v2, err := builder.QueryContext(ctx) // $ source + if err != nil { + return + } + sink(v2) // $ hasTaintFlow="v2" + + s3 := builder.QueryRowContext(ctx) // $ source + + var r31, r32, r33 string + s3.Scan(&r31, &r32, &r33) + + sink(r31) // $ hasTaintFlow="r31" + sink(r32) // $ hasTaintFlow="r32" + sink(r33) // $ hasTaintFlow="r33" + + builder2 := src.Source[squirrel.DeleteBuilder]() // $ source + + var r41, r42, r43 string + builder2.ScanContext(ctx, &r41, &r42, &r43) + + sink(r41) // $ hasTaintFlow="r41" + sink(r42) // $ hasTaintFlow="r42" + sink(r43) // $ hasTaintFlow="r43" +} + +func test_Masterminds_squirrel_InsertBuilder(ctx context.Context, builder squirrel.InsertBuilder) { + v1, err := builder.Query() // $ source + if err != nil { + return + } + sink(v1) // $ hasTaintFlow="v1" + + v2, err := builder.QueryContext(ctx) // $ source + if err != nil { + return + } + sink(v2) // $ hasTaintFlow="v2" + + s3 := builder.QueryRow() // $ source + + var r31, r32, r33 string + s3.Scan(&r31, &r32, &r33) + + sink(r31) // $ hasTaintFlow="r31" + sink(r32) // $ hasTaintFlow="r32" + sink(r33) // $ hasTaintFlow="r33" + + s4 := builder.QueryRowContext(ctx) // $ source + + var r41, r42, r43 string + s4.Scan(&r41, &r42, &r43) + + sink(r41) // $ hasTaintFlow="r41" + sink(r42) // $ hasTaintFlow="r42" + sink(r43) // $ hasTaintFlow="r43" + + builder2 := src.Source[squirrel.InsertBuilder]() // $ source + + var r51, r52, r53 string + builder2.Scan(&r51, &r52, &r53) + + sink(r51) // $ hasTaintFlow="r51" + sink(r52) // $ hasTaintFlow="r52" + sink(r53) // $ hasTaintFlow="r53" + + var r61, r62, r63 string + builder2.ScanContext(ctx, &r61, &r62, &r63) + + sink(r61) // $ hasTaintFlow="r61" + sink(r62) // $ hasTaintFlow="r62" + sink(r63) // $ hasTaintFlow="r63" +} + +func test_Masterminds_squirrel_SelectBuilder(ctx context.Context, builder squirrel.SelectBuilder) { + v1, err := builder.Query() // $ source + if err != nil { + return + } + sink(v1) // $ hasTaintFlow="v1" + + v2, err := builder.QueryContext(ctx) // $ source + if err != nil { + return + } + sink(v2) // $ hasTaintFlow="v2" + + s3 := builder.QueryRow() // $ source + + var r31, r32, r33 string + s3.Scan(&r31, &r32, &r33) + + sink(r31) // $ hasTaintFlow="r31" + sink(r32) // $ hasTaintFlow="r32" + sink(r33) // $ hasTaintFlow="r33" + + s4 := builder.QueryRowContext(ctx) // $ source + + var r41, r42, r43 string + s4.Scan(&r41, &r42, &r43) + + sink(r41) // $ hasTaintFlow="r41" + sink(r42) // $ hasTaintFlow="r42" + sink(r43) // $ hasTaintFlow="r43" + + builder2 := src.Source[squirrel.SelectBuilder]() // $ source + + var r51, r52, r53 string + builder2.Scan(&r51, &r52, &r53) + + sink(r51) // $ hasTaintFlow="r51" + sink(r52) // $ hasTaintFlow="r52" + sink(r53) // $ hasTaintFlow="r53" + + var r61, r62, r63 string + builder2.ScanContext(ctx, &r61, &r62, &r63) + + sink(r61) // $ hasTaintFlow="r61" + sink(r62) // $ hasTaintFlow="r62" + sink(r63) // $ hasTaintFlow="r63" +} + +func test_Masterminds_squirrel_UpdateBuilder(ctx context.Context, builder squirrel.UpdateBuilder) { + v1, err := builder.Query() // $ source + if err != nil { + return + } + sink(v1) // $ hasTaintFlow="v1" + + v2, err := builder.QueryContext(ctx) // $ source + if err != nil { + return + } + sink(v2) // $ hasTaintFlow="v2" + + s3 := builder.QueryRow() // $ source + + var r31, r32, r33 string + s3.Scan(&r31, &r32, &r33) + + sink(r31) // $ hasTaintFlow="r31" + sink(r32) // $ hasTaintFlow="r32" + sink(r33) // $ hasTaintFlow="r33" + + s4 := builder.QueryRowContext(ctx) // $ source + + var r41, r42, r43 string + s4.Scan(&r41, &r42, &r43) + + sink(r41) // $ hasTaintFlow="r41" + sink(r42) // $ hasTaintFlow="r42" + sink(r43) // $ hasTaintFlow="r43" + + builder2 := src.Source[squirrel.UpdateBuilder]() // $ source + + var r51, r52, r53 string + builder2.Scan(&r51, &r52, &r53) + + sink(r51) // $ hasTaintFlow="r51" + sink(r52) // $ hasTaintFlow="r52" + sink(r53) // $ hasTaintFlow="r53" + + var r61, r62, r63 string + builder2.ScanContext(ctx, &r61, &r62, &r63) + + sink(r61) // $ hasTaintFlow="r61" + sink(r62) // $ hasTaintFlow="r62" + sink(r63) // $ hasTaintFlow="r63" +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/github.com/Masterminds/squirrel/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/github.com/Masterminds/squirrel/stub.go new file mode 100644 index 00000000000..5b77477bb68 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/github.com/Masterminds/squirrel/stub.go @@ -0,0 +1,501 @@ +// Code generated by depstubber. DO NOT EDIT. +// This is a simple stub for github.com/Masterminds/squirrel, strictly for use in testing. + +// See the LICENSE file for information about the licensing of the original library. +// Source: github.com/Masterminds/squirrel (exports: DeleteBuilder,InsertBuilder,QueryRower,QueryRowerContext,Queryer,QueryerContext,SelectBuilder,StdSql,StdSqlCtx,UpdateBuilder; functions: QueryContextWith,QueryRowContextWith,QueryRowWith,QueryWith) + +// Package squirrel is a stub of github.com/Masterminds/squirrel, generated by depstubber. +package squirrel + +import ( + context "context" + sql "database/sql" +) + +type BaseRunner interface { + Exec(_ string, _ ...interface{}) (sql.Result, error) + Query(_ string, _ ...interface{}) (*sql.Rows, error) +} + +type DeleteBuilder struct{} + +func (_ DeleteBuilder) Exec() (sql.Result, error) { + return nil, nil +} + +func (_ DeleteBuilder) ExecContext(_ context.Context) (sql.Result, error) { + return nil, nil +} + +func (_ DeleteBuilder) From(_ string) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) Limit(_ uint64) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) MustSql() (string, []interface{}) { + return "", nil +} + +func (_ DeleteBuilder) Offset(_ uint64) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) OrderBy(_ ...string) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) PlaceholderFormat(_ PlaceholderFormat) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) Prefix(_ string, _ ...interface{}) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) PrefixExpr(_ Sqlizer) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) Query() (*sql.Rows, error) { + return nil, nil +} + +func (_ DeleteBuilder) QueryContext(_ context.Context) (*sql.Rows, error) { + return nil, nil +} + +func (_ DeleteBuilder) QueryRowContext(_ context.Context) RowScanner { + return nil +} + +func (_ DeleteBuilder) RunWith(_ BaseRunner) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) ScanContext(_ context.Context, _ ...interface{}) error { + return nil +} + +func (_ DeleteBuilder) Suffix(_ string, _ ...interface{}) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) SuffixExpr(_ Sqlizer) DeleteBuilder { + return DeleteBuilder{} +} + +func (_ DeleteBuilder) ToSql() (string, []interface{}, error) { + return "", nil, nil +} + +func (_ DeleteBuilder) Where(_ interface{}, _ ...interface{}) DeleteBuilder { + return DeleteBuilder{} +} + +type InsertBuilder struct{} + +func (_ InsertBuilder) Columns(_ ...string) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) Exec() (sql.Result, error) { + return nil, nil +} + +func (_ InsertBuilder) ExecContext(_ context.Context) (sql.Result, error) { + return nil, nil +} + +func (_ InsertBuilder) Into(_ string) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) MustSql() (string, []interface{}) { + return "", nil +} + +func (_ InsertBuilder) Options(_ ...string) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) PlaceholderFormat(_ PlaceholderFormat) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) Prefix(_ string, _ ...interface{}) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) PrefixExpr(_ Sqlizer) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) Query() (*sql.Rows, error) { + return nil, nil +} + +func (_ InsertBuilder) QueryContext(_ context.Context) (*sql.Rows, error) { + return nil, nil +} + +func (_ InsertBuilder) QueryRow() RowScanner { + return nil +} + +func (_ InsertBuilder) QueryRowContext(_ context.Context) RowScanner { + return nil +} + +func (_ InsertBuilder) RunWith(_ BaseRunner) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) Scan(_ ...interface{}) error { + return nil +} + +func (_ InsertBuilder) ScanContext(_ context.Context, _ ...interface{}) error { + return nil +} + +func (_ InsertBuilder) Select(_ SelectBuilder) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) SetMap(_ map[string]interface{}) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) Suffix(_ string, _ ...interface{}) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) SuffixExpr(_ Sqlizer) InsertBuilder { + return InsertBuilder{} +} + +func (_ InsertBuilder) ToSql() (string, []interface{}, error) { + return "", nil, nil +} + +func (_ InsertBuilder) Values(_ ...interface{}) InsertBuilder { + return InsertBuilder{} +} + +type PlaceholderFormat interface { + ReplacePlaceholders(_ string) (string, error) +} + +func QueryContextWith(_ context.Context, _ QueryerContext, _ Sqlizer) (*sql.Rows, error) { + return nil, nil +} + +func QueryRowContextWith(_ context.Context, _ QueryRowerContext, _ Sqlizer) RowScanner { + return nil +} + +func QueryRowWith(_ QueryRower, _ Sqlizer) RowScanner { + return nil +} + +type QueryRower interface { + QueryRow(_ string, _ ...interface{}) RowScanner +} + +type QueryRowerContext interface { + QueryRowContext(_ context.Context, _ string, _ ...interface{}) RowScanner +} + +func QueryWith(_ Queryer, _ Sqlizer) (*sql.Rows, error) { + return nil, nil +} + +type Queryer interface { + Query(_ string, _ ...interface{}) (*sql.Rows, error) +} + +type QueryerContext interface { + QueryContext(_ context.Context, _ string, _ ...interface{}) (*sql.Rows, error) +} + +type RowScanner interface { + Scan(_ ...interface{}) error +} + +type SelectBuilder struct{} + +func (_ SelectBuilder) Column(_ interface{}, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Columns(_ ...string) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) CrossJoin(_ string, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Distinct() SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Exec() (sql.Result, error) { + return nil, nil +} + +func (_ SelectBuilder) ExecContext(_ context.Context) (sql.Result, error) { + return nil, nil +} + +func (_ SelectBuilder) From(_ string) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) FromSelect(_ SelectBuilder, _ string) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) GroupBy(_ ...string) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Having(_ interface{}, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) InnerJoin(_ string, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Join(_ string, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) JoinClause(_ interface{}, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) LeftJoin(_ string, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Limit(_ uint64) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) MustSql() (string, []interface{}) { + return "", nil +} + +func (_ SelectBuilder) Offset(_ uint64) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Options(_ ...string) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) OrderBy(_ ...string) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) OrderByClause(_ interface{}, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) PlaceholderFormat(_ PlaceholderFormat) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Prefix(_ string, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) PrefixExpr(_ Sqlizer) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Query() (*sql.Rows, error) { + return nil, nil +} + +func (_ SelectBuilder) QueryContext(_ context.Context) (*sql.Rows, error) { + return nil, nil +} + +func (_ SelectBuilder) QueryRow() RowScanner { + return nil +} + +func (_ SelectBuilder) QueryRowContext(_ context.Context) RowScanner { + return nil +} + +func (_ SelectBuilder) RemoveColumns() SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) RemoveLimit() SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) RemoveOffset() SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) RightJoin(_ string, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) RunWith(_ BaseRunner) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) Scan(_ ...interface{}) error { + return nil +} + +func (_ SelectBuilder) ScanContext(_ context.Context, _ ...interface{}) error { + return nil +} + +func (_ SelectBuilder) Suffix(_ string, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) SuffixExpr(_ Sqlizer) SelectBuilder { + return SelectBuilder{} +} + +func (_ SelectBuilder) ToSql() (string, []interface{}, error) { + return "", nil, nil +} + +func (_ SelectBuilder) Where(_ interface{}, _ ...interface{}) SelectBuilder { + return SelectBuilder{} +} + +type Sqlizer interface { + ToSql() (string, []interface{}, error) +} + +type StdSql interface { + Exec(_ string, _ ...interface{}) (sql.Result, error) + Query(_ string, _ ...interface{}) (*sql.Rows, error) + QueryRow(_ string, _ ...interface{}) *sql.Row +} + +type StdSqlCtx interface { + Exec(_ string, _ ...interface{}) (sql.Result, error) + ExecContext(_ context.Context, _ string, _ ...interface{}) (sql.Result, error) + Query(_ string, _ ...interface{}) (*sql.Rows, error) + QueryContext(_ context.Context, _ string, _ ...interface{}) (*sql.Rows, error) + QueryRow(_ string, _ ...interface{}) *sql.Row + QueryRowContext(_ context.Context, _ string, _ ...interface{}) *sql.Row +} + +type UpdateBuilder struct{} + +func (_ UpdateBuilder) Exec() (sql.Result, error) { + return nil, nil +} + +func (_ UpdateBuilder) ExecContext(_ context.Context) (sql.Result, error) { + return nil, nil +} + +func (_ UpdateBuilder) From(_ string) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) FromSelect(_ SelectBuilder, _ string) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) Limit(_ uint64) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) MustSql() (string, []interface{}) { + return "", nil +} + +func (_ UpdateBuilder) Offset(_ uint64) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) OrderBy(_ ...string) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) PlaceholderFormat(_ PlaceholderFormat) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) Prefix(_ string, _ ...interface{}) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) PrefixExpr(_ Sqlizer) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) Query() (*sql.Rows, error) { + return nil, nil +} + +func (_ UpdateBuilder) QueryContext(_ context.Context) (*sql.Rows, error) { + return nil, nil +} + +func (_ UpdateBuilder) QueryRow() RowScanner { + return nil +} + +func (_ UpdateBuilder) QueryRowContext(_ context.Context) RowScanner { + return nil +} + +func (_ UpdateBuilder) RunWith(_ BaseRunner) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) Scan(_ ...interface{}) error { + return nil +} + +func (_ UpdateBuilder) ScanContext(_ context.Context, _ ...interface{}) error { + return nil +} + +func (_ UpdateBuilder) Set(_ string, _ interface{}) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) SetMap(_ map[string]interface{}) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) Suffix(_ string, _ ...interface{}) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) SuffixExpr(_ Sqlizer) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) Table(_ string) UpdateBuilder { + return UpdateBuilder{} +} + +func (_ UpdateBuilder) ToSql() (string, []interface{}, error) { + return "", nil, nil +} + +func (_ UpdateBuilder) Where(_ interface{}, _ ...interface{}) UpdateBuilder { + return UpdateBuilder{} +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/github.com/nonexistent/sources/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/github.com/nonexistent/sources/stub.go new file mode 100644 index 00000000000..afc57a3900d --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/github.com/nonexistent/sources/stub.go @@ -0,0 +1,5 @@ +package sources + +func Source[T any]() T { + return *new(T) +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/modules.txt b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/modules.txt index 874a14a5288..01fbca5130d 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/modules.txt +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/database/vendor/modules.txt @@ -13,6 +13,9 @@ github.com/couchbase/gocb/v2 # github.com/jmoiron/sqlx v1.4.0 ## explicit github.com/jmoiron/sqlx +# github.com/Masterminds/squirrel v1.5.4 +## explicit +github.com/Masterminds/squirrel # github.com/rqlite/gorqlite v0.0.0-20250128004930-114c7828b55a ## explicit github.com/rqlite/gorqlite @@ -22,6 +25,9 @@ go.mongodb.org/mongo-driver/mongo # gorm.io/gorm v1.25.12 ## explicit gorm.io/gorm +# github.com/nonexistent/sources v0.0.0-20250300000000-000000000000 +## explicit +github.com/nonexistent/sources # github.com/couchbase/gocbcore/v10 v10.5.4 ## explicit github.com/couchbase/gocbcore/v10 diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll index 2803445f48e..573f1cb51ea 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/SsaImpl.qll @@ -680,10 +680,17 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu } } + /** Holds if the guard `guard` directly controls block `bb` upon evaluating to `branch`. */ + predicate guardDirectlyControlsBlock(Guard guard, BasicBlock bb, boolean branch) { + guard.directlyControls(bb, branch) + } + /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */ predicate guardControlsBlock(Guard guard, BasicBlock bb, boolean branch) { guard.controls(bb, branch) } + + predicate includeWriteDefsInFlowStep() { none() } } private module DataFlowIntegrationImpl = Impl::DataFlowIntegration; diff --git a/java/ql/test/library-tests/dataflow/capture/test.expected b/java/ql/test/library-tests/dataflow/capture/test.expected index a98b4990228..1e8a2d7d334 100644 --- a/java/ql/test/library-tests/dataflow/capture/test.expected +++ b/java/ql/test/library-tests/dataflow/capture/test.expected @@ -1,10 +1,7 @@ -| A.java:14:14:14:16 | "A" : String | A.java:14:7:14:20 | SSA def(a) : new A(...) { ... } [p] | | A.java:14:14:14:16 | "A" : String | A.java:14:11:14:20 | f2(...) : new A(...) { ... } [p] | | A.java:14:14:14:16 | "A" : String | A.java:15:16:15:16 | a : new A(...) { ... } [p] | | A.java:14:14:14:16 | "A" : String | A.java:15:16:15:22 | get(...) : String | | A.java:14:14:14:16 | "A" : String | A.java:18:8:18:15 | p : String | -| A.java:14:14:14:16 | "A" : String | A.java:18:25:40:3 | SSA def(p) : String | -| A.java:14:14:14:16 | "A" : String | A.java:28:7:38:5 | SSA def(a) : new A(...) { ... } [p] | | A.java:14:14:14:16 | "A" : String | A.java:28:11:38:5 | new (...) : new A(...) { ... } [p] | | A.java:14:14:14:16 | "A" : String | A.java:28:11:38:5 | p : String | | A.java:14:14:14:16 | "A" : String | A.java:30:14:30:16 | parameter this : new A(...) { ... } [p] | @@ -16,16 +13,12 @@ | A.java:14:14:14:16 | "A" : String | A.java:35:26:35:27 | this : new A(...) { ... } [p] | | A.java:14:14:14:16 | "A" : String | A.java:39:12:39:12 | a : new A(...) { ... } [p] | | A.java:14:14:14:16 | "A" : String | A.java:39:12:39:12 | p : String | -| A.java:21:11:21:13 | "B" : String | A.java:14:7:14:20 | SSA def(a) : new A(...) { ... } [String s] | | A.java:21:11:21:13 | "B" : String | A.java:14:11:14:20 | f2(...) : new A(...) { ... } [String s] | | A.java:21:11:21:13 | "B" : String | A.java:15:16:15:16 | a : new A(...) { ... } [String s] | | A.java:21:11:21:13 | "B" : String | A.java:15:16:15:22 | get(...) : String | | A.java:21:11:21:13 | "B" : String | A.java:21:7:21:13 | ...=... : String | -| A.java:21:11:21:13 | "B" : String | A.java:21:7:21:13 | SSA def(s) : String | -| A.java:21:11:21:13 | "B" : String | A.java:21:7:21:13 | [input] SSA phi(s) : String | | A.java:21:11:21:13 | "B" : String | A.java:25:5:25:26 | SSA phi(s) : String | | A.java:21:11:21:13 | "B" : String | A.java:25:5:25:26 | phi(String s) : String | -| A.java:21:11:21:13 | "B" : String | A.java:28:7:38:5 | SSA def(a) : new A(...) { ... } [String s] | | A.java:21:11:21:13 | "B" : String | A.java:28:11:38:5 | String s : String | | A.java:21:11:21:13 | "B" : String | A.java:28:11:38:5 | new (...) : new A(...) { ... } [String s] | | A.java:21:11:21:13 | "B" : String | A.java:30:14:30:16 | parameter this : new A(...) { ... } [String s] | @@ -37,16 +30,12 @@ | A.java:21:11:21:13 | "B" : String | A.java:35:26:35:27 | this : new A(...) { ... } [String s] | | A.java:21:11:21:13 | "B" : String | A.java:39:12:39:12 | String s : String | | A.java:21:11:21:13 | "B" : String | A.java:39:12:39:12 | a : new A(...) { ... } [String s] | -| A.java:23:11:23:13 | "C" : String | A.java:14:7:14:20 | SSA def(a) : new A(...) { ... } [String s] | | A.java:23:11:23:13 | "C" : String | A.java:14:11:14:20 | f2(...) : new A(...) { ... } [String s] | | A.java:23:11:23:13 | "C" : String | A.java:15:16:15:16 | a : new A(...) { ... } [String s] | | A.java:23:11:23:13 | "C" : String | A.java:15:16:15:22 | get(...) : String | | A.java:23:11:23:13 | "C" : String | A.java:23:7:23:13 | ...=... : String | -| A.java:23:11:23:13 | "C" : String | A.java:23:7:23:13 | SSA def(s) : String | -| A.java:23:11:23:13 | "C" : String | A.java:23:7:23:13 | [input] SSA phi(s) : String | | A.java:23:11:23:13 | "C" : String | A.java:25:5:25:26 | SSA phi(s) : String | | A.java:23:11:23:13 | "C" : String | A.java:25:5:25:26 | phi(String s) : String | -| A.java:23:11:23:13 | "C" : String | A.java:28:7:38:5 | SSA def(a) : new A(...) { ... } [String s] | | A.java:23:11:23:13 | "C" : String | A.java:28:11:38:5 | String s : String | | A.java:23:11:23:13 | "C" : String | A.java:28:11:38:5 | new (...) : new A(...) { ... } [String s] | | A.java:23:11:23:13 | "C" : String | A.java:30:14:30:16 | parameter this : new A(...) { ... } [String s] | @@ -60,20 +49,16 @@ | A.java:23:11:23:13 | "C" : String | A.java:39:12:39:12 | a : new A(...) { ... } [String s] | | A.java:25:22:25:24 | "D" : String | A.java:4:5:4:7 | parameter this [Return] : Box [elem] | | A.java:25:22:25:24 | "D" : String | A.java:4:9:4:16 | e : String | -| A.java:25:22:25:24 | "D" : String | A.java:4:19:4:31 | SSA def(e) : String | | A.java:25:22:25:24 | "D" : String | A.java:4:21:4:24 | this <.field> [post update] : Box [elem] | | A.java:25:22:25:24 | "D" : String | A.java:4:21:4:28 | ...=... : String | | A.java:25:22:25:24 | "D" : String | A.java:4:28:4:28 | e : String | | A.java:25:22:25:24 | "D" : String | A.java:6:12:6:18 | parameter this : Box [elem] | | A.java:25:22:25:24 | "D" : String | A.java:6:31:6:34 | elem : String | | A.java:25:22:25:24 | "D" : String | A.java:6:31:6:34 | this <.field> : Box [elem] | -| A.java:25:22:25:24 | "D" : String | A.java:14:7:14:20 | SSA def(a) : new A(...) { ... } [Box b1, ... (2)] | | A.java:25:22:25:24 | "D" : String | A.java:14:11:14:20 | f2(...) : new A(...) { ... } [Box b1, ... (2)] | | A.java:25:22:25:24 | "D" : String | A.java:15:16:15:16 | a : new A(...) { ... } [Box b1, ... (2)] | | A.java:25:22:25:24 | "D" : String | A.java:15:16:15:22 | get(...) : String | -| A.java:25:22:25:24 | "D" : String | A.java:25:9:25:25 | SSA def(b1) : Box [elem] | | A.java:25:22:25:24 | "D" : String | A.java:25:14:25:25 | new Box(...) : Box [elem] | -| A.java:25:22:25:24 | "D" : String | A.java:28:7:38:5 | SSA def(a) : new A(...) { ... } [Box b1, ... (2)] | | A.java:25:22:25:24 | "D" : String | A.java:28:11:38:5 | Box b1 : Box [elem] | | A.java:25:22:25:24 | "D" : String | A.java:28:11:38:5 | new (...) : new A(...) { ... } [Box b1, ... (2)] | | A.java:25:22:25:24 | "D" : String | A.java:30:14:30:16 | parameter this : new A(...) { ... } [Box b1, ... (2)] | @@ -88,19 +73,16 @@ | A.java:25:22:25:24 | "D" : String | A.java:39:12:39:12 | a : new A(...) { ... } [Box b1, ... (2)] | | A.java:27:16:27:18 | "E" : String | A.java:5:10:5:16 | parameter this [Return] : Box [elem] | | A.java:27:16:27:18 | "E" : String | A.java:5:18:5:25 | e : String | -| A.java:27:16:27:18 | "E" : String | A.java:5:28:5:40 | SSA def(e) : String | | A.java:27:16:27:18 | "E" : String | A.java:5:30:5:33 | this <.field> [post update] : Box [elem] | | A.java:27:16:27:18 | "E" : String | A.java:5:30:5:37 | ...=... : String | | A.java:27:16:27:18 | "E" : String | A.java:5:37:5:37 | e : String | | A.java:27:16:27:18 | "E" : String | A.java:6:12:6:18 | parameter this : Box [elem] | | A.java:27:16:27:18 | "E" : String | A.java:6:31:6:34 | elem : String | | A.java:27:16:27:18 | "E" : String | A.java:6:31:6:34 | this <.field> : Box [elem] | -| A.java:27:16:27:18 | "E" : String | A.java:14:7:14:20 | SSA def(a) : new A(...) { ... } [Box b2, ... (2)] | | A.java:27:16:27:18 | "E" : String | A.java:14:11:14:20 | f2(...) : new A(...) { ... } [Box b2, ... (2)] | | A.java:27:16:27:18 | "E" : String | A.java:15:16:15:16 | a : new A(...) { ... } [Box b2, ... (2)] | | A.java:27:16:27:18 | "E" : String | A.java:15:16:15:22 | get(...) : String | | A.java:27:16:27:18 | "E" : String | A.java:27:5:27:6 | b2 [post update] : Box [elem] | -| A.java:27:16:27:18 | "E" : String | A.java:28:7:38:5 | SSA def(a) : new A(...) { ... } [Box b2, ... (2)] | | A.java:27:16:27:18 | "E" : String | A.java:28:11:38:5 | Box b2 : Box [elem] | | A.java:27:16:27:18 | "E" : String | A.java:28:11:38:5 | new (...) : new A(...) { ... } [Box b2, ... (2)] | | A.java:27:16:27:18 | "E" : String | A.java:30:14:30:16 | parameter this : new A(...) { ... } [Box b2, ... (2)] | diff --git a/java/ql/test/library-tests/dataflow/null/testnullflow.expected b/java/ql/test/library-tests/dataflow/null/testnullflow.expected index d73b00f0fef..532d64e81f8 100644 --- a/java/ql/test/library-tests/dataflow/null/testnullflow.expected +++ b/java/ql/test/library-tests/dataflow/null/testnullflow.expected @@ -1,6 +1,4 @@ | A.java:5:18:5:21 | null | A.java:2:13:2:20 | o | -| A.java:5:18:5:21 | null | A.java:5:12:5:21 | SSA def(src) | | A.java:5:18:5:21 | null | A.java:5:18:5:21 | null | -| A.java:5:18:5:21 | null | A.java:6:12:6:18 | SSA def(x) | | A.java:5:18:5:21 | null | A.java:6:16:6:18 | src | | A.java:5:18:5:21 | null | A.java:7:10:7:10 | x | diff --git a/java/ql/test/library-tests/dataflow/partial/test.expected b/java/ql/test/library-tests/dataflow/partial/test.expected index 700c1b31dcf..ea7da3a9690 100644 --- a/java/ql/test/library-tests/dataflow/partial/test.expected +++ b/java/ql/test/library-tests/dataflow/partial/test.expected @@ -3,14 +3,12 @@ edges | A.java:12:14:12:18 | src(...) : Object | A.java:12:5:12:5 | b [post update] : Box [elem] | | A.java:12:14:12:18 | src(...) : Object | A.java:12:5:12:18 | ...=... : Object | | A.java:13:12:13:12 | b : Box [elem] | A.java:17:13:17:16 | f1(...) : Box [elem] | -| A.java:17:9:17:16 | SSA def(b) : Box [elem] | A.java:18:8:18:8 | b : Box [elem] | -| A.java:17:13:17:16 | f1(...) : Box [elem] | A.java:17:9:17:16 | SSA def(b) : Box [elem] | +| A.java:17:13:17:16 | f1(...) : Box [elem] | A.java:18:8:18:8 | b : Box [elem] | | A.java:18:8:18:8 | b : Box [elem] | A.java:21:11:21:15 | b : Box [elem] | #select | 0 | A.java:12:5:12:5 | b [post update] : Box [elem] | | 0 | A.java:12:5:12:18 | ...=... : Object | | 0 | A.java:13:12:13:12 | b : Box [elem] | -| 1 | A.java:17:9:17:16 | SSA def(b) : Box [elem] | | 1 | A.java:17:13:17:16 | f1(...) : Box [elem] | | 1 | A.java:18:8:18:8 | b : Box [elem] | | 2 | A.java:21:11:21:15 | b : Box [elem] | diff --git a/java/ql/test/library-tests/dataflow/partial/testRev.expected b/java/ql/test/library-tests/dataflow/partial/testRev.expected index d798f443480..15ce5d56ace 100644 --- a/java/ql/test/library-tests/dataflow/partial/testRev.expected +++ b/java/ql/test/library-tests/dataflow/partial/testRev.expected @@ -2,8 +2,7 @@ edges | A.java:4:16:4:18 | parameter this [Return] [elem] | A.java:22:17:22:25 | new Box(...) [elem] | | A.java:4:16:4:18 | this [post update] [elem] | A.java:4:16:4:18 | parameter this [Return] [elem] | | A.java:5:19:5:22 | elem | A.java:24:10:24:19 | other.elem | -| A.java:22:9:22:25 | SSA def(other) [elem] | A.java:23:13:23:17 | other [elem] | -| A.java:22:17:22:25 | new Box(...) [elem] | A.java:22:9:22:25 | SSA def(other) [elem] | +| A.java:22:17:22:25 | new Box(...) [elem] | A.java:23:13:23:17 | other [elem] | | A.java:23:13:23:17 | other [elem] | A.java:24:10:24:14 | other [elem] | | A.java:23:13:23:17 | other [post update] [elem] | A.java:24:10:24:14 | other [elem] | | A.java:24:10:24:14 | other [elem] | A.java:24:10:24:19 | other.elem | @@ -11,7 +10,6 @@ edges | A.java:28:5:28:5 | b [post update] [elem] | A.java:27:16:27:20 | b [Return] [elem] | | A.java:28:14:28:25 | new Object(...) | A.java:28:5:28:5 | b [post update] [elem] | #select -| 0 | A.java:22:9:22:25 | SSA def(other) [elem] | | 0 | A.java:22:17:22:25 | new Box(...) [elem] | | 0 | A.java:23:13:23:17 | other [elem] | | 0 | A.java:23:13:23:17 | other [post update] [elem] | diff --git a/java/ql/test/library-tests/dataflow/switchexpr/switchexprflow.expected b/java/ql/test/library-tests/dataflow/switchexpr/switchexprflow.expected index 551c836889d..d444bae3cc7 100644 --- a/java/ql/test/library-tests/dataflow/switchexpr/switchexprflow.expected +++ b/java/ql/test/library-tests/dataflow/switchexpr/switchexprflow.expected @@ -1,13 +1,9 @@ | TestSwitchExpr.java:4:15:4:22 | o | -| TestSwitchExpr.java:7:16:7:28 | SSA def(x1) | | TestSwitchExpr.java:7:21:7:28 | source(...) | -| TestSwitchExpr.java:8:16:8:30 | SSA def(x2) | | TestSwitchExpr.java:8:21:8:30 | switch (...) | | TestSwitchExpr.java:10:24:10:25 | x1 | -| TestSwitchExpr.java:12:16:12:30 | SSA def(x3) | | TestSwitchExpr.java:12:21:12:30 | switch (...) | | TestSwitchExpr.java:13:38:13:39 | x2 | -| TestSwitchExpr.java:16:16:16:30 | SSA def(x4) | | TestSwitchExpr.java:16:21:16:30 | switch (...) | | TestSwitchExpr.java:19:23:19:24 | x3 | | TestSwitchExpr.java:23:14:23:15 | x4 | diff --git a/java/ql/test/library-tests/dataflow/taint-ioutils/dataFlow.expected b/java/ql/test/library-tests/dataflow/taint-ioutils/dataFlow.expected index ffd641a45d7..1902605e618 100644 --- a/java/ql/test/library-tests/dataflow/taint-ioutils/dataFlow.expected +++ b/java/ql/test/library-tests/dataflow/taint-ioutils/dataFlow.expected @@ -1,24 +1,19 @@ -| Test.java:12:15:12:47 | SSA def(inp) | | Test.java:12:21:12:47 | new FileInputStream(...) | | Test.java:14:21:14:39 | buffer(...) | | Test.java:14:36:14:38 | inp | -| Test.java:15:16:15:54 | SSA def(lines) | | Test.java:15:24:15:54 | readLines(...) | | Test.java:15:42:15:44 | inp | | Test.java:16:18:16:45 | readFully(...) | | Test.java:16:36:16:38 | inp | | Test.java:17:22:17:55 | toBufferedInputStream(...) | | Test.java:17:52:17:54 | inp | -| Test.java:18:10:18:71 | SSA def(bufread) | | Test.java:18:20:18:71 | toBufferedReader(...) | | Test.java:18:45:18:70 | new InputStreamReader(...) | | Test.java:18:67:18:69 | inp | | Test.java:19:19:19:48 | toByteArray(...) | | Test.java:19:39:19:41 | inp | -| Test.java:20:10:20:50 | SSA def(chars) | | Test.java:20:18:20:50 | toCharArray(...) | | Test.java:20:38:20:40 | inp | -| Test.java:21:10:21:43 | SSA def(s) | | Test.java:21:14:21:43 | toString(...) | | Test.java:21:31:21:33 | inp | | Test.java:22:20:22:52 | toInputStream(...) | diff --git a/java/ql/test/library-tests/dataflow/this-flow/this-flow.expected b/java/ql/test/library-tests/dataflow/this-flow/this-flow.expected index 5b59c216707..1f28514b664 100644 --- a/java/ql/test/library-tests/dataflow/this-flow/this-flow.expected +++ b/java/ql/test/library-tests/dataflow/this-flow/this-flow.expected @@ -10,13 +10,11 @@ | A.java:20:16:20:16 | this <.field> | | A.java:21:12:21:20 | getThis(...) | | A.java:21:12:21:20 | this <.method> | -| A.java:25:7:25:17 | SSA def(a) | | A.java:25:11:25:17 | new A(...) | | A.java:25:11:25:17 | new A(...) [pre constructor] | | A.java:26:12:26:12 | a | | A.java:26:12:26:22 | getThis(...) | | A.java:26:12:26:36 | getThisWrap(...) | -| A.java:27:7:27:17 | SSA def(c) | | A.java:27:11:27:17 | new C(...) | | A.java:27:11:27:17 | new C(...) [pre constructor] | | A.java:28:5:28:5 | c | diff --git a/javascript/ql/lib/change-notes/2025-03-26-Hapi.md b/javascript/ql/lib/change-notes/2025-03-26-Hapi.md new file mode 100644 index 00000000000..d6d5795570f --- /dev/null +++ b/javascript/ql/lib/change-notes/2025-03-26-Hapi.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added support for the newer version of `Hapi` with the `@hapi/hapi` import and `server` function. diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll index c23032b3483..cb5757ab30d 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll @@ -97,7 +97,7 @@ module SsaDataflowInput implements DataFlowIntegrationInputSig { } pragma[inline] - predicate guardControlsBlock(Guard guard, js::BasicBlock bb, boolean branch) { + predicate guardDirectlyControlsBlock(Guard guard, js::BasicBlock bb, boolean branch) { exists(js::ConditionGuardNode g | g.getTest() = guard and g.dominates(bb) and diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll b/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll index f1936da3a67..a6dbf40d1e0 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Hapi.qll @@ -11,8 +11,8 @@ module Hapi { */ class ServerDefinition extends Http::Servers::StandardServerDefinition, DataFlow::Node { ServerDefinition() { - // `server = new Hapi.Server()` - this = DataFlow::moduleMember("hapi", "Server").getAnInstantiation() + // `server = new Hapi.Server()`, `server = Hapi.server()` + this = DataFlow::moduleMember(["hapi", "@hapi/hapi"], ["Server", "server"]).getAnInvocation() or // `server = Glue.compose(manifest, composeOptions)` this = DataFlow::moduleMember("@hapi/glue", "compose").getAnInvocation() diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll index 29cd5da8da1..1f51af3efda 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll @@ -184,6 +184,20 @@ API::Node getExtraSuccessorFromNode(API::Node node, AccessPathTokenBase token) { or token.getName() = "DecoratedParameter" and result = node.getADecoratedParameter() + or + token.getName() = "GuardedRouteHandler" and + result = getAGuardedRouteHandlerApprox(node) +} + +bindingset[node] +pragma[inline_late] +private API::Node getAGuardedRouteHandlerApprox(API::Node node) { + // For now just get any routing node with the same root (i.e. the same web app), as + // there are some known performance issues when checking if it is actually guarded by the given node. + exists(JS::Routing::Node root | + root = JS::Routing::getNode(node.getAValueReachableFromSource()).getRootNode() and + root = JS::Routing::getNode(result.asSink()).getRootNode() + ) } /** @@ -317,7 +331,7 @@ predicate isExtraValidTokenNameInIdentifyingAccessPath(string name) { [ "Member", "AnyMember", "Instance", "Awaited", "ArrayElement", "Element", "MapValue", "NewCall", "Call", "DecoratedClass", "DecoratedMember", "DecoratedParameter", - "WithStringArgument" + "WithStringArgument", "GuardedRouteHandler" ] } @@ -329,7 +343,7 @@ predicate isExtraValidNoArgumentTokenInIdentifyingAccessPath(string name) { name = [ "AnyMember", "Instance", "Awaited", "ArrayElement", "Element", "MapValue", "NewCall", "Call", - "DecoratedClass", "DecoratedMember", "DecoratedParameter" + "DecoratedClass", "DecoratedMember", "DecoratedParameter", "GuardedRouteHandler" ] } diff --git a/javascript/ql/test/library-tests/frameworks/data/guardedRouteHandler.js b/javascript/ql/test/library-tests/frameworks/data/guardedRouteHandler.js new file mode 100644 index 00000000000..972b8b9f111 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/data/guardedRouteHandler.js @@ -0,0 +1,21 @@ +const express = require('express'); +const app = express(); +const testlib = require('testlib'); + +app.get('/before', (req, res) => { + sink(req.injectedReqData); // OK [INCONSISTENCY] - happens before middleware + sink(req.injectedResData); // OK - wrong parameter + + sink(res.injectedReqData); // OK - wrong parameter + sink(res.injectedResData); // OK [INCONSISTENCY] - happens before middleware +}); + +app.use(testlib.middleware()); + +app.get('/after', (req, res) => { + sink(req.injectedReqData); // NOT OK + sink(req.injectedResData); // OK - wrong parameter + + sink(res.injectedReqData); // OK - wrong parameter + sink(res.injectedResData); // NOT OK +}); diff --git a/javascript/ql/test/library-tests/frameworks/data/test.expected b/javascript/ql/test/library-tests/frameworks/data/test.expected index 6586eaeff15..0bc1b6b6ee0 100644 --- a/javascript/ql/test/library-tests/frameworks/data/test.expected +++ b/javascript/ql/test/library-tests/frameworks/data/test.expected @@ -1,6 +1,10 @@ legacyDataFlowDifference consistencyIssue taintFlow +| guardedRouteHandler.js:6:10:6:28 | req.injectedReqData | guardedRouteHandler.js:6:10:6:28 | req.injectedReqData | +| guardedRouteHandler.js:10:10:10:28 | res.injectedResData | guardedRouteHandler.js:10:10:10:28 | res.injectedResData | +| guardedRouteHandler.js:16:10:16:28 | req.injectedReqData | guardedRouteHandler.js:16:10:16:28 | req.injectedReqData | +| guardedRouteHandler.js:20:10:20:28 | res.injectedResData | guardedRouteHandler.js:20:10:20:28 | res.injectedResData | | paramDecorator.ts:6:54:6:54 | x | paramDecorator.ts:7:10:7:10 | x | | test.js:5:30:5:37 | source() | test.js:5:8:5:38 | testlib ... urce()) | | test.js:6:22:6:29 | source() | test.js:6:8:6:30 | preserv ... urce()) | diff --git a/javascript/ql/test/library-tests/frameworks/data/test.ext.yml b/javascript/ql/test/library-tests/frameworks/data/test.ext.yml index b8e12739746..1ac621936a4 100644 --- a/javascript/ql/test/library-tests/frameworks/data/test.ext.yml +++ b/javascript/ql/test/library-tests/frameworks/data/test.ext.yml @@ -13,6 +13,8 @@ extensions: - ['testlib', 'Member[getSourceArray].ReturnValue.ArrayElement', 'test-source'] - ['(testlib)', 'Member[parenthesizedPackageName].ReturnValue', 'test-source'] - ['danger-constant', 'Member[danger]', 'test-source'] + - ['testlib', 'Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[0].Member[injectedReqData]', 'test-source'] + - ['testlib', 'Member[middleware].ReturnValue.GuardedRouteHandler.Parameter[1].Member[injectedResData]', 'test-source'] - addsTo: pack: codeql/javascript-all diff --git a/javascript/ql/test/library-tests/frameworks/hapi/src/hapihapi.js b/javascript/ql/test/library-tests/frameworks/hapi/src/hapihapi.js new file mode 100644 index 00000000000..45706b7a940 --- /dev/null +++ b/javascript/ql/test/library-tests/frameworks/hapi/src/hapihapi.js @@ -0,0 +1,36 @@ +var server1 = new (require('@hapi/hapi')).Server(); // HTTP::Server + +var Hapi = require('@hapi/hapi'); +var server2 = new Hapi.Server(); // HTTP::Server + +function handler1(){} // HTTP::RouteHandler +server2.route({ + handler: handler1 +}); + + +server2.route({ + handler: function handler2(request, reply){ // HTTP::RouteHandler + request.response.header('HEADER1', '') // HTTP::HeaderDefinition + }}); + +server2.ext('onPreResponse', function handler3(request, reply) { // HTTP::RouteHandler +}) + +function handler4(request, reply){ + request.rawPayload; + request.payload.foo; + request.query.bar; + request.url.path; + request.headers.baz; + request.state.token; +} +var route = {handler: handler4}; +server2.route(route); + +server2.cache({ segment: 'countries', expiresIn: 60*60*1000 }); + +function getHandler() { + return function (req, h){} +} +server2.route({handler: getHandler()}); diff --git a/javascript/ql/test/library-tests/frameworks/hapi/tests.expected b/javascript/ql/test/library-tests/frameworks/hapi/tests.expected index 4c752ee56a8..730bae77bf9 100644 --- a/javascript/ql/test/library-tests/frameworks/hapi/tests.expected +++ b/javascript/ql/test/library-tests/frameworks/hapi/tests.expected @@ -9,6 +9,11 @@ test_RouteSetup | src/hapiglue.js:17:1:18:2 | server2 ... dler\\n}) | | src/hapiglue.js:31:1:31:20 | server2.route(route) | | src/hapiglue.js:38:1:38:38 | server2 ... ler()}) | +| src/hapihapi.js:7:1:9:2 | server2 ... ler1\\n}) | +| src/hapihapi.js:12:1:15:7 | server2 ... }}) | +| src/hapihapi.js:17:1:18:2 | server2 ... dler\\n}) | +| src/hapihapi.js:29:1:29:20 | server2.route(route) | +| src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | test_RequestExpr | src/hapi.js:13:32:13:38 | request | src/hapi.js:13:14:15:5 | functio ... n\\n } | | src/hapi.js:13:32:13:38 | request | src/hapi.js:13:14:15:5 | functio ... n\\n } | @@ -38,12 +43,27 @@ test_RequestExpr | src/hapiglue.js:27:3:27:9 | request | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | | src/hapiglue.js:28:3:28:9 | request | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | | src/hapiglue.js:36:22:36:24 | req | src/hapiglue.js:36:12:36:33 | functio ... hapi){} | +| src/hapihapi.js:13:32:13:38 | request | src/hapihapi.js:13:14:15:5 | functio ... n\\n } | +| src/hapihapi.js:13:32:13:38 | request | src/hapihapi.js:13:14:15:5 | functio ... n\\n } | +| src/hapihapi.js:14:9:14:15 | request | src/hapihapi.js:13:14:15:5 | functio ... n\\n } | +| src/hapihapi.js:17:48:17:54 | request | src/hapihapi.js:17:30:18:1 | functio ... ndler\\n} | +| src/hapihapi.js:20:19:20:25 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:20:19:20:25 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:21:3:21:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:22:3:22:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:23:3:23:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:24:3:24:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:25:3:25:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:26:3:26:9 | request | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:34:22:34:24 | req | src/hapihapi.js:34:12:34:30 | function (req, h){} | test_HeaderAccess | src/hapi.js:25:3:25:21 | request.headers.baz | baz | | src/hapiglue.js:27:3:27:21 | request.headers.baz | baz | +| src/hapihapi.js:25:3:25:21 | request.headers.baz | baz | test_ResponseExpr | src/hapi.js:14:9:14:24 | request.response | src/hapi.js:13:14:15:5 | functio ... n\\n } | | src/hapiglue.js:14:9:14:24 | request.response | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | +| src/hapihapi.js:14:9:14:24 | request.response | src/hapihapi.js:13:14:15:5 | functio ... n\\n } | test_RouteHandler | src/hapi.js:6:1:6:21 | functio ... er1(){} | src/hapi.js:4:15:4:31 | new Hapi.Server() | | src/hapi.js:13:14:15:5 | functio ... n\\n } | src/hapi.js:4:15:4:31 | new Hapi.Server() | @@ -55,9 +75,15 @@ test_RouteHandler | src/hapiglue.js:17:30:18:1 | functio ... ndler\\n} | src/hapiglue.js:4:15:4:69 | new Hap ... ptions) | | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | src/hapiglue.js:4:15:4:69 | new Hap ... ptions) | | src/hapiglue.js:36:12:36:33 | functio ... hapi){} | src/hapiglue.js:4:15:4:69 | new Hap ... ptions) | +| src/hapihapi.js:6:1:6:21 | functio ... er1(){} | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:13:14:15:5 | functio ... n\\n } | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:17:30:18:1 | functio ... ndler\\n} | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:34:12:34:30 | function (req, h){} | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | test_HeaderDefinition | src/hapi.js:14:9:14:46 | request ... 1', '') | src/hapi.js:13:14:15:5 | functio ... n\\n } | | src/hapiglue.js:14:9:14:46 | request ... 1', '') | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | +| src/hapihapi.js:14:9:14:46 | request ... 1', '') | src/hapihapi.js:13:14:15:5 | functio ... n\\n } | test_ServerDefinition | src/hapi.js:1:15:1:44 | new (re ... erver() | | src/hapi.js:4:15:4:31 | new Hapi.Server() | @@ -65,6 +91,8 @@ test_ServerDefinition | src/hapiglue.js:4:15:4:69 | new Hap ... ptions) | | src/hapiglue.js:43:19:43:24 | server | | src/hapiglue.js:44:45:44:51 | server_ | +| src/hapihapi.js:1:15:1:50 | new (re ... erver() | +| src/hapihapi.js:4:15:4:31 | new Hapi.Server() | test_RequestInputAccess | src/hapi.js:21:3:21:20 | request.rawPayload | body | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | | src/hapi.js:22:3:22:21 | request.payload.foo | body | src/hapi.js:20:1:27:1 | functio ... oken;\\n} | @@ -80,6 +108,12 @@ test_RequestInputAccess | src/hapiglue.js:26:3:26:20 | request.url.origin | url | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | | src/hapiglue.js:27:3:27:21 | request.headers.baz | header | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | | src/hapiglue.js:28:3:28:21 | request.state.token | cookie | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | +| src/hapihapi.js:21:3:21:20 | request.rawPayload | body | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:22:3:22:21 | request.payload.foo | body | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:23:3:23:19 | request.query.bar | parameter | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:24:3:24:18 | request.url.path | url | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:25:3:25:21 | request.headers.baz | header | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:26:3:26:21 | request.state.token | cookie | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | test_RouteSetup_getServer | src/hapi.js:7:1:9:2 | server2 ... ler1\\n}) | src/hapi.js:4:15:4:31 | new Hapi.Server() | | src/hapi.js:12:1:15:7 | server2 ... }}) | src/hapi.js:4:15:4:31 | new Hapi.Server() | @@ -91,9 +125,15 @@ test_RouteSetup_getServer | src/hapiglue.js:17:1:18:2 | server2 ... dler\\n}) | src/hapiglue.js:4:15:4:69 | new Hap ... ptions) | | src/hapiglue.js:31:1:31:20 | server2.route(route) | src/hapiglue.js:4:15:4:69 | new Hap ... ptions) | | src/hapiglue.js:38:1:38:38 | server2 ... ler()}) | src/hapiglue.js:4:15:4:69 | new Hap ... ptions) | +| src/hapihapi.js:7:1:9:2 | server2 ... ler1\\n}) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:12:1:15:7 | server2 ... }}) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:17:1:18:2 | server2 ... dler\\n}) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:29:1:29:20 | server2.route(route) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | +| src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:4:15:4:31 | new Hapi.Server() | test_HeaderDefinition_defines | src/hapi.js:14:9:14:46 | request ... 1', '') | header1 | | | src/hapiglue.js:14:9:14:46 | request ... 1', '') | header1 | | +| src/hapihapi.js:14:9:14:46 | request ... 1', '') | header1 | | test_RouteSetup_getARouteHandler | src/hapi.js:7:1:9:2 | server2 ... ler1\\n}) | src/hapi.js:6:1:6:21 | functio ... er1(){} | | src/hapi.js:12:1:15:7 | server2 ... }}) | src/hapi.js:13:14:15:5 | functio ... n\\n } | @@ -109,6 +149,13 @@ test_RouteSetup_getARouteHandler | src/hapiglue.js:38:1:38:38 | server2 ... ler()}) | src/hapiglue.js:35:1:37:1 | return of function getHandler | | src/hapiglue.js:38:1:38:38 | server2 ... ler()}) | src/hapiglue.js:36:12:36:33 | functio ... hapi){} | | src/hapiglue.js:38:1:38:38 | server2 ... ler()}) | src/hapiglue.js:38:25:38:36 | getHandler() | +| src/hapihapi.js:7:1:9:2 | server2 ... ler1\\n}) | src/hapihapi.js:6:1:6:21 | functio ... er1(){} | +| src/hapihapi.js:12:1:15:7 | server2 ... }}) | src/hapihapi.js:13:14:15:5 | functio ... n\\n } | +| src/hapihapi.js:17:1:18:2 | server2 ... dler\\n}) | src/hapihapi.js:17:30:18:1 | functio ... ndler\\n} | +| src/hapihapi.js:29:1:29:20 | server2.route(route) | src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | +| src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:33:1:35:1 | return of function getHandler | +| src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:34:12:34:30 | function (req, h){} | +| src/hapihapi.js:36:1:36:38 | server2 ... ler()}) | src/hapihapi.js:36:25:36:36 | getHandler() | test_RouteHandler_getARequestExpr | src/hapi.js:13:14:15:5 | functio ... n\\n } | src/hapi.js:13:32:13:38 | request | | src/hapi.js:13:14:15:5 | functio ... n\\n } | src/hapi.js:13:32:13:38 | request | @@ -138,9 +185,24 @@ test_RouteHandler_getARequestExpr | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | src/hapiglue.js:27:3:27:9 | request | | src/hapiglue.js:20:1:29:1 | functio ... oken;\\n} | src/hapiglue.js:28:3:28:9 | request | | src/hapiglue.js:36:12:36:33 | functio ... hapi){} | src/hapiglue.js:36:22:36:24 | req | +| src/hapihapi.js:13:14:15:5 | functio ... n\\n } | src/hapihapi.js:13:32:13:38 | request | +| src/hapihapi.js:13:14:15:5 | functio ... n\\n } | src/hapihapi.js:13:32:13:38 | request | +| src/hapihapi.js:13:14:15:5 | functio ... n\\n } | src/hapihapi.js:14:9:14:15 | request | +| src/hapihapi.js:17:30:18:1 | functio ... ndler\\n} | src/hapihapi.js:17:48:17:54 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:20:19:20:25 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:20:19:20:25 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:21:3:21:9 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:22:3:22:9 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:23:3:23:9 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:24:3:24:9 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:25:3:25:9 | request | +| src/hapihapi.js:20:1:27:1 | functio ... oken;\\n} | src/hapihapi.js:26:3:26:9 | request | +| src/hapihapi.js:34:12:34:30 | function (req, h){} | src/hapihapi.js:34:22:34:24 | req | test_HeaderDefinition_getAHeaderName | src/hapi.js:14:9:14:46 | request ... 1', '') | header1 | | src/hapiglue.js:14:9:14:46 | request ... 1', '') | header1 | +| src/hapihapi.js:14:9:14:46 | request ... 1', '') | header1 | test_RouteHandler_getAResponseHeader | src/hapi.js:13:14:15:5 | functio ... n\\n } | header1 | src/hapi.js:14:9:14:46 | request ... 1', '') | | src/hapiglue.js:13:14:15:5 | functio ... n\\n } | header1 | src/hapiglue.js:14:9:14:46 | request ... 1', '') | +| src/hapihapi.js:13:14:15:5 | functio ... n\\n } | header1 | src/hapihapi.js:14:9:14:46 | request ... 1', '') | diff --git a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected index 17c3e12dedd..db9c0b11a35 100644 --- a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected +++ b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected @@ -51,6 +51,7 @@ | express.js:8:20:8:32 | req.query.bar | express.js:8:20:8:32 | req.query.bar | express.js:8:20:8:32 | req.query.bar | This path depends on a $@. | express.js:8:20:8:32 | req.query.bar | user-provided value | | handlebars.js:11:32:11:39 | filePath | handlebars.js:29:46:29:60 | req.params.path | handlebars.js:11:32:11:39 | filePath | This path depends on a $@. | handlebars.js:29:46:29:60 | req.params.path | user-provided value | | handlebars.js:15:25:15:32 | filePath | handlebars.js:43:15:43:29 | req.params.path | handlebars.js:15:25:15:32 | filePath | This path depends on a $@. | handlebars.js:43:15:43:29 | req.params.path | user-provided value | +| hapi.js:15:44:15:51 | filepath | hapi.js:14:30:14:51 | request ... ilepath | hapi.js:15:44:15:51 | filepath | This path depends on a $@. | hapi.js:14:30:14:51 | request ... ilepath | user-provided value | | normalizedPaths.js:13:19:13:22 | path | normalizedPaths.js:11:14:11:27 | req.query.path | normalizedPaths.js:13:19:13:22 | path | This path depends on a $@. | normalizedPaths.js:11:14:11:27 | req.query.path | user-provided value | | normalizedPaths.js:14:19:14:29 | './' + path | normalizedPaths.js:11:14:11:27 | req.query.path | normalizedPaths.js:14:19:14:29 | './' + path | This path depends on a $@. | normalizedPaths.js:11:14:11:27 | req.query.path | user-provided value | | normalizedPaths.js:15:19:15:38 | path + '/index.html' | normalizedPaths.js:11:14:11:27 | req.query.path | normalizedPaths.js:15:19:15:38 | path + '/index.html' | This path depends on a $@. | normalizedPaths.js:11:14:11:27 | req.query.path | user-provided value | @@ -344,6 +345,8 @@ edges | handlebars.js:13:73:13:80 | filePath | handlebars.js:15:25:15:32 | filePath | provenance | | | handlebars.js:29:46:29:60 | req.params.path | handlebars.js:10:51:10:58 | filePath | provenance | | | handlebars.js:43:15:43:29 | req.params.path | handlebars.js:13:73:13:80 | filePath | provenance | | +| hapi.js:14:19:14:51 | filepath | hapi.js:15:44:15:51 | filepath | provenance | | +| hapi.js:14:30:14:51 | request ... ilepath | hapi.js:14:19:14:51 | filepath | provenance | | | normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:13:19:13:22 | path | provenance | | | normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:14:26:14:29 | path | provenance | | | normalizedPaths.js:11:7:11:27 | path | normalizedPaths.js:15:19:15:22 | path | provenance | | @@ -821,6 +824,9 @@ nodes | handlebars.js:15:25:15:32 | filePath | semmle.label | filePath | | handlebars.js:29:46:29:60 | req.params.path | semmle.label | req.params.path | | handlebars.js:43:15:43:29 | req.params.path | semmle.label | req.params.path | +| hapi.js:14:19:14:51 | filepath | semmle.label | filepath | +| hapi.js:14:30:14:51 | request ... ilepath | semmle.label | request ... ilepath | +| hapi.js:15:44:15:51 | filepath | semmle.label | filepath | | normalizedPaths.js:11:7:11:27 | path | semmle.label | path | | normalizedPaths.js:11:14:11:27 | req.query.path | semmle.label | req.query.path | | normalizedPaths.js:13:19:13:22 | path | semmle.label | path | diff --git a/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/hapi.js b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/hapi.js new file mode 100644 index 00000000000..c90da206824 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/hapi.js @@ -0,0 +1,22 @@ +const Hapi = require('@hapi/hapi'); +const fs = require('fs').promises; + +(async () => { + const server = Hapi.server({ + port: 3005, + host: 'localhost' + }); + + server.route({ + method: 'GET', + path: '/hello', + handler: async (request, h) => { + const filepath = request.query.filepath; // $ Source + const data = await fs.readFile(filepath, 'utf8'); // $ Alert + const firstLine = data.split('\n')[0]; + return firstLine; + } + }); + + await server.start(); +})(); diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.4.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.4.1.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel index b0bedc8f9c4..4d4616ad049 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.heck-0.4.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.allocator-api2-0.2.21.bazel @@ -11,7 +11,7 @@ load("@rules_rust//rust:defs.bzl", "rust_library") package(default_visibility = ["//visibility:public"]) rust_library( - name = "heck", + name = "allocator_api2", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -29,7 +29,7 @@ rust_library( ], ), crate_features = [ - "default", + "alloc", ], crate_root = "src/lib.rs", edition = "2018", @@ -38,7 +38,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=heck", + "crate-name=allocator-api2", "manual", "noclippy", "norustfmt", @@ -82,5 +82,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.1", + version = "0.2.21", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.96.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.97.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.96.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.97.bazel index 25be98a2a2a..ae13110a5ea 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.96.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.anyhow-1.0.97.bazel @@ -84,9 +84,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.96", + version = "1.0.97", deps = [ - "@vendor_ts__anyhow-1.0.96//:build_script_build", + "@vendor_ts__anyhow-1.0.97//:build_script_build", ], ) @@ -139,7 +139,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.96", + version = "1.0.97", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel index 3e23cd0ce5c..31e9ae6079a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.bazel @@ -32,14 +32,14 @@ filegroup( # Workspace Member Dependencies alias( - name = "anyhow-1.0.96", - actual = "@vendor_ts__anyhow-1.0.96//:anyhow", + name = "anyhow-1.0.97", + actual = "@vendor_ts__anyhow-1.0.97//:anyhow", tags = ["manual"], ) alias( name = "anyhow", - actual = "@vendor_ts__anyhow-1.0.96//:anyhow", + actual = "@vendor_ts__anyhow-1.0.97//:anyhow", tags = ["manual"], ) @@ -56,38 +56,38 @@ alias( ) alias( - name = "chalk-ir-0.99.0", - actual = "@vendor_ts__chalk-ir-0.99.0//:chalk_ir", + name = "chalk-ir-0.100.0", + actual = "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", tags = ["manual"], ) alias( name = "chalk-ir", - actual = "@vendor_ts__chalk-ir-0.99.0//:chalk_ir", + actual = "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", tags = ["manual"], ) alias( - name = "chrono-0.4.39", - actual = "@vendor_ts__chrono-0.4.39//:chrono", + name = "chrono-0.4.40", + actual = "@vendor_ts__chrono-0.4.40//:chrono", tags = ["manual"], ) alias( name = "chrono", - actual = "@vendor_ts__chrono-0.4.39//:chrono", + actual = "@vendor_ts__chrono-0.4.40//:chrono", tags = ["manual"], ) alias( - name = "clap-4.5.31", - actual = "@vendor_ts__clap-4.5.31//:clap", + name = "clap-4.5.32", + actual = "@vendor_ts__clap-4.5.32//:clap", tags = ["manual"], ) alias( name = "clap", - actual = "@vendor_ts__clap-4.5.31//:clap", + actual = "@vendor_ts__clap-4.5.32//:clap", tags = ["manual"], ) @@ -104,14 +104,14 @@ alias( ) alias( - name = "either-1.14.0", - actual = "@vendor_ts__either-1.14.0//:either", + name = "either-1.15.0", + actual = "@vendor_ts__either-1.15.0//:either", tags = ["manual"], ) alias( name = "either", - actual = "@vendor_ts__either-1.14.0//:either", + actual = "@vendor_ts__either-1.15.0//:either", tags = ["manual"], ) @@ -236,224 +236,224 @@ alias( ) alias( - name = "proc-macro2-1.0.93", - actual = "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", + name = "proc-macro2-1.0.94", + actual = "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", tags = ["manual"], ) alias( name = "proc-macro2", - actual = "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", + actual = "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", tags = ["manual"], ) alias( - name = "quote-1.0.38", - actual = "@vendor_ts__quote-1.0.38//:quote", + name = "quote-1.0.40", + actual = "@vendor_ts__quote-1.0.40//:quote", tags = ["manual"], ) alias( name = "quote", - actual = "@vendor_ts__quote-1.0.38//:quote", + actual = "@vendor_ts__quote-1.0.40//:quote", tags = ["manual"], ) alias( - name = "ra_ap_base_db-0.0.266", - actual = "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", + name = "ra_ap_base_db-0.0.270", + actual = "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", tags = ["manual"], ) alias( name = "ra_ap_base_db", - actual = "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", + actual = "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", tags = ["manual"], ) alias( - name = "ra_ap_cfg-0.0.266", - actual = "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg", + name = "ra_ap_cfg-0.0.270", + actual = "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg", tags = ["manual"], ) alias( name = "ra_ap_cfg", - actual = "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg", + actual = "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg", tags = ["manual"], ) alias( - name = "ra_ap_hir-0.0.266", - actual = "@vendor_ts__ra_ap_hir-0.0.266//:ra_ap_hir", + name = "ra_ap_hir-0.0.270", + actual = "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir", tags = ["manual"], ) alias( name = "ra_ap_hir", - actual = "@vendor_ts__ra_ap_hir-0.0.266//:ra_ap_hir", + actual = "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir", tags = ["manual"], ) alias( - name = "ra_ap_hir_def-0.0.266", - actual = "@vendor_ts__ra_ap_hir_def-0.0.266//:ra_ap_hir_def", + name = "ra_ap_hir_def-0.0.270", + actual = "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def", tags = ["manual"], ) alias( name = "ra_ap_hir_def", - actual = "@vendor_ts__ra_ap_hir_def-0.0.266//:ra_ap_hir_def", + actual = "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def", tags = ["manual"], ) alias( - name = "ra_ap_hir_expand-0.0.266", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand", + name = "ra_ap_hir_expand-0.0.270", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand", tags = ["manual"], ) alias( name = "ra_ap_hir_expand", - actual = "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand", + actual = "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand", tags = ["manual"], ) alias( - name = "ra_ap_hir_ty-0.0.266", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.266//:ra_ap_hir_ty", + name = "ra_ap_hir_ty-0.0.270", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty", tags = ["manual"], ) alias( name = "ra_ap_hir_ty", - actual = "@vendor_ts__ra_ap_hir_ty-0.0.266//:ra_ap_hir_ty", + actual = "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty", tags = ["manual"], ) alias( - name = "ra_ap_ide_db-0.0.266", - actual = "@vendor_ts__ra_ap_ide_db-0.0.266//:ra_ap_ide_db", + name = "ra_ap_ide_db-0.0.270", + actual = "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db", tags = ["manual"], ) alias( name = "ra_ap_ide_db", - actual = "@vendor_ts__ra_ap_ide_db-0.0.266//:ra_ap_ide_db", + actual = "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db", tags = ["manual"], ) alias( - name = "ra_ap_intern-0.0.266", - actual = "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", + name = "ra_ap_intern-0.0.270", + actual = "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", tags = ["manual"], ) alias( name = "ra_ap_intern", - actual = "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", + actual = "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", tags = ["manual"], ) alias( - name = "ra_ap_load-cargo-0.0.266", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.266//:ra_ap_load_cargo", + name = "ra_ap_load-cargo-0.0.270", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.270//:ra_ap_load_cargo", tags = ["manual"], ) alias( name = "ra_ap_load-cargo", - actual = "@vendor_ts__ra_ap_load-cargo-0.0.266//:ra_ap_load_cargo", + actual = "@vendor_ts__ra_ap_load-cargo-0.0.270//:ra_ap_load_cargo", tags = ["manual"], ) alias( - name = "ra_ap_parser-0.0.266", - actual = "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser", + name = "ra_ap_parser-0.0.270", + actual = "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser", tags = ["manual"], ) alias( name = "ra_ap_parser", - actual = "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser", + actual = "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser", tags = ["manual"], ) alias( - name = "ra_ap_paths-0.0.266", - actual = "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths", + name = "ra_ap_paths-0.0.270", + actual = "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths", tags = ["manual"], ) alias( name = "ra_ap_paths", - actual = "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths", + actual = "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths", tags = ["manual"], ) alias( - name = "ra_ap_project_model-0.0.266", - actual = "@vendor_ts__ra_ap_project_model-0.0.266//:ra_ap_project_model", + name = "ra_ap_project_model-0.0.270", + actual = "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model", tags = ["manual"], ) alias( name = "ra_ap_project_model", - actual = "@vendor_ts__ra_ap_project_model-0.0.266//:ra_ap_project_model", + actual = "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model", tags = ["manual"], ) alias( - name = "ra_ap_span-0.0.266", - actual = "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", + name = "ra_ap_span-0.0.270", + actual = "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", tags = ["manual"], ) alias( name = "ra_ap_span", - actual = "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", + actual = "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", tags = ["manual"], ) alias( - name = "ra_ap_stdx-0.0.266", - actual = "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", + name = "ra_ap_stdx-0.0.270", + actual = "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "stdx-0.0.266", - actual = "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", + name = "stdx-0.0.270", + actual = "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", tags = ["manual"], ) alias( name = "stdx", - actual = "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", + actual = "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", tags = ["manual"], ) alias( - name = "ra_ap_syntax-0.0.266", - actual = "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", + name = "ra_ap_syntax-0.0.270", + actual = "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", tags = ["manual"], ) alias( name = "ra_ap_syntax", - actual = "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", + actual = "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", tags = ["manual"], ) alias( - name = "ra_ap_vfs-0.0.266", - actual = "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs", + name = "ra_ap_vfs-0.0.270", + actual = "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs", tags = ["manual"], ) alias( name = "ra_ap_vfs", - actual = "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs", + actual = "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs", tags = ["manual"], ) @@ -494,26 +494,26 @@ alias( ) alias( - name = "serde-1.0.218", - actual = "@vendor_ts__serde-1.0.218//:serde", + name = "serde-1.0.219", + actual = "@vendor_ts__serde-1.0.219//:serde", tags = ["manual"], ) alias( name = "serde", - actual = "@vendor_ts__serde-1.0.218//:serde", + actual = "@vendor_ts__serde-1.0.219//:serde", tags = ["manual"], ) alias( - name = "serde_json-1.0.139", - actual = "@vendor_ts__serde_json-1.0.139//:serde_json", + name = "serde_json-1.0.140", + actual = "@vendor_ts__serde_json-1.0.140//:serde_json", tags = ["manual"], ) alias( name = "serde_json", - actual = "@vendor_ts__serde_json-1.0.139//:serde_json", + actual = "@vendor_ts__serde_json-1.0.140//:serde_json", tags = ["manual"], ) @@ -530,14 +530,14 @@ alias( ) alias( - name = "syn-2.0.98", - actual = "@vendor_ts__syn-2.0.98//:syn", + name = "syn-2.0.100", + actual = "@vendor_ts__syn-2.0.100//:syn", tags = ["manual"], ) alias( name = "syn", - actual = "@vendor_ts__syn-2.0.98//:syn", + actual = "@vendor_ts__syn-2.0.100//:syn", tags = ["manual"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.11.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.11.bazel new file mode 100644 index 00000000000..06ae2c25a76 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.boxcar-0.2.11.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "boxcar", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=boxcar", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.11", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.9.bazel index 55635691a8f..27672271a76 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.camino-1.1.9.bazel @@ -87,7 +87,7 @@ rust_library( version = "1.1.9", deps = [ "@vendor_ts__camino-1.1.9//:build_script_build", - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.1.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.1.9.bazel index 3882206b469..a95435a6151 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.1.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo-platform-0.1.9.bazel @@ -81,6 +81,6 @@ rust_library( }), version = "0.1.9", deps = [ - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.18.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.18.1.bazel index 0cbaa4613c0..17cd583761c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.18.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.cargo_metadata-0.18.1.bazel @@ -87,8 +87,8 @@ rust_library( "@vendor_ts__camino-1.1.9//:camino", "@vendor_ts__cargo-platform-0.1.9//:cargo_platform", "@vendor_ts__semver-1.0.24//:semver", - "@vendor_ts__serde-1.0.218//:serde", - "@vendor_ts__serde_json-1.0.139//:serde_json", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:serde_json", "@vendor_ts__thiserror-1.0.69//:thiserror", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.99.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.100.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.99.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.100.0.bazel index bb2cfb0ca84..3e9e66a96dc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.99.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-derive-0.100.0.bazel @@ -79,11 +79,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.99.0", + version = "0.100.0", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", "@vendor_ts__synstructure-0.13.1//:synstructure", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.99.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.99.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel index 45829e9abfe..9b77e1de102 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.99.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-ir-0.100.0.bazel @@ -31,7 +31,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2018", proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.99.0//:chalk_derive", + "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", ], rustc_flags = [ "--cap-lints=allow", @@ -82,7 +82,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.99.0", + version = "0.100.0", deps = [ "@vendor_ts__bitflags-2.8.0//:bitflags", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.99.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.100.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.99.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.100.0.bazel index e15beb719fb..4a3b7135706 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.99.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-recursive-0.100.0.bazel @@ -31,7 +31,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2018", proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.99.0//:chalk_derive", + "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", ], rustc_flags = [ "--cap-lints=allow", @@ -82,10 +82,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.99.0", + version = "0.100.0", deps = [ - "@vendor_ts__chalk-ir-0.99.0//:chalk_ir", - "@vendor_ts__chalk-solve-0.99.0//:chalk_solve", + "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", + "@vendor_ts__chalk-solve-0.100.0//:chalk_solve", "@vendor_ts__rustc-hash-1.1.0//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.99.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.99.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel index f12dc8d4f11..6bea89c9407 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.99.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chalk-solve-0.100.0.bazel @@ -31,7 +31,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2018", proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.99.0//:chalk_derive", + "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", ], rustc_flags = [ "--cap-lints=allow", @@ -82,9 +82,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.99.0", + version = "0.100.0", deps = [ - "@vendor_ts__chalk-ir-0.99.0//:chalk_ir", + "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", "@vendor_ts__ena-0.14.3//:ena", "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.39.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.40.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.39.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.40.bazel index 0f8702ab3f0..2e67a0f3f59 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.39.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.chrono-0.4.40.bazel @@ -42,7 +42,7 @@ rust_library( "wasm-bindgen", "wasmbind", "winapi", - "windows-targets", + "windows-link", ], crate_root = "src/lib.rs", edition = "2021", @@ -95,10 +95,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.4.39", + version = "0.4.40", deps = [ "@vendor_ts__num-traits-0.2.19//:num_traits", - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ] + select({ "@rules_rust//rust/platform:aarch64-apple-darwin": [ "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-apple-darwin @@ -114,7 +114,7 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-linux-android ], "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ - "@vendor_ts__windows-targets-0.52.6//:windows_targets", # aarch64-pc-windows-msvc + "@vendor_ts__windows-link-0.1.1//:windows_link", # aarch64-pc-windows-msvc ], "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # aarch64-unknown-fuchsia @@ -146,7 +146,7 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-linux-android ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ - "@vendor_ts__windows-targets-0.52.6//:windows_targets", # i686-pc-windows-msvc + "@vendor_ts__windows-link-0.1.1//:windows_link", # i686-pc-windows-msvc ], "@rules_rust//rust/platform:i686-unknown-freebsd": [ "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # i686-unknown-freebsd @@ -175,7 +175,7 @@ rust_library( "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-linux-android ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ - "@vendor_ts__windows-targets-0.52.6//:windows_targets", # x86_64-pc-windows-msvc + "@vendor_ts__windows-link-0.1.1//:windows_link", # x86_64-pc-windows-msvc ], "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ "@vendor_ts__iana-time-zone-0.1.61//:iana_time_zone", # x86_64-unknown-freebsd diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.31.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.32.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.31.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.32.bazel index 704def0d16a..efd3ae52118 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.31.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap-4.5.32.bazel @@ -41,7 +41,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__clap_derive-4.5.28//:clap_derive", + "@vendor_ts__clap_derive-4.5.32//:clap_derive", ], rustc_flags = [ "--cap-lints=allow", @@ -92,8 +92,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.31", + version = "4.5.32", deps = [ - "@vendor_ts__clap_builder-4.5.31//:clap_builder", + "@vendor_ts__clap_builder-4.5.32//:clap_builder", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.31.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.32.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.31.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.32.bazel index a65b405d44c..d839347dd06 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.31.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_builder-4.5.32.bazel @@ -87,7 +87,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.31", + version = "4.5.32", deps = [ "@vendor_ts__anstream-0.6.18//:anstream", "@vendor_ts__anstyle-1.0.10//:anstyle", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.32.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.28.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.32.bazel index 1e6c70d11ee..1e66cbe6754 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.28.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.clap_derive-4.5.32.bazel @@ -82,11 +82,11 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "4.5.28", + version = "4.5.32", deps = [ "@vendor_ts__heck-0.5.0//:heck", - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel new file mode 100644 index 00000000000..000ff3e1c07 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.crossbeam-queue-0.3.12.bazel @@ -0,0 +1,91 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "crossbeam_queue", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "alloc", + "default", + "std", + ], + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=crossbeam-queue", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.3.12", + deps = [ + "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel index 299241442a1..77b6fa435ee 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_core-0.20.10.bazel @@ -87,9 +87,9 @@ rust_library( deps = [ "@vendor_ts__fnv-1.0.7//:fnv", "@vendor_ts__ident_case-1.0.1//:ident_case", - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", "@vendor_ts__strsim-0.11.1//:strsim", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel index aeb122f8a02..1effd43d931 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.darling_macro-0.20.10.bazel @@ -82,7 +82,7 @@ rust_proc_macro( version = "0.20.10", deps = [ "@vendor_ts__darling_core-0.20.10//:darling_core", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel new file mode 100644 index 00000000000..dba299beec3 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.dashmap-6.1.0.bazel @@ -0,0 +1,94 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "dashmap", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "raw-api", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=dashmap", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "6.1.0", + deps = [ + "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__crossbeam-utils-0.8.21//:crossbeam_utils", + "@vendor_ts__hashbrown-0.14.5//:hashbrown", + "@vendor_ts__lock_api-0.4.12//:lock_api", + "@vendor_ts__once_cell-1.20.3//:once_cell", + "@vendor_ts__parking_lot_core-0.9.10//:parking_lot_core", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.14.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel index 7d258985cf5..d5f576edcb0 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.14.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.either-1.15.0.bazel @@ -30,6 +30,7 @@ rust_library( ), crate_features = [ "default", + "std", "use_std", ], crate_root = "src/lib.rs", @@ -83,5 +84,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.14.0", + version = "1.15.0", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel index 176db4ab06a..ed0c656449e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.figment-0.10.19.bazel @@ -91,7 +91,7 @@ rust_library( deps = [ "@vendor_ts__figment-0.10.19//:build_script_build", "@vendor_ts__pear-0.2.9//:pear", - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", "@vendor_ts__serde_yaml-0.9.34-deprecated//:serde_yaml", "@vendor_ts__uncased-0.9.10//:uncased", ] + select({ diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel new file mode 100644 index 00000000000..af8c916a930 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.foldhash-0.1.5.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "foldhash", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=foldhash", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.5", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel new file mode 100644 index 00000000000..bf828ac701b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.generator-0.8.4.bazel @@ -0,0 +1,230 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "generator", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=generator", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.8.4", + deps = [ + "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__generator-0.8.4//:build_script_build", + "@vendor_ts__log-0.4.25//:log", + ] + select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-linux-android": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ + "@vendor_ts__windows-0.58.0//:windows", # cfg(windows) + ], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-linux-androideabi": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-apple-darwin": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-linux-android": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [ + "@vendor_ts__windows-0.58.0//:windows", # cfg(windows) + ], + "@rules_rust//rust/platform:i686-unknown-freebsd": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-darwin": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-apple-ios": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-linux-android": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ + "@vendor_ts__windows-0.58.0//:windows", # cfg(windows) + ], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ + "@vendor_ts__libc-0.2.169//:libc", # cfg(unix) + ], + "//conditions:default": [], + }), +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2021", + pkg_name = "generator", + proc_macro_deps = [ + "@vendor_ts__rustversion-1.0.20//:rustversion", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=generator", + "manual", + "noclippy", + "norustfmt", + ], + version = "0.8.4", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel index 51e970a88a2..4b6e47dfa32 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.14.5.bazel @@ -30,6 +30,7 @@ rust_library( ), crate_features = [ "inline-more", + "raw", ], crate_root = "src/lib.rs", edition = "2021", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel index da91d620d24..d7d08e46be6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashbrown-0.15.2.bazel @@ -28,6 +28,14 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "allocator-api2", + "default", + "default-hasher", + "equivalent", + "inline-more", + "raw-entry", + ], crate_root = "src/lib.rs", edition = "2021", rustc_flags = [ @@ -80,4 +88,9 @@ rust_library( "//conditions:default": ["@platforms//:incompatible"], }), version = "0.15.2", + deps = [ + "@vendor_ts__allocator-api2-0.2.21//:allocator_api2", + "@vendor_ts__equivalent-1.0.1//:equivalent", + "@vendor_ts__foldhash-0.1.5//:foldhash", + ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.always-assert-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.always-assert-0.2.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel index bb05dcce52e..291406fff11 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.always-assert-0.2.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.hashlink-0.10.0.bazel @@ -11,7 +11,7 @@ load("@rules_rust//rust:defs.bzl", "rust_library") package(default_visibility = ["//visibility:public"]) rust_library( - name = "always_assert", + name = "hashlink", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -28,9 +28,6 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "tracing", - ], crate_root = "src/lib.rs", edition = "2018", rustc_flags = [ @@ -38,7 +35,7 @@ rust_library( ], tags = [ "cargo-bazel", - "crate-name=always-assert", + "crate-name=hashlink", "manual", "noclippy", "norustfmt", @@ -82,8 +79,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.2.0", + version = "0.10.0", deps = [ - "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__hashbrown-0.15.2//:hashbrown", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.7.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.7.0.bazel index de2ed0d5327..53eacc89ea6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.7.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.indexmap-2.7.0.bazel @@ -30,6 +30,7 @@ rust_library( ), crate_features = [ "default", + "serde", "std", ], crate_root = "src/lib.rs", @@ -87,5 +88,6 @@ rust_library( deps = [ "@vendor_ts__equivalent-1.0.1//:equivalent", "@vendor_ts__hashbrown-0.15.2//:hashbrown", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel index e9f3a3532d3..b31c648e60a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.12.1.bazel @@ -86,6 +86,6 @@ rust_library( }), version = "0.12.1", deps = [ - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__either-1.15.0//:either", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel index 020cdf4b9da..5449caa6efb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.itertools-0.14.0.bazel @@ -86,6 +86,6 @@ rust_library( }), version = "0.14.0", deps = [ - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__either-1.15.0//:either", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.loom-0.7.2.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.loom-0.7.2.bazel new file mode 100644 index 00000000000..01796e7b3a5 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.loom-0.7.2.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "loom", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=loom", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.7.2", + deps = [ + "@vendor_ts__cfg-if-1.0.0//:cfg_if", + "@vendor_ts__generator-0.8.4//:generator", + "@vendor_ts__scoped-tls-1.0.1//:scoped_tls", + "@vendor_ts__tracing-0.1.41//:tracing", + "@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel index d21d1c5497c..cc4f5c0bcba 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.mustache-0.9.0.bazel @@ -82,6 +82,6 @@ rust_library( version = "0.9.0", deps = [ "@vendor_ts__log-0.3.9//:log", - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel index 4ba44587033..d4a945c39ea 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.pear_codegen-0.2.9.bazel @@ -81,9 +81,9 @@ rust_proc_macro( }), version = "0.2.9", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:proc_macro2_diagnostics", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.0.bazel new file mode 100644 index 00000000000..e246d3aa71d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.portable-atomic-1.11.0.bazel @@ -0,0 +1,150 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "portable_atomic", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "fallback", + ], + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=portable-atomic", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.11.0", + deps = [ + "@vendor_ts__portable-atomic-1.11.0//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_features = [ + "default", + "fallback", + ], + crate_name = "build_script_build", + crate_root = "build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2018", + pkg_name = "portable-atomic", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=portable-atomic", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.11.0", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.93.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.93.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel index bcc9b7fe36a..c78fa364e8e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.93.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-1.0.94.bazel @@ -84,9 +84,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.93", + version = "1.0.94", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:build_script_build", + "@vendor_ts__proc-macro2-1.0.94//:build_script_build", "@vendor_ts__unicode-ident-1.0.16//:unicode_ident", ], ) @@ -140,7 +140,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.93", + version = "1.0.94", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel index 6e74bb3b879..3b05cf97041 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.proc-macro2-diagnostics-0.10.1.bazel @@ -87,10 +87,10 @@ rust_library( }), version = "0.10.1", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", "@vendor_ts__proc-macro2-diagnostics-0.10.1//:build_script_build", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", "@vendor_ts__yansi-1.0.1//:yansi", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.38.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.38.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel index 1f85e8a0431..927021d3331 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.38.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.quote-1.0.40.bazel @@ -83,8 +83,8 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.38", + version = "1.0.40", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.97.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.97.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel index 742b9bee04b..f1bf54464e6 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.97.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_abi-0.100.0.bazel @@ -17,8 +17,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_hashes-0.97.0//:ra_ap_rustc_hashes": "rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.97.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_hashes-0.100.0//:ra_ap_rustc_hashes": "rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index": "rustc_index", }, compile_data = glob( include = ["**"], @@ -83,11 +83,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.97.0", + version = "0.100.0", deps = [ "@vendor_ts__bitflags-2.8.0//:bitflags", - "@vendor_ts__ra-ap-rustc_hashes-0.97.0//:ra_ap_rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.97.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_hashes-0.100.0//:ra_ap_rustc_hashes", + "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", "@vendor_ts__tracing-0.1.41//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.97.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.100.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.97.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.100.0.bazel index f44bed7781d..6be975644de 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.97.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_hashes-0.100.0.bazel @@ -79,7 +79,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.97.0", + version = "0.100.0", deps = [ "@vendor_ts__rustc-stable-hash-0.1.1//:rustc_stable_hash", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.97.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.100.0.bazel similarity index 94% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.97.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.100.0.bazel index 20f80a3542a..65efb7c784e 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.97.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index-0.100.0.bazel @@ -17,7 +17,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_index_macros-0.97.0//:ra_ap_rustc_index_macros": "rustc_index_macros", + "@vendor_ts__ra-ap-rustc_index_macros-0.100.0//:ra_ap_rustc_index_macros": "rustc_index_macros", }, compile_data = glob( include = ["**"], @@ -34,7 +34,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2024", proc_macro_deps = [ - "@vendor_ts__ra-ap-rustc_index_macros-0.97.0//:ra_ap_rustc_index_macros", + "@vendor_ts__ra-ap-rustc_index_macros-0.100.0//:ra_ap_rustc_index_macros", ], rustc_flags = [ "--cap-lints=allow", @@ -85,7 +85,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.97.0", + version = "0.100.0", deps = [ "@vendor_ts__smallvec-1.14.0//:smallvec", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.97.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.100.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.97.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.100.0.bazel index eca0772470c..63d0286a338 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.97.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_index_macros-0.100.0.bazel @@ -79,10 +79,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.97.0", + version = "0.100.0", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.97.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.100.0.bazel similarity index 99% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.97.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.100.0.bazel index 58c662ab8d3..7c98b84f7fb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.97.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_lexer-0.100.0.bazel @@ -79,7 +79,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.97.0", + version = "0.100.0", deps = [ "@vendor_ts__memchr-2.7.4//:memchr", "@vendor_ts__unicode-properties-0.1.3//:unicode_properties", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.97.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.100.0.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.97.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.100.0.bazel index 38ac1f7eab5..0cf50f5a2b8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.97.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_parse_format-0.100.0.bazel @@ -17,8 +17,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_index-0.97.0//:ra_ap_rustc_index": "rustc_index", - "@vendor_ts__ra-ap-rustc_lexer-0.97.0//:ra_ap_rustc_lexer": "rustc_lexer", + "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer": "rustc_lexer", }, compile_data = glob( include = ["**"], @@ -83,9 +83,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.97.0", + version = "0.100.0", deps = [ - "@vendor_ts__ra-ap-rustc_index-0.97.0//:ra_ap_rustc_index", - "@vendor_ts__ra-ap-rustc_lexer-0.97.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.97.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.97.0.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel index cdef8ca0b9a..dcdff444d8f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.97.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel @@ -17,7 +17,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra-ap-rustc_index-0.97.0//:ra_ap_rustc_index": "rustc_index", + "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index": "rustc_index", }, compile_data = glob( include = ["**"], @@ -82,9 +82,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.97.0", + version = "0.100.0", deps = [ - "@vendor_ts__ra-ap-rustc_index-0.97.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab//:rustc_apfloat", "@vendor_ts__smallvec-1.14.0//:smallvec", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.270.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.270.bazel index 70595c88a11..6e8ab6e20b3 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_base_db-0.0.270.bazel @@ -17,12 +17,13 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -37,7 +38,10 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro", + ], rustc_flags = [ "--cap-lints=allow", ], @@ -87,18 +91,19 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ + "@vendor_ts__dashmap-5.5.3//:dashmap", "@vendor_ts__la-arena-0.3.1//:la_arena", "@vendor_ts__lz4_flex-0.11.3//:lz4_flex", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_salsa-0.0.266//:ra_salsa", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.19.0//:salsa", "@vendor_ts__semver-1.0.24//:semver", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__triomphe-0.1.14//:triomphe", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.270.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.270.bazel index e58f52a7129..c38cc3cdd88 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_cfg-0.0.270.bazel @@ -17,8 +17,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -36,7 +36,7 @@ rust_library( "tt", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -86,10 +86,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.270.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.270.bazel index 2c7410fd47f..598826ee263 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_edition-0.0.270.bazel @@ -29,7 +29,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -79,5 +79,5 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.270.bazel similarity index 75% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.270.bazel index 5a688858e7f..c85c4bbf946 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir-0.0.270.bazel @@ -17,16 +17,16 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_def-0.0.266//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.266//:ra_ap_hir_ty": "hir_ty", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty": "hir_ty", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -41,7 +41,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -91,22 +91,22 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__either-1.15.0//:either", "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_def-0.0.266//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_hir_ty-0.0.266//:ra_ap_hir_ty", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__smallvec-1.14.0//:smallvec", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.270.bazel similarity index 73% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.270.bazel index a8280467c4d..f0e8fd28561 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_def-0.0.270.bazel @@ -17,15 +17,16 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_mbe-0.0.266//:ra_ap_mbe": "mbe", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -40,7 +41,10 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro", + ], rustc_flags = [ "--cap-lints=allow", ], @@ -90,33 +94,34 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__bitflags-2.8.0//:bitflags", "@vendor_ts__cov-mark-2.0.0//:cov_mark", "@vendor_ts__dashmap-5.5.3//:dashmap", "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__either-1.15.0//:either", "@vendor_ts__fst-0.4.7//:fst", "@vendor_ts__hashbrown-0.14.5//:hashbrown", "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra-ap-rustc_abi-0.97.0//:ra_ap_rustc_abi", - "@vendor_ts__ra-ap-rustc_hashes-0.97.0//:ra_ap_rustc_hashes", - "@vendor_ts__ra-ap-rustc_parse_format-0.97.0//:ra_ap_rustc_parse_format", - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg", - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_mbe-0.0.266//:ra_ap_mbe", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", + "@vendor_ts__ra-ap-rustc_abi-0.100.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_hashes-0.100.0//:ra_ap_rustc_hashes", + "@vendor_ts__ra-ap-rustc_parse_format-0.100.0//:ra_ap_rustc_parse_format", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__salsa-0.19.0//:salsa", "@vendor_ts__smallvec-1.14.0//:smallvec", "@vendor_ts__text-size-1.1.1//:text_size", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.270.bazel similarity index 72% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.270.bazel index 8c89fecda8d..716d660159f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_expand-0.0.270.bazel @@ -17,16 +17,17 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_mbe-0.0.266//:ra_ap_mbe": "mbe", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.266//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe": "mbe", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -41,7 +42,10 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro", + ], rustc_flags = [ "--cap-lints=allow", ], @@ -91,24 +95,25 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__either-1.15.0//:either", "@vendor_ts__hashbrown-0.14.5//:hashbrown", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_mbe-0.0.266//:ra_ap_mbe", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.266//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_mbe-0.0.270//:ra_ap_mbe", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.19.0//:salsa", "@vendor_ts__smallvec-1.14.0//:smallvec", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__triomphe-0.1.14//:triomphe", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.270.bazel similarity index 72% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.270.bazel index 9770a5812cf..6e1e0740c96 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_hir_ty-0.0.270.bazel @@ -17,13 +17,14 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir_def-0.0.266//:ra_ap_hir_def": "hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def": "hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", }, compile_data = glob( include = ["**"], @@ -38,9 +39,10 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", proc_macro_deps = [ - "@vendor_ts__chalk-derive-0.99.0//:chalk_derive", + "@vendor_ts__chalk-derive-0.100.0//:chalk_derive", + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro", ], rustc_flags = [ "--cap-lints=allow", @@ -91,34 +93,35 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__bitflags-2.8.0//:bitflags", - "@vendor_ts__chalk-ir-0.99.0//:chalk_ir", - "@vendor_ts__chalk-recursive-0.99.0//:chalk_recursive", - "@vendor_ts__chalk-solve-0.99.0//:chalk_solve", + "@vendor_ts__chalk-ir-0.100.0//:chalk_ir", + "@vendor_ts__chalk-recursive-0.100.0//:chalk_recursive", + "@vendor_ts__chalk-solve-0.100.0//:chalk_solve", "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__dashmap-5.5.3//:dashmap", + "@vendor_ts__either-1.15.0//:either", "@vendor_ts__ena-0.14.3//:ena", "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__la-arena-0.3.1//:la_arena", "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", "@vendor_ts__oorandom-11.1.4//:oorandom", - "@vendor_ts__ra-ap-rustc_abi-0.97.0//:ra_ap_rustc_abi", - "@vendor_ts__ra-ap-rustc_hashes-0.97.0//:ra_ap_rustc_hashes", - "@vendor_ts__ra-ap-rustc_index-0.97.0//:ra_ap_rustc_index", - "@vendor_ts__ra-ap-rustc_pattern_analysis-0.97.0//:ra_ap_rustc_pattern_analysis", - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir_def-0.0.266//:ra_ap_hir_def", - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", + "@vendor_ts__ra-ap-rustc_abi-0.100.0//:ra_ap_rustc_abi", + "@vendor_ts__ra-ap-rustc_index-0.100.0//:ra_ap_rustc_index", + "@vendor_ts__ra-ap-rustc_pattern_analysis-0.100.0//:ra_ap_rustc_pattern_analysis", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__rustc_apfloat-0.2.1-llvm-462a31f5a5ab//:rustc_apfloat", + "@vendor_ts__salsa-0.19.0//:salsa", "@vendor_ts__scoped-tls-1.0.1//:scoped_tls", "@vendor_ts__smallvec-1.14.0//:smallvec", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.270.bazel similarity index 76% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.270.bazel index 3b6ecbc023c..0c437699408 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_ide_db-0.0.270.bazel @@ -17,13 +17,15 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_hir-0.0.266//:ra_ap_hir": "hir", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_profile-0.0.266//:ra_ap_profile": "profile", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir": "hir", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_profile-0.0.270//:ra_ap_profile": "profile", + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro": "query_group", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -38,7 +40,10 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", + proc_macro_deps = [ + "@vendor_ts__ra_ap_query-group-macro-0.0.270//:ra_ap_query_group_macro", + ], rustc_flags = [ "--cap-lints=allow", ], @@ -88,28 +93,31 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__bitflags-2.8.0//:bitflags", "@vendor_ts__cov-mark-2.0.0//:cov_mark", "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__dashmap-5.5.3//:dashmap", + "@vendor_ts__either-1.15.0//:either", "@vendor_ts__fst-0.4.7//:fst", "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__line-index-0.1.2//:line_index", "@vendor_ts__memchr-2.7.4//:memchr", "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", - "@vendor_ts__ra_ap_hir-0.0.266//:ra_ap_hir", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser", - "@vendor_ts__ra_ap_profile-0.0.266//:ra_ap_profile", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", + "@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser", + "@vendor_ts__ra_ap_profile-0.0.270//:ra_ap_profile", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs", "@vendor_ts__rayon-1.10.0//:rayon", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.19.0//:salsa", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__triomphe-0.1.14//:triomphe", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.270.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.270.bazel index a36d7b0d3cb..39f87b8bcdc 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_intern-0.0.270.bazel @@ -29,7 +29,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -79,7 +79,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__dashmap-5.5.3//:dashmap", "@vendor_ts__hashbrown-0.14.5//:hashbrown", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.270.bazel similarity index 74% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.270.bazel index 09abc14852e..30a635ef821 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_load-cargo-0.0.270.bazel @@ -17,16 +17,16 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand": "hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.266//:ra_ap_ide_db": "ide_db", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_proc_macro_api-0.0.266//:ra_ap_proc_macro_api": "proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.266//:ra_ap_project_model": "project_model", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs": "vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.266//:ra_ap_vfs_notify": "vfs_notify", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand": "hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db": "ide_db", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_proc_macro_api-0.0.270//:ra_ap_proc_macro_api": "proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model": "project_model", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.270//:ra_ap_vfs_notify": "vfs_notify", }, compile_data = glob( include = ["**"], @@ -41,7 +41,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -91,21 +91,21 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ - "@vendor_ts__anyhow-1.0.96//:anyhow", + "@vendor_ts__anyhow-1.0.97//:anyhow", "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", "@vendor_ts__itertools-0.12.1//:itertools", - "@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand", - "@vendor_ts__ra_ap_ide_db-0.0.266//:ra_ap_ide_db", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths", - "@vendor_ts__ra_ap_proc_macro_api-0.0.266//:ra_ap_proc_macro_api", - "@vendor_ts__ra_ap_project_model-0.0.266//:ra_ap_project_model", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs", - "@vendor_ts__ra_ap_vfs-notify-0.0.266//:ra_ap_vfs_notify", + "@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand", + "@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths", + "@vendor_ts__ra_ap_proc_macro_api-0.0.270//:ra_ap_proc_macro_api", + "@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs", + "@vendor_ts__ra_ap_vfs-notify-0.0.270//:ra_ap_vfs_notify", "@vendor_ts__tracing-0.1.41//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.270.bazel similarity index 80% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.270.bazel index c3a16c603ff..be98a1794d8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_mbe-0.0.270.bazel @@ -17,13 +17,13 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.266//:ra_ap_syntax_bridge": "syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge": "syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -38,7 +38,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -88,18 +88,18 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__ra-ap-rustc_lexer-0.97.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", - "@vendor_ts__ra_ap_syntax-bridge-0.0.266//:ra_ap_syntax_bridge", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", + "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_syntax-bridge-0.0.270//:ra_ap_syntax_bridge", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__smallvec-1.14.0//:smallvec", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.270.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.270.bazel index e183b2734b9..abd94f21b0c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_parser-0.0.270.bazel @@ -17,7 +17,7 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_edition-0.0.266//:ra_ap_edition": "edition", + "@vendor_ts__ra_ap_edition-0.0.270//:ra_ap_edition": "edition", }, compile_data = glob( include = ["**"], @@ -36,7 +36,7 @@ rust_library( "tracing", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -86,11 +86,11 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__drop_bomb-0.1.5//:drop_bomb", - "@vendor_ts__ra-ap-rustc_lexer-0.97.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_edition-0.0.266//:ra_ap_edition", + "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_edition-0.0.270//:ra_ap_edition", "@vendor_ts__tracing-0.1.41//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.270.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.270.bazel index 71c23f70a94..582fc319674 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_paths-0.0.270.bazel @@ -32,7 +32,7 @@ rust_library( "serde1", ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -82,7 +82,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__camino-1.1.9//:camino", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.270.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.270.bazel index 52cd154b6fc..e8379df9f54 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_proc_macro_api-0.0.270.bazel @@ -17,11 +17,11 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -36,9 +36,9 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.218//:serde_derive", + "@vendor_ts__serde_derive-1.0.219//:serde_derive", ], rustc_flags = [ "--cap-lints=allow", @@ -89,17 +89,17 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__indexmap-2.7.0//:indexmap", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", - "@vendor_ts__serde-1.0.218//:serde", - "@vendor_ts__serde_json-1.0.139//:serde_json", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:serde_json", "@vendor_ts__tracing-0.1.41//:tracing", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.270.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.270.bazel index 1ca7ddd38df..2a4bffbc5c8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_profile-0.0.270.bazel @@ -29,7 +29,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -79,7 +79,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__cfg-if-1.0.0//:cfg_if", "@vendor_ts__libc-0.2.169//:libc", @@ -88,37 +88,37 @@ rust_library( "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:i686-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:i686-unknown-linux-gnu": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [ "@vendor_ts__windows-sys-0.59.0//:windows_sys", # cfg(windows) ], "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [ - "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(target_os = "linux") + "@vendor_ts__perf-event-0.4.7//:perf_event", # cfg(all(target_os = "linux", not(target_env = "ohos"))) ], "//conditions:default": [], }), diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.270.bazel similarity index 78% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.270.bazel index 7edf5bc0f82..bac3ea62b1c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_project_model-0.0.270.bazel @@ -17,13 +17,13 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db": "base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg": "cfg", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_toolchain-0.0.266//:ra_ap_toolchain": "toolchain", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db": "base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg": "cfg", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_toolchain-0.0.270//:ra_ap_toolchain": "toolchain", }, compile_data = glob( include = ["**"], @@ -38,9 +38,9 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.218//:serde_derive", + "@vendor_ts__serde_derive-1.0.219//:serde_derive", ], rustc_flags = [ "--cap-lints=allow", @@ -91,23 +91,23 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ - "@vendor_ts__anyhow-1.0.96//:anyhow", + "@vendor_ts__anyhow-1.0.97//:anyhow", "@vendor_ts__cargo_metadata-0.18.1//:cargo_metadata", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db", - "@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_toolchain-0.0.266//:ra_ap_toolchain", + "@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db", + "@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_toolchain-0.0.270//:ra_ap_toolchain", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__semver-1.0.24//:semver", - "@vendor_ts__serde-1.0.218//:serde", - "@vendor_ts__serde_json-1.0.139//:serde_json", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:serde_json", "@vendor_ts__tracing-0.1.41//:tracing", "@vendor_ts__triomphe-0.1.14//:triomphe", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.270.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.270.bazel new file mode 100644 index 00000000000..66b54f0975e --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_query-group-macro-0.0.270.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "ra_ap_query_group_macro", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2024", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=ra_ap_query-group-macro", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.0.270", + deps = [ + "@vendor_ts__heck-0.5.0//:heck", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__salsa-0.19.0//:salsa", + "@vendor_ts__syn-2.0.100//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.270.bazel similarity index 87% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.270.bazel index b77f7a5723d..fcace1b1b05 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_span-0.0.270.bazel @@ -17,9 +17,9 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -33,12 +33,8 @@ rust_library( "WORKSPACE.bazel", ], ), - crate_features = [ - "default", - "ra-salsa", - ], crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -88,15 +84,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__hashbrown-0.14.5//:hashbrown", "@vendor_ts__la-arena-0.3.1//:la_arena", - "@vendor_ts__ra_ap_salsa-0.0.266//:ra_salsa", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-0.19.0//:salsa", "@vendor_ts__text-size-1.1.1//:text_size", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.270.bazel similarity index 97% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.270.bazel index dec7e842d90..9a96045450a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_stdx-0.0.270.bazel @@ -29,7 +29,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -79,13 +79,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ - "@vendor_ts__always-assert-0.2.0//:always_assert", "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", "@vendor_ts__itertools-0.12.1//:itertools", "@vendor_ts__jod-thread-0.1.2//:jod_thread", "@vendor_ts__libc-0.2.169//:libc", + "@vendor_ts__tracing-0.1.41//:tracing", ] + select({ "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [ "@vendor_ts__miow-0.6.0//:miow", # cfg(windows) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.270.bazel similarity index 90% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.270.bazel index de3c0271fd4..adfba58214c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-0.0.270.bazel @@ -17,8 +17,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -33,7 +33,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -83,15 +83,15 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__cov-mark-2.0.0//:cov_mark", - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__either-1.15.0//:either", "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__itertools-0.12.1//:itertools", - "@vendor_ts__ra-ap-rustc_lexer-0.97.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", + "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", "@vendor_ts__rowan-0.15.15//:rowan", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__smol_str-0.3.2//:smol_str", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.270.bazel similarity index 82% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.270.bazel index 501bd5f1841..5402358378f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_syntax-bridge-0.0.270.bazel @@ -17,12 +17,12 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser": "parser", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span": "span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax": "syntax", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt": "tt", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser": "parser", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span": "span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax": "syntax", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt": "tt", }, compile_data = glob( include = ["**"], @@ -37,7 +37,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -87,14 +87,14 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser", - "@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax", - "@vendor_ts__ra_ap_tt-0.0.266//:ra_ap_tt", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser", + "@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax", + "@vendor_ts__ra_ap_tt-0.0.270//:ra_ap_tt", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.270.bazel similarity index 98% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.270.bazel index 66f181536d6..a9f5509b306 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_toolchain-0.0.270.bazel @@ -29,7 +29,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -79,7 +79,7 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__camino-1.1.9//:camino", "@vendor_ts__home-0.5.11//:home", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.270.bazel similarity index 91% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.270.bazel index 19c7faf10dd..946e9862a99 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_tt-0.0.270.bazel @@ -17,8 +17,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern": "intern", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern": "intern", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -33,7 +33,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -83,12 +83,12 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__arrayvec-0.7.6//:arrayvec", - "@vendor_ts__ra-ap-rustc_lexer-0.97.0//:ra_ap_rustc_lexer", - "@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", + "@vendor_ts__ra-ap-rustc_lexer-0.100.0//:ra_ap_rustc_lexer", + "@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", "@vendor_ts__text-size-1.1.1//:text_size", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.270.bazel similarity index 93% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.270.bazel index af56a94962c..3990da07910 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-0.0.270.bazel @@ -17,8 +17,8 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", }, compile_data = glob( include = ["**"], @@ -33,7 +33,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -83,14 +83,14 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", "@vendor_ts__fst-0.4.7//:fst", "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__nohash-hasher-0.2.0//:nohash_hasher", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.270.bazel similarity index 90% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.270.bazel index 97a009bdce5..494979d3952 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_vfs-notify-0.0.270.bazel @@ -17,9 +17,9 @@ rust_library( allow_empty = True, ), aliases = { - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths": "paths", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx": "stdx", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs": "vfs", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths": "paths", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx": "stdx", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs": "vfs", }, compile_data = glob( include = ["**"], @@ -34,7 +34,7 @@ rust_library( ], ), crate_root = "src/lib.rs", - edition = "2021", + edition = "2024", rustc_flags = [ "--cap-lints=allow", ], @@ -84,13 +84,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.0.270", deps = [ "@vendor_ts__crossbeam-channel-0.5.14//:crossbeam_channel", "@vendor_ts__notify-8.0.0//:notify", - "@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths", - "@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx", - "@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs", + "@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths", + "@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx", + "@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs", "@vendor_ts__rayon-1.10.0//:rayon", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", "@vendor_ts__tracing-0.1.41//:tracing", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.10.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.10.0.bazel index f84dc0969f2..98b7029f86a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.10.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rayon-1.10.0.bazel @@ -81,7 +81,7 @@ rust_library( }), version = "1.10.0", deps = [ - "@vendor_ts__either-1.14.0//:either", + "@vendor_ts__either-1.15.0//:either", "@vendor_ts__rayon-core-1.12.1//:rayon_core", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.20.bazel new file mode 100644 index 00000000000..dc9ff46207d --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.rustversion-1.0.20.bazel @@ -0,0 +1,142 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//cargo:defs.bzl", "cargo_build_script") +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "rustversion", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2018", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustversion", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "1.0.20", + deps = [ + "@vendor_ts__rustversion-1.0.20//:build_script_build", + ], +) + +cargo_build_script( + name = "_bs", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + "**/*.rs", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_name = "build_script_build", + crate_root = "build/build.rs", + data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + edition = "2018", + pkg_name = "rustversion", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=rustversion", + "manual", + "noclippy", + "norustfmt", + ], + version = "1.0.20", + visibility = ["//visibility:private"], +) + +alias( + name = "build_script_build", + actual = ":_bs", + tags = ["manual"], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_salsa-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel similarity index 85% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_salsa-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel index bab83cc8eeb..f732cb64f0f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_salsa-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-0.19.0.bazel @@ -11,7 +11,7 @@ load("@rules_rust//rust:defs.bzl", "rust_library") package(default_visibility = ["//visibility:public"]) rust_library( - name = "ra_salsa", + name = "salsa", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -28,17 +28,23 @@ rust_library( "WORKSPACE.bazel", ], ), + crate_features = [ + "default", + "macros", + "rayon", + "salsa_unstable", + ], crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__ra_ap_salsa-macros-0.0.266//:ra_salsa_macros", + "@vendor_ts__salsa-macros-0.19.0//:salsa_macros", ], rustc_flags = [ "--cap-lints=allow", ], tags = [ "cargo-bazel", - "crate-name=ra_ap_salsa", + "crate-name=salsa", "manual", "noclippy", "norustfmt", @@ -82,16 +88,20 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.19.0", deps = [ + "@vendor_ts__boxcar-0.2.11//:boxcar", + "@vendor_ts__crossbeam-queue-0.3.12//:crossbeam_queue", + "@vendor_ts__dashmap-6.1.0//:dashmap", + "@vendor_ts__hashbrown-0.15.2//:hashbrown", + "@vendor_ts__hashlink-0.10.0//:hashlink", "@vendor_ts__indexmap-2.7.0//:indexmap", - "@vendor_ts__itertools-0.12.1//:itertools", - "@vendor_ts__lock_api-0.4.12//:lock_api", - "@vendor_ts__oorandom-11.1.4//:oorandom", "@vendor_ts__parking_lot-0.12.3//:parking_lot", + "@vendor_ts__portable-atomic-1.11.0//:portable_atomic", + "@vendor_ts__rayon-1.10.0//:rayon", "@vendor_ts__rustc-hash-2.1.1//:rustc_hash", + "@vendor_ts__salsa-macro-rules-0.19.0//:salsa_macro_rules", "@vendor_ts__smallvec-1.14.0//:smallvec", "@vendor_ts__tracing-0.1.41//:tracing", - "@vendor_ts__triomphe-0.1.14//:triomphe", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.19.0.bazel new file mode 100644 index 00000000000..1f1b43e02bc --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macro-rules-0.19.0.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "salsa_macro_rules", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=salsa-macro-rules", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.19.0", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.19.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.19.0.bazel new file mode 100644 index 00000000000..20b30ab306b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.salsa-macros-0.19.0.bazel @@ -0,0 +1,90 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "salsa_macros", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=salsa-macros", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.19.0", + deps = [ + "@vendor_ts__heck-0.5.0//:heck", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", + "@vendor_ts__synstructure-0.13.1//:synstructure", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.24.bazel index c05cc8b555e..004fe29bbd7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.semver-1.0.24.bazel @@ -88,7 +88,7 @@ rust_library( version = "1.0.24", deps = [ "@vendor_ts__semver-1.0.24//:build_script_build", - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.218.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.219.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.218.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.219.bazel index df8589a8859..7ba89e09bb7 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.218.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde-1.0.219.bazel @@ -39,7 +39,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2018", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.218//:serde_derive", + "@vendor_ts__serde_derive-1.0.219//:serde_derive", ], rustc_flags = [ "--cap-lints=allow", @@ -90,9 +90,9 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.218", + version = "1.0.219", deps = [ - "@vendor_ts__serde-1.0.218//:build_script_build", + "@vendor_ts__serde-1.0.219//:build_script_build", ], ) @@ -148,7 +148,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.218", + version = "1.0.219", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.218.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel similarity index 95% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.218.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel index ec591a096a1..6d385b05daa 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.218.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_derive-1.0.219.bazel @@ -82,10 +82,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.218", + version = "1.0.219", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.139.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.139.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel index 747fcb93840..3f7d00505fb 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.139.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_json-1.0.140.bazel @@ -85,13 +85,13 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "1.0.139", + version = "1.0.140", deps = [ "@vendor_ts__itoa-1.0.14//:itoa", "@vendor_ts__memchr-2.7.4//:memchr", "@vendor_ts__ryu-1.0.19//:ryu", - "@vendor_ts__serde-1.0.218//:serde", - "@vendor_ts__serde_json-1.0.139//:build_script_build", + "@vendor_ts__serde-1.0.219//:serde", + "@vendor_ts__serde_json-1.0.140//:build_script_build", ], ) @@ -145,7 +145,7 @@ cargo_build_script( "noclippy", "norustfmt", ], - version = "1.0.139", + version = "1.0.140", visibility = ["//visibility:private"], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.8.bazel index f57f3f118ff..46285e64bd1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_spanned-0.6.8.bazel @@ -84,6 +84,6 @@ rust_library( }), version = "0.6.8", deps = [ - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.12.0.bazel index 913a64f240a..cdd91fba58a 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.12.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with-3.12.0.bazel @@ -37,7 +37,7 @@ rust_library( crate_root = "src/lib.rs", edition = "2021", proc_macro_deps = [ - "@vendor_ts__serde_derive-1.0.218//:serde_derive", + "@vendor_ts__serde_derive-1.0.219//:serde_derive", "@vendor_ts__serde_with_macros-3.12.0//:serde_with_macros", ], rustc_flags = [ @@ -91,6 +91,6 @@ rust_library( }), version = "3.12.0", deps = [ - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.12.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.12.0.bazel index 28a15ef4179..f057b9da2e2 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.12.0.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_with_macros-3.12.0.bazel @@ -82,8 +82,8 @@ rust_proc_macro( version = "3.12.0", deps = [ "@vendor_ts__darling-0.20.10//:darling", - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel index 9a863536b9e..78a3a8caae5 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.serde_yaml-0.9.34+deprecated.bazel @@ -84,7 +84,7 @@ rust_library( "@vendor_ts__indexmap-2.7.0//:indexmap", "@vendor_ts__itoa-1.0.14//:itoa", "@vendor_ts__ryu-1.0.19//:ryu", - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", "@vendor_ts__unsafe-libyaml-0.2.11//:unsafe_libyaml", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.98.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel similarity index 96% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.98.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel index c241c8b14aa..36eda052e06 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.98.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.syn-2.0.100.bazel @@ -91,10 +91,10 @@ rust_library( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "2.0.98", + version = "2.0.100", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", "@vendor_ts__unicode-ident-1.0.16//:unicode_ident", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel index 0f6f912481f..66b155c2f99 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.synstructure-0.13.1.bazel @@ -85,8 +85,8 @@ rust_library( }), version = "0.13.1", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel index cf0239a907b..c5c8a699bee 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.thiserror-impl-1.0.69.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "1.0.69", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.20.bazel index 9755bbcbacf..aa7721ec15f 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml-0.8.20.bazel @@ -86,7 +86,7 @@ rust_library( }), version = "0.8.20", deps = [ - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", "@vendor_ts__serde_spanned-0.6.8//:serde_spanned", "@vendor_ts__toml_datetime-0.6.8//:toml_datetime", "@vendor_ts__toml_edit-0.22.24//:toml_edit", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.8.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.8.bazel index 2f1b87c6a2e..248d2c4ec36 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.8.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_datetime-0.6.8.bazel @@ -84,6 +84,6 @@ rust_library( }), version = "0.6.8", deps = [ - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel index 6ef0d9a4468..c539ad29ce8 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.toml_edit-0.22.24.bazel @@ -87,7 +87,7 @@ rust_library( version = "0.22.24", deps = [ "@vendor_ts__indexmap-2.7.0//:indexmap", - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", "@vendor_ts__serde_spanned-0.6.8//:serde_spanned", "@vendor_ts__toml_datetime-0.6.8//:toml_datetime", "@vendor_ts__winnow-0.7.3//:winnow", diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel index b82896b5d1f..f4e54984e8b 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.tracing-attributes-0.1.28.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "0.1.28", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel index df6d10a847a..5e2ddffce75 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.triomphe-0.1.14.bazel @@ -87,7 +87,7 @@ rust_library( }), version = "0.1.14", deps = [ - "@vendor_ts__serde-1.0.218//:serde", + "@vendor_ts__serde-1.0.219//:serde", "@vendor_ts__stable_deref_trait-1.2.0//:stable_deref_trait", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel index 8e6b5f0e47a..35041989b3d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-backend-0.2.99.bazel @@ -87,9 +87,9 @@ rust_library( deps = [ "@vendor_ts__bumpalo-3.16.0//:bumpalo", "@vendor_ts__log-0.4.25//:log", - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", "@vendor_ts__wasm-bindgen-shared-0.2.99//:wasm_bindgen_shared", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.99.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.99.bazel index c0b07b27ac2..4523fef57ff 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.99.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-0.2.99.bazel @@ -85,7 +85,7 @@ rust_proc_macro( }), version = "0.2.99", deps = [ - "@vendor_ts__quote-1.0.38//:quote", + "@vendor_ts__quote-1.0.40//:quote", "@vendor_ts__wasm-bindgen-macro-support-0.2.99//:wasm_bindgen_macro_support", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel index 97d5fe34087..c624819b43d 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.wasm-bindgen-macro-support-0.2.99.bazel @@ -85,9 +85,9 @@ rust_library( }), version = "0.2.99", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", "@vendor_ts__wasm-bindgen-backend-0.2.99//:wasm_bindgen_backend", "@vendor_ts__wasm-bindgen-shared-0.2.99//:wasm_bindgen_shared", ], diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-0.58.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-0.58.0.bazel new file mode 100644 index 00000000000..cc4916d9c7c --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-0.58.0.bazel @@ -0,0 +1,87 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.58.0", + deps = [ + "@vendor_ts__windows-core-0.58.0//:windows_core", + "@vendor_ts__windows-targets-0.52.6//:windows_targets", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.58.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.58.0.bazel new file mode 100644 index 00000000000..232bf249660 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-core-0.58.0.bazel @@ -0,0 +1,92 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_core", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + proc_macro_deps = [ + "@vendor_ts__windows-implement-0.58.0//:windows_implement", + "@vendor_ts__windows-interface-0.58.0//:windows_interface", + ], + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-core", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.58.0", + deps = [ + "@vendor_ts__windows-result-0.2.0//:windows_result", + "@vendor_ts__windows-strings-0.1.0//:windows_strings", + "@vendor_ts__windows-targets-0.52.6//:windows_targets", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_salsa-macros-0.0.266.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.58.0.bazel similarity index 92% rename from misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_salsa-macros-0.0.266.bazel rename to misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.58.0.bazel index 53313071100..d9bbe3ad12c 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.ra_ap_salsa-macros-0.0.266.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-implement-0.58.0.bazel @@ -11,7 +11,7 @@ load("@rules_rust//rust:defs.bzl", "rust_proc_macro") package(default_visibility = ["//visibility:public"]) rust_proc_macro( - name = "ra_salsa_macros", + name = "windows_implement", srcs = glob( include = ["**/*.rs"], allow_empty = True, @@ -35,7 +35,7 @@ rust_proc_macro( ], tags = [ "cargo-bazel", - "crate-name=ra_ap_salsa-macros", + "crate-name=windows-implement", "manual", "noclippy", "norustfmt", @@ -79,11 +79,10 @@ rust_proc_macro( "@rules_rust//rust/platform:x86_64-unknown-uefi": [], "//conditions:default": ["@platforms//:incompatible"], }), - version = "0.0.266", + version = "0.58.0", deps = [ - "@vendor_ts__heck-0.4.1//:heck", - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.58.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.58.0.bazel new file mode 100644 index 00000000000..875df272d2a --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-interface-0.58.0.bazel @@ -0,0 +1,88 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_proc_macro") + +package(default_visibility = ["//visibility:public"]) + +rust_proc_macro( + name = "windows_interface", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-interface", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.58.0", + deps = [ + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.1.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.1.bazel new file mode 100644 index 00000000000..9c42ef20e0b --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-link-0.1.1.bazel @@ -0,0 +1,83 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_link", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-link", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.1", +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.2.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.2.0.bazel new file mode 100644 index 00000000000..f32ca5f6cde --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-result-0.2.0.bazel @@ -0,0 +1,86 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_result", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-result", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.2.0", + deps = [ + "@vendor_ts__windows-targets-0.52.6//:windows_targets", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.1.0.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.1.0.bazel new file mode 100644 index 00000000000..1d38767dcb2 --- /dev/null +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.windows-strings-0.1.0.bazel @@ -0,0 +1,87 @@ +############################################################################### +# @generated +# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To +# regenerate this file, run the following: +# +# bazel run @@//misc/bazel/3rdparty:vendor_tree_sitter_extractors +############################################################################### + +load("@rules_rust//rust:defs.bzl", "rust_library") + +package(default_visibility = ["//visibility:public"]) + +rust_library( + name = "windows_strings", + srcs = glob( + include = ["**/*.rs"], + allow_empty = True, + ), + compile_data = glob( + include = ["**"], + allow_empty = True, + exclude = [ + "**/* *", + ".tmp_git_root/**/*", + "BUILD", + "BUILD.bazel", + "WORKSPACE", + "WORKSPACE.bazel", + ], + ), + crate_root = "src/lib.rs", + edition = "2021", + rustc_flags = [ + "--cap-lints=allow", + ], + tags = [ + "cargo-bazel", + "crate-name=windows-strings", + "manual", + "noclippy", + "norustfmt", + ], + target_compatible_with = select({ + "@rules_rust//rust/platform:aarch64-apple-darwin": [], + "@rules_rust//rust/platform:aarch64-apple-ios": [], + "@rules_rust//rust/platform:aarch64-apple-ios-sim": [], + "@rules_rust//rust/platform:aarch64-linux-android": [], + "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [], + "@rules_rust//rust/platform:aarch64-unknown-fuchsia": [], + "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [], + "@rules_rust//rust/platform:aarch64-unknown-uefi": [], + "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:armv7-linux-androideabi": [], + "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [], + "@rules_rust//rust/platform:i686-apple-darwin": [], + "@rules_rust//rust/platform:i686-linux-android": [], + "@rules_rust//rust/platform:i686-pc-windows-msvc": [], + "@rules_rust//rust/platform:i686-unknown-freebsd": [], + "@rules_rust//rust/platform:i686-unknown-linux-gnu": [], + "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [], + "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [], + "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [], + "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [], + "@rules_rust//rust/platform:thumbv7em-none-eabi": [], + "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [], + "@rules_rust//rust/platform:wasm32-unknown-unknown": [], + "@rules_rust//rust/platform:wasm32-wasip1": [], + "@rules_rust//rust/platform:x86_64-apple-darwin": [], + "@rules_rust//rust/platform:x86_64-apple-ios": [], + "@rules_rust//rust/platform:x86_64-linux-android": [], + "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [], + "@rules_rust//rust/platform:x86_64-unknown-freebsd": [], + "@rules_rust//rust/platform:x86_64-unknown-fuchsia": [], + "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [], + "@rules_rust//rust/platform:x86_64-unknown-none": [], + "@rules_rust//rust/platform:x86_64-unknown-uefi": [], + "//conditions:default": ["@platforms//:incompatible"], + }), + version = "0.1.0", + deps = [ + "@vendor_ts__windows-result-0.2.0//:windows_result", + "@vendor_ts__windows-targets-0.52.6//:windows_targets", + ], +) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel index a3bb7ebae97..c896b4653f1 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.7.35.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "0.7.35", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel index 0f6480931fc..7e87cf6b1bf 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/BUILD.zerocopy-derive-0.8.20.bazel @@ -81,8 +81,8 @@ rust_proc_macro( }), version = "0.8.20", deps = [ - "@vendor_ts__proc-macro2-1.0.93//:proc_macro2", - "@vendor_ts__quote-1.0.38//:quote", - "@vendor_ts__syn-2.0.98//:syn", + "@vendor_ts__proc-macro2-1.0.94//:proc_macro2", + "@vendor_ts__quote-1.0.40//:quote", + "@vendor_ts__syn-2.0.100//:syn", ], ) diff --git a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl index 817891809d2..b011a2c9800 100644 --- a/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl +++ b/misc/bazel/3rdparty/tree_sitter_extractors_deps/defs.bzl @@ -296,7 +296,7 @@ def aliases( _NORMAL_DEPENDENCIES = { "ruby/extractor": { _COMMON_CONDITION: { - "clap": Label("@vendor_ts__clap-4.5.31//:clap"), + "clap": Label("@vendor_ts__clap-4.5.32//:clap"), "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), "lazy_static": Label("@vendor_ts__lazy_static-1.5.0//:lazy_static"), "rayon": Label("@vendor_ts__rayon-1.10.0//:rayon"), @@ -310,14 +310,14 @@ _NORMAL_DEPENDENCIES = { }, "rust/ast-generator": { _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.96//:anyhow"), - "either": Label("@vendor_ts__either-1.14.0//:either"), + "anyhow": Label("@vendor_ts__anyhow-1.0.97//:anyhow"), + "either": Label("@vendor_ts__either-1.15.0//:either"), "itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"), "mustache": Label("@vendor_ts__mustache-0.9.0//:mustache"), - "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.93//:proc_macro2"), - "quote": Label("@vendor_ts__quote-1.0.38//:quote"), - "serde": Label("@vendor_ts__serde-1.0.218//:serde"), - "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx"), + "proc-macro2": Label("@vendor_ts__proc-macro2-1.0.94//:proc_macro2"), + "quote": Label("@vendor_ts__quote-1.0.40//:quote"), + "serde": Label("@vendor_ts__serde-1.0.219//:serde"), + "stdx": Label("@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx"), "ungrammar": Label("@vendor_ts__ungrammar-1.16.1//:ungrammar"), }, }, @@ -325,33 +325,33 @@ _NORMAL_DEPENDENCIES = { }, "rust/extractor": { _COMMON_CONDITION: { - "anyhow": Label("@vendor_ts__anyhow-1.0.96//:anyhow"), + "anyhow": Label("@vendor_ts__anyhow-1.0.97//:anyhow"), "argfile": Label("@vendor_ts__argfile-0.2.1//:argfile"), - "chalk-ir": Label("@vendor_ts__chalk-ir-0.99.0//:chalk_ir"), - "chrono": Label("@vendor_ts__chrono-0.4.39//:chrono"), - "clap": Label("@vendor_ts__clap-4.5.31//:clap"), + "chalk-ir": Label("@vendor_ts__chalk-ir-0.100.0//:chalk_ir"), + "chrono": Label("@vendor_ts__chrono-0.4.40//:chrono"), + "clap": Label("@vendor_ts__clap-4.5.32//:clap"), "dunce": Label("@vendor_ts__dunce-1.0.5//:dunce"), "figment": Label("@vendor_ts__figment-0.10.19//:figment"), "glob": Label("@vendor_ts__glob-0.3.2//:glob"), "itertools": Label("@vendor_ts__itertools-0.14.0//:itertools"), "num-traits": Label("@vendor_ts__num-traits-0.2.19//:num_traits"), - "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.266//:ra_ap_base_db"), - "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.266//:ra_ap_cfg"), - "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.266//:ra_ap_hir"), - "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.266//:ra_ap_hir_def"), - "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.266//:ra_ap_hir_expand"), - "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.266//:ra_ap_hir_ty"), - "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.266//:ra_ap_ide_db"), - "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.266//:ra_ap_intern"), - "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.266//:ra_ap_load_cargo"), - "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.266//:ra_ap_parser"), - "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.266//:ra_ap_paths"), - "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.266//:ra_ap_project_model"), - "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.266//:ra_ap_span"), - "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.266//:ra_ap_syntax"), - "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.266//:ra_ap_vfs"), - "serde": Label("@vendor_ts__serde-1.0.218//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.139//:serde_json"), + "ra_ap_base_db": Label("@vendor_ts__ra_ap_base_db-0.0.270//:ra_ap_base_db"), + "ra_ap_cfg": Label("@vendor_ts__ra_ap_cfg-0.0.270//:ra_ap_cfg"), + "ra_ap_hir": Label("@vendor_ts__ra_ap_hir-0.0.270//:ra_ap_hir"), + "ra_ap_hir_def": Label("@vendor_ts__ra_ap_hir_def-0.0.270//:ra_ap_hir_def"), + "ra_ap_hir_expand": Label("@vendor_ts__ra_ap_hir_expand-0.0.270//:ra_ap_hir_expand"), + "ra_ap_hir_ty": Label("@vendor_ts__ra_ap_hir_ty-0.0.270//:ra_ap_hir_ty"), + "ra_ap_ide_db": Label("@vendor_ts__ra_ap_ide_db-0.0.270//:ra_ap_ide_db"), + "ra_ap_intern": Label("@vendor_ts__ra_ap_intern-0.0.270//:ra_ap_intern"), + "ra_ap_load-cargo": Label("@vendor_ts__ra_ap_load-cargo-0.0.270//:ra_ap_load_cargo"), + "ra_ap_parser": Label("@vendor_ts__ra_ap_parser-0.0.270//:ra_ap_parser"), + "ra_ap_paths": Label("@vendor_ts__ra_ap_paths-0.0.270//:ra_ap_paths"), + "ra_ap_project_model": Label("@vendor_ts__ra_ap_project_model-0.0.270//:ra_ap_project_model"), + "ra_ap_span": Label("@vendor_ts__ra_ap_span-0.0.270//:ra_ap_span"), + "ra_ap_syntax": Label("@vendor_ts__ra_ap_syntax-0.0.270//:ra_ap_syntax"), + "ra_ap_vfs": Label("@vendor_ts__ra_ap_vfs-0.0.270//:ra_ap_vfs"), + "serde": Label("@vendor_ts__serde-1.0.219//:serde"), + "serde_json": Label("@vendor_ts__serde_json-1.0.140//:serde_json"), "serde_with": Label("@vendor_ts__serde_with-3.12.0//:serde_with"), "toml": Label("@vendor_ts__toml-0.8.20//:toml"), "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), @@ -362,13 +362,13 @@ _NORMAL_DEPENDENCIES = { }, "rust/extractor/macros": { _COMMON_CONDITION: { - "quote": Label("@vendor_ts__quote-1.0.38//:quote"), - "syn": Label("@vendor_ts__syn-2.0.98//:syn"), + "quote": Label("@vendor_ts__quote-1.0.40//:quote"), + "syn": Label("@vendor_ts__syn-2.0.100//:syn"), }, }, "shared/tree-sitter-extractor": { _COMMON_CONDITION: { - "chrono": Label("@vendor_ts__chrono-0.4.39//:chrono"), + "chrono": Label("@vendor_ts__chrono-0.4.40//:chrono"), "encoding": Label("@vendor_ts__encoding-0.2.33//:encoding"), "flate2": Label("@vendor_ts__flate2-1.1.0//:flate2"), "globset": Label("@vendor_ts__globset-0.4.15//:globset"), @@ -376,8 +376,8 @@ _NORMAL_DEPENDENCIES = { "num_cpus": Label("@vendor_ts__num_cpus-1.16.0//:num_cpus"), "rayon": Label("@vendor_ts__rayon-1.10.0//:rayon"), "regex": Label("@vendor_ts__regex-1.11.1//:regex"), - "serde": Label("@vendor_ts__serde-1.0.218//:serde"), - "serde_json": Label("@vendor_ts__serde_json-1.0.139//:serde_json"), + "serde": Label("@vendor_ts__serde-1.0.219//:serde"), + "serde_json": Label("@vendor_ts__serde_json-1.0.140//:serde_json"), "tracing": Label("@vendor_ts__tracing-0.1.41//:tracing"), "tracing-subscriber": Label("@vendor_ts__tracing-subscriber-0.3.19//:tracing_subscriber"), "tree-sitter": Label("@vendor_ts__tree-sitter-0.24.6//:tree_sitter"), @@ -392,7 +392,7 @@ _NORMAL_ALIASES = { }, "rust/ast-generator": { _COMMON_CONDITION: { - Label("@vendor_ts__ra_ap_stdx-0.0.266//:ra_ap_stdx"): "stdx", + Label("@vendor_ts__ra_ap_stdx-0.0.270//:ra_ap_stdx"): "stdx", }, }, "rust/autobuild": { @@ -595,6 +595,7 @@ _CONDITIONS = { "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:i686-pc-windows-msvc"], "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"], + "cfg(all(target_os = \"linux\", not(target_env = \"ohos\")))": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(all(windows, not(target_vendor = \"win7\")))": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"], "cfg(any())": [], "cfg(any(target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"hurd\", target_os = \"illumos\", all(target_os = \"horizon\", target_arch = \"arm\")))": ["@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-freebsd"], @@ -605,11 +606,11 @@ _CONDITIONS = { "cfg(any(target_os = \"macos\", target_os = \"ios\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios"], "cfg(any(target_os = \"macos\", target_os = \"openbsd\", target_os = \"vita\", target_os = \"emscripten\"))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin"], "cfg(any(target_pointer_width = \"8\", target_pointer_width = \"16\", target_pointer_width = \"32\"))": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1"], + "cfg(loom)": [], "cfg(not(windows))": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:aarch64-apple-ios", "@rules_rust//rust/platform:aarch64-apple-ios-sim", "@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:aarch64-unknown-fuchsia", "@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710", "@rules_rust//rust/platform:aarch64-unknown-uefi", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:i686-unknown-freebsd", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:riscv32imc-unknown-none-elf", "@rules_rust//rust/platform:riscv64gc-unknown-none-elf", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:thumbv7em-none-eabi", "@rules_rust//rust/platform:thumbv8m.main-none-eabi", "@rules_rust//rust/platform:wasm32-unknown-unknown", "@rules_rust//rust/platform:wasm32-wasip1", "@rules_rust//rust/platform:x86_64-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-ios", "@rules_rust//rust/platform:x86_64-linux-android", "@rules_rust//rust/platform:x86_64-unknown-freebsd", "@rules_rust//rust/platform:x86_64-unknown-fuchsia", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu", "@rules_rust//rust/platform:x86_64-unknown-none", "@rules_rust//rust/platform:x86_64-unknown-uefi"], "cfg(target_os = \"android\")": ["@rules_rust//rust/platform:aarch64-linux-android", "@rules_rust//rust/platform:armv7-linux-androideabi", "@rules_rust//rust/platform:i686-linux-android", "@rules_rust//rust/platform:x86_64-linux-android"], "cfg(target_os = \"haiku\")": [], "cfg(target_os = \"hermit\")": [], - "cfg(target_os = \"linux\")": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu", "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu", "@rules_rust//rust/platform:arm-unknown-linux-gnueabi", "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi", "@rules_rust//rust/platform:i686-unknown-linux-gnu", "@rules_rust//rust/platform:powerpc-unknown-linux-gnu", "@rules_rust//rust/platform:s390x-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-linux-gnu", "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"], "cfg(target_os = \"macos\")": ["@rules_rust//rust/platform:aarch64-apple-darwin", "@rules_rust//rust/platform:i686-apple-darwin", "@rules_rust//rust/platform:x86_64-apple-darwin"], "cfg(target_os = \"netbsd\")": [], "cfg(target_os = \"redox\")": [], @@ -678,12 +679,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__always-assert-0.2.0", - sha256 = "a1078fa1ce1e34b1872d8611ad921196d76bdd7027e949fbe31231abde201892", + name = "vendor_ts__allocator-api2-0.2.21", + sha256 = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923", type = "tar.gz", - urls = ["https://static.crates.io/crates/always-assert/0.2.0/download"], - strip_prefix = "always-assert-0.2.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.always-assert-0.2.0.bazel"), + urls = ["https://static.crates.io/crates/allocator-api2/0.2.21/download"], + strip_prefix = "allocator-api2-0.2.21", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.allocator-api2-0.2.21.bazel"), ) maybe( @@ -758,12 +759,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__anyhow-1.0.96", - sha256 = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4", + name = "vendor_ts__anyhow-1.0.97", + sha256 = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f", type = "tar.gz", - urls = ["https://static.crates.io/crates/anyhow/1.0.96/download"], - strip_prefix = "anyhow-1.0.96", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.96.bazel"), + urls = ["https://static.crates.io/crates/anyhow/1.0.97/download"], + strip_prefix = "anyhow-1.0.97", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.anyhow-1.0.97.bazel"), ) maybe( @@ -846,6 +847,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.borsh-1.5.3.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__boxcar-0.2.11", + sha256 = "6740c6e2fc6360fa57c35214c7493826aee95993926092606f27c983b40837be", + type = "tar.gz", + urls = ["https://static.crates.io/crates/boxcar/0.2.11/download"], + strip_prefix = "boxcar-0.2.11", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.boxcar-0.2.11.bazel"), + ) + maybe( http_archive, name = "vendor_ts__bstr-1.11.3", @@ -948,82 +959,82 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__chalk-derive-0.99.0", - sha256 = "572583d9b97f9d277e5c7607f8239a30e2e04d3ed3b47c87d1cb2152ae724073", + name = "vendor_ts__chalk-derive-0.100.0", + sha256 = "ab2d131019373f0d0d1f2af0abd4f719739f6583c1b33965112455f643a910af", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-derive/0.99.0/download"], - strip_prefix = "chalk-derive-0.99.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.99.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-derive/0.100.0/download"], + strip_prefix = "chalk-derive-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-derive-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chalk-ir-0.99.0", - sha256 = "e60e0ef9c81dce1336a9ed3c76f08775f5b623151d96d85ba45f7b10de76d1c7", + name = "vendor_ts__chalk-ir-0.100.0", + sha256 = "4f114996bda14c0213f014a4ef31a7867dcf5f539a3900477fc6b20138e7a17b", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-ir/0.99.0/download"], - strip_prefix = "chalk-ir-0.99.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-ir-0.99.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-ir/0.100.0/download"], + strip_prefix = "chalk-ir-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-ir-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chalk-recursive-0.99.0", - sha256 = "5a06350d614e22b03a69b8105e3541614450a7ea48bc58ecc6c6bd92731a3995", + name = "vendor_ts__chalk-recursive-0.100.0", + sha256 = "551e956e031c09057c7b21f17d48d91de99c9b6b6e34bceaf5e7202d71021268", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-recursive/0.99.0/download"], - strip_prefix = "chalk-recursive-0.99.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-recursive-0.99.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-recursive/0.100.0/download"], + strip_prefix = "chalk-recursive-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-recursive-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chalk-solve-0.99.0", - sha256 = "0e428761e9b55bee516bfe2457caed8b6d1b86353f92ae825bbe438a36ce91e8", + name = "vendor_ts__chalk-solve-0.100.0", + sha256 = "cd7ca50181156ce649efe8e5dd00580f573651554e4dcd11afa4e2ac93f53324", type = "tar.gz", - urls = ["https://static.crates.io/crates/chalk-solve/0.99.0/download"], - strip_prefix = "chalk-solve-0.99.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-solve-0.99.0.bazel"), + urls = ["https://static.crates.io/crates/chalk-solve/0.100.0/download"], + strip_prefix = "chalk-solve-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chalk-solve-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__chrono-0.4.39", - sha256 = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825", + name = "vendor_ts__chrono-0.4.40", + sha256 = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c", type = "tar.gz", - urls = ["https://static.crates.io/crates/chrono/0.4.39/download"], - strip_prefix = "chrono-0.4.39", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.39.bazel"), + urls = ["https://static.crates.io/crates/chrono/0.4.40/download"], + strip_prefix = "chrono-0.4.40", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.chrono-0.4.40.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap-4.5.31", - sha256 = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767", + name = "vendor_ts__clap-4.5.32", + sha256 = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap/4.5.31/download"], - strip_prefix = "clap-4.5.31", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.31.bazel"), + urls = ["https://static.crates.io/crates/clap/4.5.32/download"], + strip_prefix = "clap-4.5.32", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap-4.5.32.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_builder-4.5.31", - sha256 = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863", + name = "vendor_ts__clap_builder-4.5.32", + sha256 = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_builder/4.5.31/download"], - strip_prefix = "clap_builder-4.5.31", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.31.bazel"), + urls = ["https://static.crates.io/crates/clap_builder/4.5.32/download"], + strip_prefix = "clap_builder-4.5.32", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_builder-4.5.32.bazel"), ) maybe( http_archive, - name = "vendor_ts__clap_derive-4.5.28", - sha256 = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed", + name = "vendor_ts__clap_derive-4.5.32", + sha256 = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7", type = "tar.gz", - urls = ["https://static.crates.io/crates/clap_derive/4.5.28/download"], - strip_prefix = "clap_derive-4.5.28", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.5.28.bazel"), + urls = ["https://static.crates.io/crates/clap_derive/4.5.32/download"], + strip_prefix = "clap_derive-4.5.32", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.clap_derive-4.5.32.bazel"), ) maybe( @@ -1116,6 +1127,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-epoch-0.9.18.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__crossbeam-queue-0.3.12", + sha256 = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115", + type = "tar.gz", + urls = ["https://static.crates.io/crates/crossbeam-queue/0.3.12/download"], + strip_prefix = "crossbeam-queue-0.3.12", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.crossbeam-queue-0.3.12.bazel"), + ) + maybe( http_archive, name = "vendor_ts__crossbeam-utils-0.8.21", @@ -1166,6 +1187,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dashmap-5.5.3.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__dashmap-6.1.0", + sha256 = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf", + type = "tar.gz", + urls = ["https://static.crates.io/crates/dashmap/6.1.0/download"], + strip_prefix = "dashmap-6.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.dashmap-6.1.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__deranged-0.3.11", @@ -1198,12 +1229,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__either-1.14.0", - sha256 = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d", + name = "vendor_ts__either-1.15.0", + sha256 = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719", type = "tar.gz", - urls = ["https://static.crates.io/crates/either/1.14.0/download"], - strip_prefix = "either-1.14.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.either-1.14.0.bazel"), + urls = ["https://static.crates.io/crates/either/1.15.0/download"], + strip_prefix = "either-1.15.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.either-1.15.0.bazel"), ) maybe( @@ -1346,6 +1377,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fnv-1.0.7.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__foldhash-0.1.5", + sha256 = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/foldhash/0.1.5/download"], + strip_prefix = "foldhash-0.1.5", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.foldhash-0.1.5.bazel"), + ) + maybe( http_archive, name = "vendor_ts__fs-err-2.11.0", @@ -1376,6 +1417,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.fst-0.4.7.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__generator-0.8.4", + sha256 = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd", + type = "tar.gz", + urls = ["https://static.crates.io/crates/generator/0.8.4/download"], + strip_prefix = "generator-0.8.4", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.generator-0.8.4.bazel"), + ) + maybe( http_archive, name = "vendor_ts__getrandom-0.3.1", @@ -1438,12 +1489,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__heck-0.4.1", - sha256 = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8", + name = "vendor_ts__hashlink-0.10.0", + sha256 = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1", type = "tar.gz", - urls = ["https://static.crates.io/crates/heck/0.4.1/download"], - strip_prefix = "heck-0.4.1", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.heck-0.4.1.bazel"), + urls = ["https://static.crates.io/crates/hashlink/0.10.0/download"], + strip_prefix = "hashlink-0.10.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.hashlink-0.10.0.bazel"), ) maybe( @@ -1726,6 +1777,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.log-0.4.25.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__loom-0.7.2", + sha256 = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca", + type = "tar.gz", + urls = ["https://static.crates.io/crates/loom/0.7.2/download"], + strip_prefix = "loom-0.7.2", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.loom-0.7.2.bazel"), + ) + maybe( http_archive, name = "vendor_ts__lz4_flex-0.11.3", @@ -1996,6 +2057,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.pin-project-lite-0.2.16.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__portable-atomic-1.11.0", + sha256 = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/portable-atomic/1.11.0/download"], + strip_prefix = "portable-atomic-1.11.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.portable-atomic-1.11.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__powerfmt-0.2.0", @@ -2018,12 +2089,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__proc-macro2-1.0.93", - sha256 = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99", + name = "vendor_ts__proc-macro2-1.0.94", + sha256 = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84", type = "tar.gz", - urls = ["https://static.crates.io/crates/proc-macro2/1.0.93/download"], - strip_prefix = "proc-macro2-1.0.93", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.93.bazel"), + urls = ["https://static.crates.io/crates/proc-macro2/1.0.94/download"], + strip_prefix = "proc-macro2-1.0.94", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.proc-macro2-1.0.94.bazel"), ) maybe( @@ -2038,342 +2109,332 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__quote-1.0.38", - sha256 = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc", + name = "vendor_ts__quote-1.0.40", + sha256 = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d", type = "tar.gz", - urls = ["https://static.crates.io/crates/quote/1.0.38/download"], - strip_prefix = "quote-1.0.38", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.quote-1.0.38.bazel"), + urls = ["https://static.crates.io/crates/quote/1.0.40/download"], + strip_prefix = "quote-1.0.40", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.quote-1.0.40.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_abi-0.97.0", - sha256 = "3829c3355d1681ffeaf1450ec71edcdace6820fe2e86469d8fc1ad45e2c96460", + name = "vendor_ts__ra-ap-rustc_abi-0.100.0", + sha256 = "f1651b0f7e8c3eb7c27a88f39d277e69c32bfe58e3be174d286c1a24d6a7a4d8", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.97.0/download"], - strip_prefix = "ra-ap-rustc_abi-0.97.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.97.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_abi/0.100.0/download"], + strip_prefix = "ra-ap-rustc_abi-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_abi-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_hashes-0.97.0", - sha256 = "1bd4d6d4c434bec08e02370a4f64a4985312097215a62e82d0f757f3a98e502e", + name = "vendor_ts__ra-ap-rustc_hashes-0.100.0", + sha256 = "2bcd85e93dc0ea850bcfe7957a115957df799ccbc9eea488bdee5ec6780d212b", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.97.0/download"], - strip_prefix = "ra-ap-rustc_hashes-0.97.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.97.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_hashes/0.100.0/download"], + strip_prefix = "ra-ap-rustc_hashes-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_hashes-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_index-0.97.0", - sha256 = "bad6fc4bd7522e31096e2de5b0351144fe0684b608791ee26c842bf2da1b19ae", + name = "vendor_ts__ra-ap-rustc_index-0.100.0", + sha256 = "62b295fc0640cd9fe0ecab872ee4a17a96f90a3998ec9f0c4765e9b8415c12cc", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.97.0/download"], - strip_prefix = "ra-ap-rustc_index-0.97.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.97.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_index/0.100.0/download"], + strip_prefix = "ra-ap-rustc_index-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_index_macros-0.97.0", - sha256 = "cfb234e1f84b92be45276c3025bee18789e9bc95bec8789bec961e78edb01c52", + name = "vendor_ts__ra-ap-rustc_index_macros-0.100.0", + sha256 = "c675f4257023aa933882906f13802cae287e88cc39ab13cbb96809083db0c801", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.97.0/download"], - strip_prefix = "ra-ap-rustc_index_macros-0.97.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.97.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_index_macros/0.100.0/download"], + strip_prefix = "ra-ap-rustc_index_macros-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_index_macros-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_lexer-0.97.0", - sha256 = "7a3a40bd11dc43d1cb110e730b80620cf8102f4cca8920a02b65954da0ed931f", + name = "vendor_ts__ra-ap-rustc_lexer-0.100.0", + sha256 = "c8358702c2a510ea84ba5801ddc047d9ad9520902cfb0e6173277610cdce2c9c", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.97.0/download"], - strip_prefix = "ra-ap-rustc_lexer-0.97.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.97.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_lexer/0.100.0/download"], + strip_prefix = "ra-ap-rustc_lexer-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_lexer-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_parse_format-0.97.0", - sha256 = "5feb877478994cb4c0c0c7a5116a352eefc0634aefc8636feb00a893fa5b7135", + name = "vendor_ts__ra-ap-rustc_parse_format-0.100.0", + sha256 = "b98f402011d46732c35c47bfd111dec0495747fef2ec900ddee7fe15d78449a7", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.97.0/download"], - strip_prefix = "ra-ap-rustc_parse_format-0.97.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.97.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_parse_format/0.100.0/download"], + strip_prefix = "ra-ap-rustc_parse_format-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_parse_format-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.97.0", - sha256 = "a76774d35934d464c4115908cde16f76a4f7e540fe1eea6b79336c556e37bdd3", + name = "vendor_ts__ra-ap-rustc_pattern_analysis-0.100.0", + sha256 = "bef3ff73fa4653252ffe1d1e9177a446f49ef46d97140e4816b7ff2dad59ed53", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.97.0/download"], - strip_prefix = "ra-ap-rustc_pattern_analysis-0.97.0", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.97.0.bazel"), + urls = ["https://static.crates.io/crates/ra-ap-rustc_pattern_analysis/0.100.0/download"], + strip_prefix = "ra-ap-rustc_pattern_analysis-0.100.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra-ap-rustc_pattern_analysis-0.100.0.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_base_db-0.0.266", - sha256 = "5d8e4a327f1a8ace5afced54ebaa1a34f8cf0bb535a28aefb8300e8ea49a7d6e", + name = "vendor_ts__ra_ap_base_db-0.0.270", + sha256 = "4baa9734d254af14fd603528ad594650dea601b1764492bd39988da38598ae67", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.266/download"], - strip_prefix = "ra_ap_base_db-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_base_db/0.0.270/download"], + strip_prefix = "ra_ap_base_db-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_base_db-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_cfg-0.0.266", - sha256 = "4d974450788b1f90243c5f2231875ed4d7087444975c0190a1c2cb02c3ed465d", + name = "vendor_ts__ra_ap_cfg-0.0.270", + sha256 = "0ef2ba45636c5e585040c0c4bee640737a6001b08309f1a25ca78cf04abfbf90", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.266/download"], - strip_prefix = "ra_ap_cfg-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_cfg/0.0.270/download"], + strip_prefix = "ra_ap_cfg-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_cfg-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_edition-0.0.266", - sha256 = "c3b1b961a84cb09a4e06e44d06b2e77bcf546d0c2623df9545ba9cc694880989", + name = "vendor_ts__ra_ap_edition-0.0.270", + sha256 = "8955c1484d5e7274f755187788ba0d51eb149f870c69cdf0d87c3b7edea20ea0", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.266/download"], - strip_prefix = "ra_ap_edition-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_edition/0.0.270/download"], + strip_prefix = "ra_ap_edition-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_edition-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir-0.0.266", - sha256 = "ff0672e35a6cf12333cb6b9e3fd18aba4bc724fa7c7b24c3253df4730be1f9c3", + name = "vendor_ts__ra_ap_hir-0.0.270", + sha256 = "a51d7955beff2212701b149bea36d4cf2dc0f5cd129652c9bcf0cb5c0b021078", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.266/download"], - strip_prefix = "ra_ap_hir-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir/0.0.270/download"], + strip_prefix = "ra_ap_hir-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_def-0.0.266", - sha256 = "fde2fb9361257e31e73e63eb2d07445ea3fd4cd1e7bae7f45e7ba82bcfcde29a", + name = "vendor_ts__ra_ap_hir_def-0.0.270", + sha256 = "e5c97e617e4c585d24b3d4f668861452aedddfbe0262f4c53235dcea77e62f9b", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.266/download"], - strip_prefix = "ra_ap_hir_def-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_def/0.0.270/download"], + strip_prefix = "ra_ap_hir_def-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_def-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_expand-0.0.266", - sha256 = "1823b649710bf1829c894f774dfe66acb33a3e5bc7409ff7836cd19f6e09c250", + name = "vendor_ts__ra_ap_hir_expand-0.0.270", + sha256 = "be57c0d7e3f2180dd8ea584b11447f34060eadc06f0f6d559e2a790f6e91b6c5", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.266/download"], - strip_prefix = "ra_ap_hir_expand-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_expand/0.0.270/download"], + strip_prefix = "ra_ap_hir_expand-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_expand-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_hir_ty-0.0.266", - sha256 = "72a591a02787bd2e938c25fceb1f831d0929b9c08726e6d831f85c4a9fba04b5", + name = "vendor_ts__ra_ap_hir_ty-0.0.270", + sha256 = "f260f35748f3035b46a8afcdebda7cb75d95c24750105fad86101d09a9d387c8", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.266/download"], - strip_prefix = "ra_ap_hir_ty-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_hir_ty/0.0.270/download"], + strip_prefix = "ra_ap_hir_ty-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_hir_ty-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_ide_db-0.0.266", - sha256 = "c74386061453edc3ebfd52141c7c3cde109a7427faff9792a303c3c09a762a01", + name = "vendor_ts__ra_ap_ide_db-0.0.270", + sha256 = "0426263be26e27cb55a3b9ef88b120511b66fe7d9b418a2473d6d5f3ac2fe0a6", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.266/download"], - strip_prefix = "ra_ap_ide_db-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_ide_db/0.0.270/download"], + strip_prefix = "ra_ap_ide_db-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_ide_db-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_intern-0.0.266", - sha256 = "8239ffde688b558a4335f03d14fa42dcebb203f452367830554b18e17ff1c683", + name = "vendor_ts__ra_ap_intern-0.0.270", + sha256 = "f6ea8c9615b3b0688cf557e7310dbd9432f43860c8ea766d54f4416cbecf3571", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.266/download"], - strip_prefix = "ra_ap_intern-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_intern/0.0.270/download"], + strip_prefix = "ra_ap_intern-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_intern-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_load-cargo-0.0.266", - sha256 = "01dd50ca287042b06ca3cc62b60e6891bacee3886d39381d26f9f966e509b1c7", + name = "vendor_ts__ra_ap_load-cargo-0.0.270", + sha256 = "570907e16725c13a678bfd8050ce8839af2831da042a0878b75ee8c41b0f7b0c", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.266/download"], - strip_prefix = "ra_ap_load-cargo-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_load-cargo/0.0.270/download"], + strip_prefix = "ra_ap_load-cargo-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_load-cargo-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_mbe-0.0.266", - sha256 = "c193592a0d1dcd315cf8c60f25d37a15c6b50c2b58bfbc6eac38b123e45c8c21", + name = "vendor_ts__ra_ap_mbe-0.0.270", + sha256 = "e893fe03b04b30c9b5a339ac2bf39ce32ac9c05a8b50121b7d89ce658346e164", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.266/download"], - strip_prefix = "ra_ap_mbe-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_mbe/0.0.270/download"], + strip_prefix = "ra_ap_mbe-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_mbe-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_parser-0.0.266", - sha256 = "b380f96951dd56b8231eeb47884fea12c57b8515ac748eedd590b26cd156681c", + name = "vendor_ts__ra_ap_parser-0.0.270", + sha256 = "6fd9a264120968b14a66b6ba756cd7f99435385b5dbc2f0a611cf3a12221c385", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.266/download"], - strip_prefix = "ra_ap_parser-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_parser/0.0.270/download"], + strip_prefix = "ra_ap_parser-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_parser-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_paths-0.0.266", - sha256 = "0801105582f532bc59a2b5714a30966c4cf9bd3e5b66f4161763c1d974d2c7d5", + name = "vendor_ts__ra_ap_paths-0.0.270", + sha256 = "f47817351651e36b56ff3afc483b41600053c9cb7e67d945467c0abe93416032", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.266/download"], - strip_prefix = "ra_ap_paths-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_paths/0.0.270/download"], + strip_prefix = "ra_ap_paths-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_paths-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_proc_macro_api-0.0.266", - sha256 = "da377b243e376b82819f875c1c6624125d27b682a740bd4cafc30b4f496d0ffa", + name = "vendor_ts__ra_ap_proc_macro_api-0.0.270", + sha256 = "d96da3b8b9f6b813a98f5357eef303905450741f47ba90adaab8a5371b748416", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.266/download"], - strip_prefix = "ra_ap_proc_macro_api-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_proc_macro_api/0.0.270/download"], + strip_prefix = "ra_ap_proc_macro_api-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_proc_macro_api-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_profile-0.0.266", - sha256 = "4d6d1391bee4f86e56385438a2dcb739cbb96bd0fbf49799a492332d57e6db62", + name = "vendor_ts__ra_ap_profile-0.0.270", + sha256 = "13637377287c84f88a628e40229d271ef0081c0d683956bd99a6c8278a4f8b14", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.266/download"], - strip_prefix = "ra_ap_profile-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_profile/0.0.270/download"], + strip_prefix = "ra_ap_profile-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_profile-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_project_model-0.0.266", - sha256 = "e8b1ac2712d5f6a20197b360890031e64b4ea097b511f50e2cb8ab1a0e24f577", + name = "vendor_ts__ra_ap_project_model-0.0.270", + sha256 = "053c5207a638fc7a752c7a454bc952b28b0d02f0bf9f6d7ec785ec809579d8fa", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.266/download"], - strip_prefix = "ra_ap_project_model-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_project_model/0.0.270/download"], + strip_prefix = "ra_ap_project_model-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_project_model-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_salsa-0.0.266", - sha256 = "bc3a0a272f50e2ab831452bd3f4e7f8a571ccf01282d76f4a078f661135ed0ce", + name = "vendor_ts__ra_ap_query-group-macro-0.0.270", + sha256 = "0f1a38f07b442e47a234cbe2e8fd1b8a41ff0cc5123cb1cf994c5ce20edb5bd6", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_salsa/0.0.266/download"], - strip_prefix = "ra_ap_salsa-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_salsa-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_query-group-macro/0.0.270/download"], + strip_prefix = "ra_ap_query-group-macro-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_query-group-macro-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_salsa-macros-0.0.266", - sha256 = "d5d59b47a54fd5468ce0dc03b146afd0932ae0f3d05a5c15ca78d29d5e85bc31", + name = "vendor_ts__ra_ap_span-0.0.270", + sha256 = "8818680c6f7da3b32cb2bb0992940b24264b1aa90203aa94812e09ab34d362d1", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_salsa-macros/0.0.266/download"], - strip_prefix = "ra_ap_salsa-macros-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_salsa-macros-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_span/0.0.270/download"], + strip_prefix = "ra_ap_span-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_span-0.0.266", - sha256 = "f10dbdd611d2546be7c400934007865e85bb37570566c715edb3aac76367a782", + name = "vendor_ts__ra_ap_stdx-0.0.270", + sha256 = "f1c10bee1b03fc48083862c13cf06bd3ed17760463ecce2734103a2f511e5ed4", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_span/0.0.266/download"], - strip_prefix = "ra_ap_span-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_span-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.270/download"], + strip_prefix = "ra_ap_stdx-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_stdx-0.0.266", - sha256 = "b7d5c58fcda9b35d61e23f334b2b11221abf53e7f5e4344fc7eb1de18b2cbf68", + name = "vendor_ts__ra_ap_syntax-0.0.270", + sha256 = "92bc32f3946fc5fcbdc79e61b7e26a8c2a3a56f3ef6ab27c7d298a9e21a462f2", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_stdx/0.0.266/download"], - strip_prefix = "ra_ap_stdx-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_stdx-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.270/download"], + strip_prefix = "ra_ap_syntax-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-0.0.266", - sha256 = "75334f45a8095223823ef1d2789c085460b7b9368c63a6430d46f6f2b9bd5cb5", + name = "vendor_ts__ra_ap_syntax-bridge-0.0.270", + sha256 = "a42052c44c98c122c37aac476260c8f19d8fec495edc9c05835307c9ae86194d", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax/0.0.266/download"], - strip_prefix = "ra_ap_syntax-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.270/download"], + strip_prefix = "ra_ap_syntax-bridge-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_syntax-bridge-0.0.266", - sha256 = "b331a50f90ae587d230b1b55b3852ebf67ab740dec33c1a4b0900005037e77c2", + name = "vendor_ts__ra_ap_toolchain-0.0.270", + sha256 = "75996e70b3a0c68cd5157ba01f018964c7c6a5d7b209047d449b393139d0b57f", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_syntax-bridge/0.0.266/download"], - strip_prefix = "ra_ap_syntax-bridge-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_syntax-bridge-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.270/download"], + strip_prefix = "ra_ap_toolchain-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_toolchain-0.0.266", - sha256 = "8d56e1b3a34eac0448e54afccf63a6b7699ef14a734b2f1b340246ccdd00c0d3", + name = "vendor_ts__ra_ap_tt-0.0.270", + sha256 = "0e4ee31e93bfabe83e6720b7469db88d7ad7ec5c59a1f011efec4aa1327ffc5c", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_toolchain/0.0.266/download"], - strip_prefix = "ra_ap_toolchain-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_toolchain-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.270/download"], + strip_prefix = "ra_ap_tt-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_tt-0.0.266", - sha256 = "4b974b1211e0b1e17e44b1f256ca1b4a3734d4d98f43ba09ee0a8476fc3a5b83", + name = "vendor_ts__ra_ap_vfs-0.0.270", + sha256 = "f6aac1e277ac70bb073f40f8a3fc44e4b1bb9e4d4b1d0e0bd2f8269543560f80", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_tt/0.0.266/download"], - strip_prefix = "ra_ap_tt-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_tt-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.270/download"], + strip_prefix = "ra_ap_vfs-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.270.bazel"), ) maybe( http_archive, - name = "vendor_ts__ra_ap_vfs-0.0.266", - sha256 = "2b004e20f901dae213cb1673111a2b56fec4f0d1c4c894b62668a0f69ce25065", + name = "vendor_ts__ra_ap_vfs-notify-0.0.270", + sha256 = "cd95285146049621ee8f7a512c982a008bf036321fcc9b01a95c1ad7e6aeae57", type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs/0.0.266/download"], - strip_prefix = "ra_ap_vfs-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-0.0.266.bazel"), - ) - - maybe( - http_archive, - name = "vendor_ts__ra_ap_vfs-notify-0.0.266", - sha256 = "95f9e8df03407d76e044f99ef45fafd686d775508aa7d1ba836e9eca58b833a3", - type = "tar.gz", - urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.266/download"], - strip_prefix = "ra_ap_vfs-notify-0.0.266", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.266.bazel"), + urls = ["https://static.crates.io/crates/ra_ap_vfs-notify/0.0.270/download"], + strip_prefix = "ra_ap_vfs-notify-0.0.270", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ra_ap_vfs-notify-0.0.270.bazel"), ) maybe( @@ -2535,6 +2596,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustc_apfloat-0.2.1+llvm-462a31f5a5ab.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__rustversion-1.0.20", + sha256 = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2", + type = "tar.gz", + urls = ["https://static.crates.io/crates/rustversion/1.0.20/download"], + strip_prefix = "rustversion-1.0.20", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.rustversion-1.0.20.bazel"), + ) + maybe( http_archive, name = "vendor_ts__ryu-1.0.19", @@ -2545,6 +2616,36 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.ryu-1.0.19.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__salsa-0.19.0", + sha256 = "dd55c6549513b2a42884dae31e3d4f4ac8a6cc51062e68e24d162133889f327c", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa/0.19.0/download"], + strip_prefix = "salsa-0.19.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-0.19.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__salsa-macro-rules-0.19.0", + sha256 = "2619b4b451beab0a7e4364ff1e6f31950e7e418888fd9bf2f28889671563166a", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa-macro-rules/0.19.0/download"], + strip_prefix = "salsa-macro-rules-0.19.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macro-rules-0.19.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__salsa-macros-0.19.0", + sha256 = "4be57a99b3896e8d26850428a6874fb86849e2db874e1db3528e5cee4337d277", + type = "tar.gz", + urls = ["https://static.crates.io/crates/salsa-macros/0.19.0/download"], + strip_prefix = "salsa-macros-0.19.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.salsa-macros-0.19.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__same-file-1.0.6", @@ -2587,32 +2688,32 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__serde-1.0.218", - sha256 = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60", + name = "vendor_ts__serde-1.0.219", + sha256 = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde/1.0.218/download"], - strip_prefix = "serde-1.0.218", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-1.0.218.bazel"), + urls = ["https://static.crates.io/crates/serde/1.0.219/download"], + strip_prefix = "serde-1.0.219", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde-1.0.219.bazel"), ) maybe( http_archive, - name = "vendor_ts__serde_derive-1.0.218", - sha256 = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b", + name = "vendor_ts__serde_derive-1.0.219", + sha256 = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_derive/1.0.218/download"], - strip_prefix = "serde_derive-1.0.218", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_derive-1.0.218.bazel"), + urls = ["https://static.crates.io/crates/serde_derive/1.0.219/download"], + strip_prefix = "serde_derive-1.0.219", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_derive-1.0.219.bazel"), ) maybe( http_archive, - name = "vendor_ts__serde_json-1.0.139", - sha256 = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6", + name = "vendor_ts__serde_json-1.0.140", + sha256 = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373", type = "tar.gz", - urls = ["https://static.crates.io/crates/serde_json/1.0.139/download"], - strip_prefix = "serde_json-1.0.139", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.139.bazel"), + urls = ["https://static.crates.io/crates/serde_json/1.0.140/download"], + strip_prefix = "serde_json-1.0.140", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.serde_json-1.0.140.bazel"), ) maybe( @@ -2727,12 +2828,12 @@ def crate_repositories(): maybe( http_archive, - name = "vendor_ts__syn-2.0.98", - sha256 = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1", + name = "vendor_ts__syn-2.0.100", + sha256 = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0", type = "tar.gz", - urls = ["https://static.crates.io/crates/syn/2.0.98/download"], - strip_prefix = "syn-2.0.98", - build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.98.bazel"), + urls = ["https://static.crates.io/crates/syn/2.0.100/download"], + strip_prefix = "syn-2.0.100", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.syn-2.0.100.bazel"), ) maybe( @@ -3195,6 +3296,16 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows-0.58.0", + sha256 = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows/0.58.0/download"], + strip_prefix = "windows-0.58.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-0.58.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows-core-0.52.0", @@ -3205,6 +3316,66 @@ def crate_repositories(): build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-core-0.52.0.bazel"), ) + maybe( + http_archive, + name = "vendor_ts__windows-core-0.58.0", + sha256 = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-core/0.58.0/download"], + strip_prefix = "windows-core-0.58.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-core-0.58.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-implement-0.58.0", + sha256 = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-implement/0.58.0/download"], + strip_prefix = "windows-implement-0.58.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-implement-0.58.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-interface-0.58.0", + sha256 = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-interface/0.58.0/download"], + strip_prefix = "windows-interface-0.58.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-interface-0.58.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-link-0.1.1", + sha256 = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-link/0.1.1/download"], + strip_prefix = "windows-link-0.1.1", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-link-0.1.1.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-result-0.2.0", + sha256 = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-result/0.2.0/download"], + strip_prefix = "windows-result-0.2.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-result-0.2.0.bazel"), + ) + + maybe( + http_archive, + name = "vendor_ts__windows-strings-0.1.0", + sha256 = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10", + type = "tar.gz", + urls = ["https://static.crates.io/crates/windows-strings/0.1.0/download"], + strip_prefix = "windows-strings-0.1.0", + build_file = Label("//misc/bazel/3rdparty/tree_sitter_extractors_deps:BUILD.windows-strings-0.1.0.bazel"), + ) + maybe( http_archive, name = "vendor_ts__windows-sys-0.48.0", @@ -3476,13 +3647,13 @@ def crate_repositories(): ) return [ - struct(repo = "vendor_ts__anyhow-1.0.96", is_dev_dep = False), + struct(repo = "vendor_ts__anyhow-1.0.97", is_dev_dep = False), struct(repo = "vendor_ts__argfile-0.2.1", is_dev_dep = False), - struct(repo = "vendor_ts__chalk-ir-0.99.0", is_dev_dep = False), - struct(repo = "vendor_ts__chrono-0.4.39", is_dev_dep = False), - struct(repo = "vendor_ts__clap-4.5.31", is_dev_dep = False), + struct(repo = "vendor_ts__chalk-ir-0.100.0", is_dev_dep = False), + struct(repo = "vendor_ts__chrono-0.4.40", is_dev_dep = False), + struct(repo = "vendor_ts__clap-4.5.32", is_dev_dep = False), struct(repo = "vendor_ts__dunce-1.0.5", is_dev_dep = False), - struct(repo = "vendor_ts__either-1.14.0", is_dev_dep = False), + struct(repo = "vendor_ts__either-1.15.0", is_dev_dep = False), struct(repo = "vendor_ts__encoding-0.2.33", is_dev_dep = False), struct(repo = "vendor_ts__figment-0.10.19", is_dev_dep = False), struct(repo = "vendor_ts__flate2-1.1.0", is_dev_dep = False), @@ -3493,30 +3664,30 @@ def crate_repositories(): struct(repo = "vendor_ts__mustache-0.9.0", is_dev_dep = False), struct(repo = "vendor_ts__num-traits-0.2.19", is_dev_dep = False), struct(repo = "vendor_ts__num_cpus-1.16.0", is_dev_dep = False), - struct(repo = "vendor_ts__proc-macro2-1.0.93", is_dev_dep = False), - struct(repo = "vendor_ts__quote-1.0.38", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_base_db-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_cfg-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_def-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_ide_db-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_intern-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_parser-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_paths-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_project_model-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_span-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_stdx-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_syntax-0.0.266", is_dev_dep = False), - struct(repo = "vendor_ts__ra_ap_vfs-0.0.266", is_dev_dep = False), + struct(repo = "vendor_ts__proc-macro2-1.0.94", is_dev_dep = False), + struct(repo = "vendor_ts__quote-1.0.40", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_base_db-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_cfg-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_def-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_expand-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_hir_ty-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_ide_db-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_intern-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_load-cargo-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_parser-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_paths-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_project_model-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_span-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_stdx-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_syntax-0.0.270", is_dev_dep = False), + struct(repo = "vendor_ts__ra_ap_vfs-0.0.270", is_dev_dep = False), struct(repo = "vendor_ts__rayon-1.10.0", is_dev_dep = False), struct(repo = "vendor_ts__regex-1.11.1", is_dev_dep = False), - struct(repo = "vendor_ts__serde-1.0.218", is_dev_dep = False), - struct(repo = "vendor_ts__serde_json-1.0.139", is_dev_dep = False), + struct(repo = "vendor_ts__serde-1.0.219", is_dev_dep = False), + struct(repo = "vendor_ts__serde_json-1.0.140", is_dev_dep = False), struct(repo = "vendor_ts__serde_with-3.12.0", is_dev_dep = False), - struct(repo = "vendor_ts__syn-2.0.98", is_dev_dep = False), + struct(repo = "vendor_ts__syn-2.0.100", is_dev_dep = False), struct(repo = "vendor_ts__toml-0.8.20", is_dev_dep = False), struct(repo = "vendor_ts__tracing-0.1.41", is_dev_dep = False), struct(repo = "vendor_ts__tracing-flame-0.2.0", is_dev_dep = False), diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll index 3c97fbaed89..89677990b8b 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll @@ -503,7 +503,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu } /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */ - predicate guardControlsBlock(Guard guard, SsaInput::BasicBlock bb, boolean branch) { + predicate guardDirectlyControlsBlock(Guard guard, SsaInput::BasicBlock bb, boolean branch) { Guards::guardControlsBlock(guard, bb, branch) } } diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected index eabbc3ad4b8..0da6e95f6ed 100644 --- a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected @@ -1,83 +1,50 @@ testFailures newStyleBarrierGuards -| barrier-guards.rb:3:16:4:19 | [input] SSA phi read(foo) | | barrier-guards.rb:4:5:4:7 | foo | -| barrier-guards.rb:9:25:10:19 | [input] SSA phi read(foo) | | barrier-guards.rb:10:5:10:7 | foo | -| barrier-guards.rb:17:1:18:19 | [input] SSA phi read(foo) | | barrier-guards.rb:18:5:18:7 | foo | -| barrier-guards.rb:23:1:24:19 | [input] SSA phi read(foo) | | barrier-guards.rb:24:5:24:7 | foo | -| barrier-guards.rb:27:20:28:19 | [input] SSA phi read(foo) | | barrier-guards.rb:28:5:28:7 | foo | -| barrier-guards.rb:37:21:38:19 | [input] SSA phi read(foo) | | barrier-guards.rb:38:5:38:7 | foo | | barrier-guards.rb:45:9:45:11 | foo | -| barrier-guards.rb:70:22:71:19 | [input] SSA phi read(foo) | | barrier-guards.rb:71:5:71:7 | foo | -| barrier-guards.rb:82:26:83:19 | [input] SSA phi read(foo) | | barrier-guards.rb:83:5:83:7 | foo | -| barrier-guards.rb:90:1:91:19 | [input] SSA phi read(foo) | | barrier-guards.rb:91:5:91:7 | foo | -| barrier-guards.rb:125:11:126:19 | [input] SSA phi read(foo) | | barrier-guards.rb:126:5:126:7 | foo | -| barrier-guards.rb:132:11:133:19 | [input] SSA phi read(foo) | | barrier-guards.rb:133:5:133:7 | foo | -| barrier-guards.rb:134:11:135:19 | [input] SSA phi read(foo) | | barrier-guards.rb:135:5:135:7 | foo | -| barrier-guards.rb:139:18:140:19 | [input] SSA phi read(foo) | | barrier-guards.rb:140:5:140:7 | foo | -| barrier-guards.rb:141:19:142:19 | [input] SSA phi read(foo) | | barrier-guards.rb:142:5:142:7 | foo | -| barrier-guards.rb:148:21:149:19 | [input] SSA phi read(foo) | | barrier-guards.rb:149:5:149:7 | foo | -| barrier-guards.rb:153:18:154:19 | [input] SSA phi read(foo) | | barrier-guards.rb:154:5:154:7 | foo | -| barrier-guards.rb:158:10:159:19 | [input] SSA phi read(foo) | | barrier-guards.rb:159:5:159:7 | foo | -| barrier-guards.rb:163:11:164:19 | [input] SSA phi read(foo) | | barrier-guards.rb:164:5:164:7 | foo | | barrier-guards.rb:191:4:191:15 | [input] SSA phi read(foo) | | barrier-guards.rb:191:20:191:31 | [input] SSA phi read(foo) | -| barrier-guards.rb:191:32:192:19 | [input] SSA phi read(foo) | | barrier-guards.rb:192:5:192:7 | foo | | barrier-guards.rb:195:4:195:15 | [input] SSA phi read(foo) | | barrier-guards.rb:195:4:195:31 | [input] SSA phi read(foo) | | barrier-guards.rb:195:20:195:31 | [input] SSA phi read(foo) | | barrier-guards.rb:195:36:195:47 | [input] SSA phi read(foo) | -| barrier-guards.rb:195:48:196:19 | [input] SSA phi read(foo) | | barrier-guards.rb:196:5:196:7 | foo | | barrier-guards.rb:199:4:199:15 | [input] SSA phi read(foo) | | barrier-guards.rb:199:4:199:31 | [input] SSA phi read(foo) | | barrier-guards.rb:199:20:199:31 | [input] SSA phi read(foo) | | barrier-guards.rb:203:36:203:47 | [input] SSA phi read(foo) | -| barrier-guards.rb:207:22:208:19 | [input] SSA phi read(foo) | | barrier-guards.rb:208:5:208:7 | foo | -| barrier-guards.rb:211:22:212:19 | [input] SSA phi read(foo) | | barrier-guards.rb:212:5:212:7 | foo | -| barrier-guards.rb:215:28:216:19 | [input] SSA phi read(foo) | | barrier-guards.rb:216:5:216:7 | foo | | barrier-guards.rb:219:21:219:23 | foo | | barrier-guards.rb:219:21:219:32 | [input] SSA phi read(foo) | -| barrier-guards.rb:219:95:220:19 | [input] SSA phi read(foo) | | barrier-guards.rb:220:5:220:7 | foo | -| barrier-guards.rb:232:18:233:19 | [input] SSA phi read(foo) | | barrier-guards.rb:233:5:233:7 | foo | -| barrier-guards.rb:237:19:237:38 | [input] SSA phi read(foo) | | barrier-guards.rb:237:24:237:26 | foo | -| barrier-guards.rb:243:9:244:19 | [input] SSA phi read(foo) | | barrier-guards.rb:244:5:244:7 | foo | -| barrier-guards.rb:259:17:260:19 | [input] SSA phi read(foo) | | barrier-guards.rb:260:5:260:7 | foo | -| barrier-guards.rb:264:17:265:19 | [input] SSA phi read(foo) | | barrier-guards.rb:265:5:265:7 | foo | -| barrier-guards.rb:272:17:272:19 | [input] SSA phi read(foo) | | barrier-guards.rb:272:17:272:19 | foo | -| barrier-guards.rb:275:20:276:19 | [input] SSA phi read(foo) | | barrier-guards.rb:276:5:276:7 | foo | -| barrier-guards.rb:281:21:282:19 | [input] SSA phi read(foo) | | barrier-guards.rb:282:5:282:7 | foo | -| barrier-guards.rb:291:7:292:19 | [input] SSA phi read(foo) | | barrier-guards.rb:292:5:292:7 | foo | | barrier_flow.rb:19:14:19:14 | x | | barrier_flow.rb:32:10:32:10 | x | diff --git a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected index f005299c0b7..488f51a3d51 100644 --- a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected @@ -103,7 +103,6 @@ | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:3695:20:3695 | x | | UseUseExplosion.rb:19:13:19:13 | 0 | UseUseExplosion.rb:19:9:19:9 | x | | UseUseExplosion.rb:19:13:19:13 | 0 | UseUseExplosion.rb:19:9:19:13 | ... = ... | -| UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | UseUseExplosion.rb:21:2111:21:2111 | x | | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | UseUseExplosion.rb:21:2127:21:2127 | x | | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | UseUseExplosion.rb:21:2143:21:2143 | x | @@ -210,11 +209,7 @@ | UseUseExplosion.rb:20:13:20:17 | self | UseUseExplosion.rb:20:3691:20:3696 | self | | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [false] ( ... ) | | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [true] ( ... ) | -| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | -| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:26:20:3684 | then ... | UseUseExplosion.rb:20:9:20:3700 | if ... | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:31:20:3684 | if ... | UseUseExplosion.rb:20:26:20:3684 | then ... | | UseUseExplosion.rb:20:35:20:39 | [post] self | UseUseExplosion.rb:20:56:20:60 | self | | UseUseExplosion.rb:20:35:20:39 | [post] self | UseUseExplosion.rb:20:3675:20:3680 | self | @@ -222,11 +217,7 @@ | UseUseExplosion.rb:20:35:20:39 | self | UseUseExplosion.rb:20:3675:20:3680 | self | | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [false] ( ... ) | | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [true] ( ... ) | -| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | -| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | | UseUseExplosion.rb:20:47:20:3668 | then ... | UseUseExplosion.rb:20:31:20:3684 | if ... | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:52:20:3668 | if ... | UseUseExplosion.rb:20:47:20:3668 | then ... | | UseUseExplosion.rb:20:56:20:60 | [post] self | UseUseExplosion.rb:20:77:20:81 | self | | UseUseExplosion.rb:20:56:20:60 | [post] self | UseUseExplosion.rb:20:3659:20:3664 | self | @@ -234,11 +225,7 @@ | UseUseExplosion.rb:20:56:20:60 | self | UseUseExplosion.rb:20:3659:20:3664 | self | | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [false] ( ... ) | | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [true] ( ... ) | -| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | -| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | | UseUseExplosion.rb:20:68:20:3652 | then ... | UseUseExplosion.rb:20:52:20:3668 | if ... | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:73:20:3652 | if ... | UseUseExplosion.rb:20:68:20:3652 | then ... | | UseUseExplosion.rb:20:77:20:81 | [post] self | UseUseExplosion.rb:20:98:20:102 | self | | UseUseExplosion.rb:20:77:20:81 | [post] self | UseUseExplosion.rb:20:3643:20:3648 | self | @@ -246,11 +233,7 @@ | UseUseExplosion.rb:20:77:20:81 | self | UseUseExplosion.rb:20:3643:20:3648 | self | | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [false] ( ... ) | | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [true] ( ... ) | -| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | -| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | | UseUseExplosion.rb:20:89:20:3636 | then ... | UseUseExplosion.rb:20:73:20:3652 | if ... | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:94:20:3636 | if ... | UseUseExplosion.rb:20:89:20:3636 | then ... | | UseUseExplosion.rb:20:98:20:102 | [post] self | UseUseExplosion.rb:20:119:20:123 | self | | UseUseExplosion.rb:20:98:20:102 | [post] self | UseUseExplosion.rb:20:3627:20:3632 | self | @@ -258,11 +241,7 @@ | UseUseExplosion.rb:20:98:20:102 | self | UseUseExplosion.rb:20:3627:20:3632 | self | | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [false] ( ... ) | | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [true] ( ... ) | -| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | -| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | | UseUseExplosion.rb:20:110:20:3620 | then ... | UseUseExplosion.rb:20:94:20:3636 | if ... | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:115:20:3620 | if ... | UseUseExplosion.rb:20:110:20:3620 | then ... | | UseUseExplosion.rb:20:119:20:123 | [post] self | UseUseExplosion.rb:20:140:20:144 | self | | UseUseExplosion.rb:20:119:20:123 | [post] self | UseUseExplosion.rb:20:3611:20:3616 | self | @@ -270,11 +249,7 @@ | UseUseExplosion.rb:20:119:20:123 | self | UseUseExplosion.rb:20:3611:20:3616 | self | | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [false] ( ... ) | | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [true] ( ... ) | -| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | -| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | | UseUseExplosion.rb:20:131:20:3604 | then ... | UseUseExplosion.rb:20:115:20:3620 | if ... | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:136:20:3604 | if ... | UseUseExplosion.rb:20:131:20:3604 | then ... | | UseUseExplosion.rb:20:140:20:144 | [post] self | UseUseExplosion.rb:20:161:20:165 | self | | UseUseExplosion.rb:20:140:20:144 | [post] self | UseUseExplosion.rb:20:3595:20:3600 | self | @@ -282,11 +257,7 @@ | UseUseExplosion.rb:20:140:20:144 | self | UseUseExplosion.rb:20:3595:20:3600 | self | | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [false] ( ... ) | | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [true] ( ... ) | -| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | -| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | | UseUseExplosion.rb:20:152:20:3588 | then ... | UseUseExplosion.rb:20:136:20:3604 | if ... | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:157:20:3588 | if ... | UseUseExplosion.rb:20:152:20:3588 | then ... | | UseUseExplosion.rb:20:161:20:165 | [post] self | UseUseExplosion.rb:20:182:20:186 | self | | UseUseExplosion.rb:20:161:20:165 | [post] self | UseUseExplosion.rb:20:3579:20:3584 | self | @@ -294,11 +265,7 @@ | UseUseExplosion.rb:20:161:20:165 | self | UseUseExplosion.rb:20:3579:20:3584 | self | | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [false] ( ... ) | | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [true] ( ... ) | -| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | -| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | | UseUseExplosion.rb:20:173:20:3572 | then ... | UseUseExplosion.rb:20:157:20:3588 | if ... | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:178:20:3572 | if ... | UseUseExplosion.rb:20:173:20:3572 | then ... | | UseUseExplosion.rb:20:182:20:186 | [post] self | UseUseExplosion.rb:20:203:20:207 | self | | UseUseExplosion.rb:20:182:20:186 | [post] self | UseUseExplosion.rb:20:3563:20:3568 | self | @@ -306,11 +273,7 @@ | UseUseExplosion.rb:20:182:20:186 | self | UseUseExplosion.rb:20:3563:20:3568 | self | | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [false] ( ... ) | | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [true] ( ... ) | -| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | -| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | | UseUseExplosion.rb:20:194:20:3556 | then ... | UseUseExplosion.rb:20:178:20:3572 | if ... | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:199:20:3556 | if ... | UseUseExplosion.rb:20:194:20:3556 | then ... | | UseUseExplosion.rb:20:203:20:207 | [post] self | UseUseExplosion.rb:20:224:20:228 | self | | UseUseExplosion.rb:20:203:20:207 | [post] self | UseUseExplosion.rb:20:3547:20:3552 | self | @@ -318,11 +281,7 @@ | UseUseExplosion.rb:20:203:20:207 | self | UseUseExplosion.rb:20:3547:20:3552 | self | | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [false] ( ... ) | | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [true] ( ... ) | -| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | -| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | | UseUseExplosion.rb:20:215:20:3540 | then ... | UseUseExplosion.rb:20:199:20:3556 | if ... | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:220:20:3540 | if ... | UseUseExplosion.rb:20:215:20:3540 | then ... | | UseUseExplosion.rb:20:224:20:228 | [post] self | UseUseExplosion.rb:20:245:20:249 | self | | UseUseExplosion.rb:20:224:20:228 | [post] self | UseUseExplosion.rb:20:3531:20:3536 | self | @@ -330,11 +289,7 @@ | UseUseExplosion.rb:20:224:20:228 | self | UseUseExplosion.rb:20:3531:20:3536 | self | | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [false] ( ... ) | | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [true] ( ... ) | -| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | -| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | | UseUseExplosion.rb:20:236:20:3524 | then ... | UseUseExplosion.rb:20:220:20:3540 | if ... | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:241:20:3524 | if ... | UseUseExplosion.rb:20:236:20:3524 | then ... | | UseUseExplosion.rb:20:245:20:249 | [post] self | UseUseExplosion.rb:20:266:20:270 | self | | UseUseExplosion.rb:20:245:20:249 | [post] self | UseUseExplosion.rb:20:3515:20:3520 | self | @@ -342,11 +297,7 @@ | UseUseExplosion.rb:20:245:20:249 | self | UseUseExplosion.rb:20:3515:20:3520 | self | | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [false] ( ... ) | | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [true] ( ... ) | -| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | -| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | | UseUseExplosion.rb:20:257:20:3508 | then ... | UseUseExplosion.rb:20:241:20:3524 | if ... | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:262:20:3508 | if ... | UseUseExplosion.rb:20:257:20:3508 | then ... | | UseUseExplosion.rb:20:266:20:270 | [post] self | UseUseExplosion.rb:20:287:20:291 | self | | UseUseExplosion.rb:20:266:20:270 | [post] self | UseUseExplosion.rb:20:3499:20:3504 | self | @@ -354,11 +305,7 @@ | UseUseExplosion.rb:20:266:20:270 | self | UseUseExplosion.rb:20:3499:20:3504 | self | | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [false] ( ... ) | | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [true] ( ... ) | -| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | -| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | | UseUseExplosion.rb:20:278:20:3492 | then ... | UseUseExplosion.rb:20:262:20:3508 | if ... | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:283:20:3492 | if ... | UseUseExplosion.rb:20:278:20:3492 | then ... | | UseUseExplosion.rb:20:287:20:291 | [post] self | UseUseExplosion.rb:20:308:20:312 | self | | UseUseExplosion.rb:20:287:20:291 | [post] self | UseUseExplosion.rb:20:3483:20:3488 | self | @@ -366,11 +313,7 @@ | UseUseExplosion.rb:20:287:20:291 | self | UseUseExplosion.rb:20:3483:20:3488 | self | | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [false] ( ... ) | | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [true] ( ... ) | -| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | -| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | | UseUseExplosion.rb:20:299:20:3476 | then ... | UseUseExplosion.rb:20:283:20:3492 | if ... | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:304:20:3476 | if ... | UseUseExplosion.rb:20:299:20:3476 | then ... | | UseUseExplosion.rb:20:308:20:312 | [post] self | UseUseExplosion.rb:20:329:20:333 | self | | UseUseExplosion.rb:20:308:20:312 | [post] self | UseUseExplosion.rb:20:3467:20:3472 | self | @@ -378,11 +321,7 @@ | UseUseExplosion.rb:20:308:20:312 | self | UseUseExplosion.rb:20:3467:20:3472 | self | | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [false] ( ... ) | | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [true] ( ... ) | -| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | -| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | | UseUseExplosion.rb:20:320:20:3460 | then ... | UseUseExplosion.rb:20:304:20:3476 | if ... | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:325:20:3460 | if ... | UseUseExplosion.rb:20:320:20:3460 | then ... | | UseUseExplosion.rb:20:329:20:333 | [post] self | UseUseExplosion.rb:20:350:20:354 | self | | UseUseExplosion.rb:20:329:20:333 | [post] self | UseUseExplosion.rb:20:3451:20:3456 | self | @@ -390,11 +329,7 @@ | UseUseExplosion.rb:20:329:20:333 | self | UseUseExplosion.rb:20:3451:20:3456 | self | | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [false] ( ... ) | | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [true] ( ... ) | -| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | -| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | | UseUseExplosion.rb:20:341:20:3444 | then ... | UseUseExplosion.rb:20:325:20:3460 | if ... | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:346:20:3444 | if ... | UseUseExplosion.rb:20:341:20:3444 | then ... | | UseUseExplosion.rb:20:350:20:354 | [post] self | UseUseExplosion.rb:20:371:20:375 | self | | UseUseExplosion.rb:20:350:20:354 | [post] self | UseUseExplosion.rb:20:3435:20:3440 | self | @@ -402,11 +337,7 @@ | UseUseExplosion.rb:20:350:20:354 | self | UseUseExplosion.rb:20:3435:20:3440 | self | | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [false] ( ... ) | | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [true] ( ... ) | -| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | -| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | | UseUseExplosion.rb:20:362:20:3428 | then ... | UseUseExplosion.rb:20:346:20:3444 | if ... | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:367:20:3428 | if ... | UseUseExplosion.rb:20:362:20:3428 | then ... | | UseUseExplosion.rb:20:371:20:375 | [post] self | UseUseExplosion.rb:20:392:20:396 | self | | UseUseExplosion.rb:20:371:20:375 | [post] self | UseUseExplosion.rb:20:3419:20:3424 | self | @@ -414,11 +345,7 @@ | UseUseExplosion.rb:20:371:20:375 | self | UseUseExplosion.rb:20:3419:20:3424 | self | | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [false] ( ... ) | | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [true] ( ... ) | -| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | -| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | | UseUseExplosion.rb:20:383:20:3412 | then ... | UseUseExplosion.rb:20:367:20:3428 | if ... | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:388:20:3412 | if ... | UseUseExplosion.rb:20:383:20:3412 | then ... | | UseUseExplosion.rb:20:392:20:396 | [post] self | UseUseExplosion.rb:20:413:20:417 | self | | UseUseExplosion.rb:20:392:20:396 | [post] self | UseUseExplosion.rb:20:3403:20:3408 | self | @@ -426,11 +353,7 @@ | UseUseExplosion.rb:20:392:20:396 | self | UseUseExplosion.rb:20:3403:20:3408 | self | | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [false] ( ... ) | | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [true] ( ... ) | -| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | -| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | | UseUseExplosion.rb:20:404:20:3396 | then ... | UseUseExplosion.rb:20:388:20:3412 | if ... | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:409:20:3396 | if ... | UseUseExplosion.rb:20:404:20:3396 | then ... | | UseUseExplosion.rb:20:413:20:417 | [post] self | UseUseExplosion.rb:20:434:20:438 | self | | UseUseExplosion.rb:20:413:20:417 | [post] self | UseUseExplosion.rb:20:3387:20:3392 | self | @@ -438,11 +361,7 @@ | UseUseExplosion.rb:20:413:20:417 | self | UseUseExplosion.rb:20:3387:20:3392 | self | | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [false] ( ... ) | | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [true] ( ... ) | -| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | -| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | | UseUseExplosion.rb:20:425:20:3380 | then ... | UseUseExplosion.rb:20:409:20:3396 | if ... | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:430:20:3380 | if ... | UseUseExplosion.rb:20:425:20:3380 | then ... | | UseUseExplosion.rb:20:434:20:438 | [post] self | UseUseExplosion.rb:20:455:20:459 | self | | UseUseExplosion.rb:20:434:20:438 | [post] self | UseUseExplosion.rb:20:3371:20:3376 | self | @@ -450,11 +369,7 @@ | UseUseExplosion.rb:20:434:20:438 | self | UseUseExplosion.rb:20:3371:20:3376 | self | | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [false] ( ... ) | | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [true] ( ... ) | -| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | -| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | | UseUseExplosion.rb:20:446:20:3364 | then ... | UseUseExplosion.rb:20:430:20:3380 | if ... | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:451:20:3364 | if ... | UseUseExplosion.rb:20:446:20:3364 | then ... | | UseUseExplosion.rb:20:455:20:459 | [post] self | UseUseExplosion.rb:20:476:20:480 | self | | UseUseExplosion.rb:20:455:20:459 | [post] self | UseUseExplosion.rb:20:3355:20:3360 | self | @@ -462,11 +377,7 @@ | UseUseExplosion.rb:20:455:20:459 | self | UseUseExplosion.rb:20:3355:20:3360 | self | | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [false] ( ... ) | | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [true] ( ... ) | -| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | -| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | | UseUseExplosion.rb:20:467:20:3348 | then ... | UseUseExplosion.rb:20:451:20:3364 | if ... | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:472:20:3348 | if ... | UseUseExplosion.rb:20:467:20:3348 | then ... | | UseUseExplosion.rb:20:476:20:480 | [post] self | UseUseExplosion.rb:20:497:20:501 | self | | UseUseExplosion.rb:20:476:20:480 | [post] self | UseUseExplosion.rb:20:3339:20:3344 | self | @@ -474,11 +385,7 @@ | UseUseExplosion.rb:20:476:20:480 | self | UseUseExplosion.rb:20:3339:20:3344 | self | | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [false] ( ... ) | | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [true] ( ... ) | -| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | -| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | | UseUseExplosion.rb:20:488:20:3332 | then ... | UseUseExplosion.rb:20:472:20:3348 | if ... | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:493:20:3332 | if ... | UseUseExplosion.rb:20:488:20:3332 | then ... | | UseUseExplosion.rb:20:497:20:501 | [post] self | UseUseExplosion.rb:20:518:20:522 | self | | UseUseExplosion.rb:20:497:20:501 | [post] self | UseUseExplosion.rb:20:3323:20:3328 | self | @@ -486,11 +393,7 @@ | UseUseExplosion.rb:20:497:20:501 | self | UseUseExplosion.rb:20:3323:20:3328 | self | | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [false] ( ... ) | | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [true] ( ... ) | -| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | -| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | | UseUseExplosion.rb:20:509:20:3316 | then ... | UseUseExplosion.rb:20:493:20:3332 | if ... | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:514:20:3316 | if ... | UseUseExplosion.rb:20:509:20:3316 | then ... | | UseUseExplosion.rb:20:518:20:522 | [post] self | UseUseExplosion.rb:20:539:20:543 | self | | UseUseExplosion.rb:20:518:20:522 | [post] self | UseUseExplosion.rb:20:3307:20:3312 | self | @@ -498,11 +401,7 @@ | UseUseExplosion.rb:20:518:20:522 | self | UseUseExplosion.rb:20:3307:20:3312 | self | | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [false] ( ... ) | | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [true] ( ... ) | -| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | -| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | | UseUseExplosion.rb:20:530:20:3300 | then ... | UseUseExplosion.rb:20:514:20:3316 | if ... | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:535:20:3300 | if ... | UseUseExplosion.rb:20:530:20:3300 | then ... | | UseUseExplosion.rb:20:539:20:543 | [post] self | UseUseExplosion.rb:20:560:20:564 | self | | UseUseExplosion.rb:20:539:20:543 | [post] self | UseUseExplosion.rb:20:3291:20:3296 | self | @@ -510,11 +409,7 @@ | UseUseExplosion.rb:20:539:20:543 | self | UseUseExplosion.rb:20:3291:20:3296 | self | | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [false] ( ... ) | | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [true] ( ... ) | -| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | -| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | | UseUseExplosion.rb:20:551:20:3284 | then ... | UseUseExplosion.rb:20:535:20:3300 | if ... | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:556:20:3284 | if ... | UseUseExplosion.rb:20:551:20:3284 | then ... | | UseUseExplosion.rb:20:560:20:564 | [post] self | UseUseExplosion.rb:20:581:20:585 | self | | UseUseExplosion.rb:20:560:20:564 | [post] self | UseUseExplosion.rb:20:3275:20:3280 | self | @@ -522,11 +417,7 @@ | UseUseExplosion.rb:20:560:20:564 | self | UseUseExplosion.rb:20:3275:20:3280 | self | | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [false] ( ... ) | | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [true] ( ... ) | -| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | -| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | | UseUseExplosion.rb:20:572:20:3268 | then ... | UseUseExplosion.rb:20:556:20:3284 | if ... | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:577:20:3268 | if ... | UseUseExplosion.rb:20:572:20:3268 | then ... | | UseUseExplosion.rb:20:581:20:585 | [post] self | UseUseExplosion.rb:20:602:20:606 | self | | UseUseExplosion.rb:20:581:20:585 | [post] self | UseUseExplosion.rb:20:3259:20:3264 | self | @@ -534,11 +425,7 @@ | UseUseExplosion.rb:20:581:20:585 | self | UseUseExplosion.rb:20:3259:20:3264 | self | | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [false] ( ... ) | | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [true] ( ... ) | -| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | -| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | | UseUseExplosion.rb:20:593:20:3252 | then ... | UseUseExplosion.rb:20:577:20:3268 | if ... | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:598:20:3252 | if ... | UseUseExplosion.rb:20:593:20:3252 | then ... | | UseUseExplosion.rb:20:602:20:606 | [post] self | UseUseExplosion.rb:20:623:20:627 | self | | UseUseExplosion.rb:20:602:20:606 | [post] self | UseUseExplosion.rb:20:3243:20:3248 | self | @@ -546,11 +433,7 @@ | UseUseExplosion.rb:20:602:20:606 | self | UseUseExplosion.rb:20:3243:20:3248 | self | | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [false] ( ... ) | | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [true] ( ... ) | -| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | -| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | | UseUseExplosion.rb:20:614:20:3236 | then ... | UseUseExplosion.rb:20:598:20:3252 | if ... | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:619:20:3236 | if ... | UseUseExplosion.rb:20:614:20:3236 | then ... | | UseUseExplosion.rb:20:623:20:627 | [post] self | UseUseExplosion.rb:20:644:20:648 | self | | UseUseExplosion.rb:20:623:20:627 | [post] self | UseUseExplosion.rb:20:3227:20:3232 | self | @@ -558,11 +441,7 @@ | UseUseExplosion.rb:20:623:20:627 | self | UseUseExplosion.rb:20:3227:20:3232 | self | | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [false] ( ... ) | | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [true] ( ... ) | -| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | -| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | | UseUseExplosion.rb:20:635:20:3220 | then ... | UseUseExplosion.rb:20:619:20:3236 | if ... | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:640:20:3220 | if ... | UseUseExplosion.rb:20:635:20:3220 | then ... | | UseUseExplosion.rb:20:644:20:648 | [post] self | UseUseExplosion.rb:20:665:20:669 | self | | UseUseExplosion.rb:20:644:20:648 | [post] self | UseUseExplosion.rb:20:3211:20:3216 | self | @@ -570,11 +449,7 @@ | UseUseExplosion.rb:20:644:20:648 | self | UseUseExplosion.rb:20:3211:20:3216 | self | | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [false] ( ... ) | | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [true] ( ... ) | -| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | -| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | | UseUseExplosion.rb:20:656:20:3204 | then ... | UseUseExplosion.rb:20:640:20:3220 | if ... | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:661:20:3204 | if ... | UseUseExplosion.rb:20:656:20:3204 | then ... | | UseUseExplosion.rb:20:665:20:669 | [post] self | UseUseExplosion.rb:20:686:20:690 | self | | UseUseExplosion.rb:20:665:20:669 | [post] self | UseUseExplosion.rb:20:3195:20:3200 | self | @@ -582,11 +457,7 @@ | UseUseExplosion.rb:20:665:20:669 | self | UseUseExplosion.rb:20:3195:20:3200 | self | | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [false] ( ... ) | | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [true] ( ... ) | -| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | -| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | | UseUseExplosion.rb:20:677:20:3188 | then ... | UseUseExplosion.rb:20:661:20:3204 | if ... | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:682:20:3188 | if ... | UseUseExplosion.rb:20:677:20:3188 | then ... | | UseUseExplosion.rb:20:686:20:690 | [post] self | UseUseExplosion.rb:20:707:20:711 | self | | UseUseExplosion.rb:20:686:20:690 | [post] self | UseUseExplosion.rb:20:3179:20:3184 | self | @@ -594,11 +465,7 @@ | UseUseExplosion.rb:20:686:20:690 | self | UseUseExplosion.rb:20:3179:20:3184 | self | | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [false] ( ... ) | | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [true] ( ... ) | -| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | -| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | | UseUseExplosion.rb:20:698:20:3172 | then ... | UseUseExplosion.rb:20:682:20:3188 | if ... | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:703:20:3172 | if ... | UseUseExplosion.rb:20:698:20:3172 | then ... | | UseUseExplosion.rb:20:707:20:711 | [post] self | UseUseExplosion.rb:20:728:20:732 | self | | UseUseExplosion.rb:20:707:20:711 | [post] self | UseUseExplosion.rb:20:3163:20:3168 | self | @@ -606,11 +473,7 @@ | UseUseExplosion.rb:20:707:20:711 | self | UseUseExplosion.rb:20:3163:20:3168 | self | | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [false] ( ... ) | | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [true] ( ... ) | -| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | -| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | | UseUseExplosion.rb:20:719:20:3156 | then ... | UseUseExplosion.rb:20:703:20:3172 | if ... | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:724:20:3156 | if ... | UseUseExplosion.rb:20:719:20:3156 | then ... | | UseUseExplosion.rb:20:728:20:732 | [post] self | UseUseExplosion.rb:20:749:20:753 | self | | UseUseExplosion.rb:20:728:20:732 | [post] self | UseUseExplosion.rb:20:3147:20:3152 | self | @@ -618,11 +481,7 @@ | UseUseExplosion.rb:20:728:20:732 | self | UseUseExplosion.rb:20:3147:20:3152 | self | | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [false] ( ... ) | | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [true] ( ... ) | -| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | -| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | | UseUseExplosion.rb:20:740:20:3140 | then ... | UseUseExplosion.rb:20:724:20:3156 | if ... | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:745:20:3140 | if ... | UseUseExplosion.rb:20:740:20:3140 | then ... | | UseUseExplosion.rb:20:749:20:753 | [post] self | UseUseExplosion.rb:20:770:20:774 | self | | UseUseExplosion.rb:20:749:20:753 | [post] self | UseUseExplosion.rb:20:3131:20:3136 | self | @@ -630,11 +489,7 @@ | UseUseExplosion.rb:20:749:20:753 | self | UseUseExplosion.rb:20:3131:20:3136 | self | | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [false] ( ... ) | | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [true] ( ... ) | -| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | -| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | | UseUseExplosion.rb:20:761:20:3124 | then ... | UseUseExplosion.rb:20:745:20:3140 | if ... | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:766:20:3124 | if ... | UseUseExplosion.rb:20:761:20:3124 | then ... | | UseUseExplosion.rb:20:770:20:774 | [post] self | UseUseExplosion.rb:20:791:20:795 | self | | UseUseExplosion.rb:20:770:20:774 | [post] self | UseUseExplosion.rb:20:3115:20:3120 | self | @@ -642,11 +497,7 @@ | UseUseExplosion.rb:20:770:20:774 | self | UseUseExplosion.rb:20:3115:20:3120 | self | | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [false] ( ... ) | | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [true] ( ... ) | -| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | -| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | | UseUseExplosion.rb:20:782:20:3108 | then ... | UseUseExplosion.rb:20:766:20:3124 | if ... | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:787:20:3108 | if ... | UseUseExplosion.rb:20:782:20:3108 | then ... | | UseUseExplosion.rb:20:791:20:795 | [post] self | UseUseExplosion.rb:20:812:20:816 | self | | UseUseExplosion.rb:20:791:20:795 | [post] self | UseUseExplosion.rb:20:3099:20:3104 | self | @@ -654,11 +505,7 @@ | UseUseExplosion.rb:20:791:20:795 | self | UseUseExplosion.rb:20:3099:20:3104 | self | | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [false] ( ... ) | | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [true] ( ... ) | -| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | -| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | | UseUseExplosion.rb:20:803:20:3092 | then ... | UseUseExplosion.rb:20:787:20:3108 | if ... | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:808:20:3092 | if ... | UseUseExplosion.rb:20:803:20:3092 | then ... | | UseUseExplosion.rb:20:812:20:816 | [post] self | UseUseExplosion.rb:20:833:20:837 | self | | UseUseExplosion.rb:20:812:20:816 | [post] self | UseUseExplosion.rb:20:3083:20:3088 | self | @@ -666,11 +513,7 @@ | UseUseExplosion.rb:20:812:20:816 | self | UseUseExplosion.rb:20:3083:20:3088 | self | | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [false] ( ... ) | | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [true] ( ... ) | -| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | -| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | | UseUseExplosion.rb:20:824:20:3076 | then ... | UseUseExplosion.rb:20:808:20:3092 | if ... | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:829:20:3076 | if ... | UseUseExplosion.rb:20:824:20:3076 | then ... | | UseUseExplosion.rb:20:833:20:837 | [post] self | UseUseExplosion.rb:20:854:20:858 | self | | UseUseExplosion.rb:20:833:20:837 | [post] self | UseUseExplosion.rb:20:3067:20:3072 | self | @@ -678,11 +521,7 @@ | UseUseExplosion.rb:20:833:20:837 | self | UseUseExplosion.rb:20:3067:20:3072 | self | | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [false] ( ... ) | | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [true] ( ... ) | -| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | -| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | | UseUseExplosion.rb:20:845:20:3060 | then ... | UseUseExplosion.rb:20:829:20:3076 | if ... | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:850:20:3060 | if ... | UseUseExplosion.rb:20:845:20:3060 | then ... | | UseUseExplosion.rb:20:854:20:858 | [post] self | UseUseExplosion.rb:20:875:20:879 | self | | UseUseExplosion.rb:20:854:20:858 | [post] self | UseUseExplosion.rb:20:3051:20:3056 | self | @@ -690,11 +529,7 @@ | UseUseExplosion.rb:20:854:20:858 | self | UseUseExplosion.rb:20:3051:20:3056 | self | | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [false] ( ... ) | | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [true] ( ... ) | -| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | -| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | | UseUseExplosion.rb:20:866:20:3044 | then ... | UseUseExplosion.rb:20:850:20:3060 | if ... | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:871:20:3044 | if ... | UseUseExplosion.rb:20:866:20:3044 | then ... | | UseUseExplosion.rb:20:875:20:879 | [post] self | UseUseExplosion.rb:20:896:20:900 | self | | UseUseExplosion.rb:20:875:20:879 | [post] self | UseUseExplosion.rb:20:3035:20:3040 | self | @@ -702,11 +537,7 @@ | UseUseExplosion.rb:20:875:20:879 | self | UseUseExplosion.rb:20:3035:20:3040 | self | | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [false] ( ... ) | | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [true] ( ... ) | -| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | -| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | | UseUseExplosion.rb:20:887:20:3028 | then ... | UseUseExplosion.rb:20:871:20:3044 | if ... | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:892:20:3028 | if ... | UseUseExplosion.rb:20:887:20:3028 | then ... | | UseUseExplosion.rb:20:896:20:900 | [post] self | UseUseExplosion.rb:20:917:20:921 | self | | UseUseExplosion.rb:20:896:20:900 | [post] self | UseUseExplosion.rb:20:3019:20:3024 | self | @@ -714,11 +545,7 @@ | UseUseExplosion.rb:20:896:20:900 | self | UseUseExplosion.rb:20:3019:20:3024 | self | | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [false] ( ... ) | | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [true] ( ... ) | -| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | -| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | | UseUseExplosion.rb:20:908:20:3012 | then ... | UseUseExplosion.rb:20:892:20:3028 | if ... | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:913:20:3012 | if ... | UseUseExplosion.rb:20:908:20:3012 | then ... | | UseUseExplosion.rb:20:917:20:921 | [post] self | UseUseExplosion.rb:20:938:20:942 | self | | UseUseExplosion.rb:20:917:20:921 | [post] self | UseUseExplosion.rb:20:3003:20:3008 | self | @@ -726,11 +553,7 @@ | UseUseExplosion.rb:20:917:20:921 | self | UseUseExplosion.rb:20:3003:20:3008 | self | | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [false] ( ... ) | | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [true] ( ... ) | -| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | -| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | | UseUseExplosion.rb:20:929:20:2996 | then ... | UseUseExplosion.rb:20:913:20:3012 | if ... | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:934:20:2996 | if ... | UseUseExplosion.rb:20:929:20:2996 | then ... | | UseUseExplosion.rb:20:938:20:942 | [post] self | UseUseExplosion.rb:20:959:20:963 | self | | UseUseExplosion.rb:20:938:20:942 | [post] self | UseUseExplosion.rb:20:2987:20:2992 | self | @@ -738,11 +561,7 @@ | UseUseExplosion.rb:20:938:20:942 | self | UseUseExplosion.rb:20:2987:20:2992 | self | | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [false] ( ... ) | | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [true] ( ... ) | -| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | -| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | | UseUseExplosion.rb:20:950:20:2980 | then ... | UseUseExplosion.rb:20:934:20:2996 | if ... | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:955:20:2980 | if ... | UseUseExplosion.rb:20:950:20:2980 | then ... | | UseUseExplosion.rb:20:959:20:963 | [post] self | UseUseExplosion.rb:20:980:20:984 | self | | UseUseExplosion.rb:20:959:20:963 | [post] self | UseUseExplosion.rb:20:2971:20:2976 | self | @@ -750,11 +569,7 @@ | UseUseExplosion.rb:20:959:20:963 | self | UseUseExplosion.rb:20:2971:20:2976 | self | | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [false] ( ... ) | | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [true] ( ... ) | -| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | -| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | | UseUseExplosion.rb:20:971:20:2964 | then ... | UseUseExplosion.rb:20:955:20:2980 | if ... | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:976:20:2964 | if ... | UseUseExplosion.rb:20:971:20:2964 | then ... | | UseUseExplosion.rb:20:980:20:984 | [post] self | UseUseExplosion.rb:20:1001:20:1005 | self | | UseUseExplosion.rb:20:980:20:984 | [post] self | UseUseExplosion.rb:20:2955:20:2960 | self | @@ -762,11 +577,7 @@ | UseUseExplosion.rb:20:980:20:984 | self | UseUseExplosion.rb:20:2955:20:2960 | self | | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [false] ( ... ) | | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [true] ( ... ) | -| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | -| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | | UseUseExplosion.rb:20:992:20:2948 | then ... | UseUseExplosion.rb:20:976:20:2964 | if ... | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:997:20:2948 | if ... | UseUseExplosion.rb:20:992:20:2948 | then ... | | UseUseExplosion.rb:20:1001:20:1005 | [post] self | UseUseExplosion.rb:20:1022:20:1026 | self | | UseUseExplosion.rb:20:1001:20:1005 | [post] self | UseUseExplosion.rb:20:2939:20:2944 | self | @@ -774,11 +585,7 @@ | UseUseExplosion.rb:20:1001:20:1005 | self | UseUseExplosion.rb:20:2939:20:2944 | self | | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [false] ( ... ) | | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [true] ( ... ) | -| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | -| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | | UseUseExplosion.rb:20:1013:20:2932 | then ... | UseUseExplosion.rb:20:997:20:2948 | if ... | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1018:20:2932 | if ... | UseUseExplosion.rb:20:1013:20:2932 | then ... | | UseUseExplosion.rb:20:1022:20:1026 | [post] self | UseUseExplosion.rb:20:1043:20:1047 | self | | UseUseExplosion.rb:20:1022:20:1026 | [post] self | UseUseExplosion.rb:20:2923:20:2928 | self | @@ -786,11 +593,7 @@ | UseUseExplosion.rb:20:1022:20:1026 | self | UseUseExplosion.rb:20:2923:20:2928 | self | | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [false] ( ... ) | | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [true] ( ... ) | -| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | -| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | | UseUseExplosion.rb:20:1034:20:2916 | then ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1039:20:2916 | if ... | UseUseExplosion.rb:20:1034:20:2916 | then ... | | UseUseExplosion.rb:20:1043:20:1047 | [post] self | UseUseExplosion.rb:20:1064:20:1068 | self | | UseUseExplosion.rb:20:1043:20:1047 | [post] self | UseUseExplosion.rb:20:2907:20:2912 | self | @@ -798,11 +601,7 @@ | UseUseExplosion.rb:20:1043:20:1047 | self | UseUseExplosion.rb:20:2907:20:2912 | self | | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [false] ( ... ) | | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [true] ( ... ) | -| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | -| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | | UseUseExplosion.rb:20:1055:20:2900 | then ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1060:20:2900 | if ... | UseUseExplosion.rb:20:1055:20:2900 | then ... | | UseUseExplosion.rb:20:1064:20:1068 | [post] self | UseUseExplosion.rb:20:1085:20:1089 | self | | UseUseExplosion.rb:20:1064:20:1068 | [post] self | UseUseExplosion.rb:20:2891:20:2896 | self | @@ -810,11 +609,7 @@ | UseUseExplosion.rb:20:1064:20:1068 | self | UseUseExplosion.rb:20:2891:20:2896 | self | | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [false] ( ... ) | | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [true] ( ... ) | -| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | -| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | | UseUseExplosion.rb:20:1076:20:2884 | then ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1081:20:2884 | if ... | UseUseExplosion.rb:20:1076:20:2884 | then ... | | UseUseExplosion.rb:20:1085:20:1089 | [post] self | UseUseExplosion.rb:20:1106:20:1110 | self | | UseUseExplosion.rb:20:1085:20:1089 | [post] self | UseUseExplosion.rb:20:2875:20:2880 | self | @@ -822,11 +617,7 @@ | UseUseExplosion.rb:20:1085:20:1089 | self | UseUseExplosion.rb:20:2875:20:2880 | self | | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [false] ( ... ) | | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [true] ( ... ) | -| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | -| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | | UseUseExplosion.rb:20:1097:20:2868 | then ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1102:20:2868 | if ... | UseUseExplosion.rb:20:1097:20:2868 | then ... | | UseUseExplosion.rb:20:1106:20:1110 | [post] self | UseUseExplosion.rb:20:1127:20:1131 | self | | UseUseExplosion.rb:20:1106:20:1110 | [post] self | UseUseExplosion.rb:20:2859:20:2864 | self | @@ -834,11 +625,7 @@ | UseUseExplosion.rb:20:1106:20:1110 | self | UseUseExplosion.rb:20:2859:20:2864 | self | | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [false] ( ... ) | | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [true] ( ... ) | -| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | -| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | | UseUseExplosion.rb:20:1118:20:2852 | then ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1123:20:2852 | if ... | UseUseExplosion.rb:20:1118:20:2852 | then ... | | UseUseExplosion.rb:20:1127:20:1131 | [post] self | UseUseExplosion.rb:20:1148:20:1152 | self | | UseUseExplosion.rb:20:1127:20:1131 | [post] self | UseUseExplosion.rb:20:2843:20:2848 | self | @@ -846,11 +633,7 @@ | UseUseExplosion.rb:20:1127:20:1131 | self | UseUseExplosion.rb:20:2843:20:2848 | self | | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [false] ( ... ) | | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [true] ( ... ) | -| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | -| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | | UseUseExplosion.rb:20:1139:20:2836 | then ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1144:20:2836 | if ... | UseUseExplosion.rb:20:1139:20:2836 | then ... | | UseUseExplosion.rb:20:1148:20:1152 | [post] self | UseUseExplosion.rb:20:1169:20:1173 | self | | UseUseExplosion.rb:20:1148:20:1152 | [post] self | UseUseExplosion.rb:20:2827:20:2832 | self | @@ -858,11 +641,7 @@ | UseUseExplosion.rb:20:1148:20:1152 | self | UseUseExplosion.rb:20:2827:20:2832 | self | | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [false] ( ... ) | | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [true] ( ... ) | -| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | -| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | | UseUseExplosion.rb:20:1160:20:2820 | then ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1165:20:2820 | if ... | UseUseExplosion.rb:20:1160:20:2820 | then ... | | UseUseExplosion.rb:20:1169:20:1173 | [post] self | UseUseExplosion.rb:20:1190:20:1194 | self | | UseUseExplosion.rb:20:1169:20:1173 | [post] self | UseUseExplosion.rb:20:2811:20:2816 | self | @@ -870,11 +649,7 @@ | UseUseExplosion.rb:20:1169:20:1173 | self | UseUseExplosion.rb:20:2811:20:2816 | self | | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [false] ( ... ) | | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [true] ( ... ) | -| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | -| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | | UseUseExplosion.rb:20:1181:20:2804 | then ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1186:20:2804 | if ... | UseUseExplosion.rb:20:1181:20:2804 | then ... | | UseUseExplosion.rb:20:1190:20:1194 | [post] self | UseUseExplosion.rb:20:1211:20:1215 | self | | UseUseExplosion.rb:20:1190:20:1194 | [post] self | UseUseExplosion.rb:20:2795:20:2800 | self | @@ -882,11 +657,7 @@ | UseUseExplosion.rb:20:1190:20:1194 | self | UseUseExplosion.rb:20:2795:20:2800 | self | | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [false] ( ... ) | | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [true] ( ... ) | -| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | -| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | | UseUseExplosion.rb:20:1202:20:2788 | then ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1207:20:2788 | if ... | UseUseExplosion.rb:20:1202:20:2788 | then ... | | UseUseExplosion.rb:20:1211:20:1215 | [post] self | UseUseExplosion.rb:20:1232:20:1236 | self | | UseUseExplosion.rb:20:1211:20:1215 | [post] self | UseUseExplosion.rb:20:2779:20:2784 | self | @@ -894,11 +665,7 @@ | UseUseExplosion.rb:20:1211:20:1215 | self | UseUseExplosion.rb:20:2779:20:2784 | self | | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [false] ( ... ) | | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [true] ( ... ) | -| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | -| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | | UseUseExplosion.rb:20:1223:20:2772 | then ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1228:20:2772 | if ... | UseUseExplosion.rb:20:1223:20:2772 | then ... | | UseUseExplosion.rb:20:1232:20:1236 | [post] self | UseUseExplosion.rb:20:1253:20:1257 | self | | UseUseExplosion.rb:20:1232:20:1236 | [post] self | UseUseExplosion.rb:20:2763:20:2768 | self | @@ -906,11 +673,7 @@ | UseUseExplosion.rb:20:1232:20:1236 | self | UseUseExplosion.rb:20:2763:20:2768 | self | | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [false] ( ... ) | | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [true] ( ... ) | -| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | -| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | | UseUseExplosion.rb:20:1244:20:2756 | then ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1249:20:2756 | if ... | UseUseExplosion.rb:20:1244:20:2756 | then ... | | UseUseExplosion.rb:20:1253:20:1257 | [post] self | UseUseExplosion.rb:20:1274:20:1278 | self | | UseUseExplosion.rb:20:1253:20:1257 | [post] self | UseUseExplosion.rb:20:2747:20:2752 | self | @@ -918,11 +681,7 @@ | UseUseExplosion.rb:20:1253:20:1257 | self | UseUseExplosion.rb:20:2747:20:2752 | self | | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [false] ( ... ) | | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [true] ( ... ) | -| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | -| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | | UseUseExplosion.rb:20:1265:20:2740 | then ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1270:20:2740 | if ... | UseUseExplosion.rb:20:1265:20:2740 | then ... | | UseUseExplosion.rb:20:1274:20:1278 | [post] self | UseUseExplosion.rb:20:1295:20:1299 | self | | UseUseExplosion.rb:20:1274:20:1278 | [post] self | UseUseExplosion.rb:20:2731:20:2736 | self | @@ -930,11 +689,7 @@ | UseUseExplosion.rb:20:1274:20:1278 | self | UseUseExplosion.rb:20:2731:20:2736 | self | | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [false] ( ... ) | | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [true] ( ... ) | -| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | -| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | | UseUseExplosion.rb:20:1286:20:2724 | then ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1291:20:2724 | if ... | UseUseExplosion.rb:20:1286:20:2724 | then ... | | UseUseExplosion.rb:20:1295:20:1299 | [post] self | UseUseExplosion.rb:20:1316:20:1320 | self | | UseUseExplosion.rb:20:1295:20:1299 | [post] self | UseUseExplosion.rb:20:2715:20:2720 | self | @@ -942,11 +697,7 @@ | UseUseExplosion.rb:20:1295:20:1299 | self | UseUseExplosion.rb:20:2715:20:2720 | self | | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [false] ( ... ) | | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [true] ( ... ) | -| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | -| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | | UseUseExplosion.rb:20:1307:20:2708 | then ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1312:20:2708 | if ... | UseUseExplosion.rb:20:1307:20:2708 | then ... | | UseUseExplosion.rb:20:1316:20:1320 | [post] self | UseUseExplosion.rb:20:1337:20:1341 | self | | UseUseExplosion.rb:20:1316:20:1320 | [post] self | UseUseExplosion.rb:20:2699:20:2704 | self | @@ -954,11 +705,7 @@ | UseUseExplosion.rb:20:1316:20:1320 | self | UseUseExplosion.rb:20:2699:20:2704 | self | | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [false] ( ... ) | | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [true] ( ... ) | -| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | -| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | | UseUseExplosion.rb:20:1328:20:2692 | then ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1333:20:2692 | if ... | UseUseExplosion.rb:20:1328:20:2692 | then ... | | UseUseExplosion.rb:20:1337:20:1341 | [post] self | UseUseExplosion.rb:20:1358:20:1362 | self | | UseUseExplosion.rb:20:1337:20:1341 | [post] self | UseUseExplosion.rb:20:2683:20:2688 | self | @@ -966,11 +713,7 @@ | UseUseExplosion.rb:20:1337:20:1341 | self | UseUseExplosion.rb:20:2683:20:2688 | self | | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [false] ( ... ) | | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [true] ( ... ) | -| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | -| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | | UseUseExplosion.rb:20:1349:20:2676 | then ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1354:20:2676 | if ... | UseUseExplosion.rb:20:1349:20:2676 | then ... | | UseUseExplosion.rb:20:1358:20:1362 | [post] self | UseUseExplosion.rb:20:1379:20:1383 | self | | UseUseExplosion.rb:20:1358:20:1362 | [post] self | UseUseExplosion.rb:20:2667:20:2672 | self | @@ -978,11 +721,7 @@ | UseUseExplosion.rb:20:1358:20:1362 | self | UseUseExplosion.rb:20:2667:20:2672 | self | | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [false] ( ... ) | | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [true] ( ... ) | -| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | -| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | | UseUseExplosion.rb:20:1370:20:2660 | then ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1375:20:2660 | if ... | UseUseExplosion.rb:20:1370:20:2660 | then ... | | UseUseExplosion.rb:20:1379:20:1383 | [post] self | UseUseExplosion.rb:20:1400:20:1404 | self | | UseUseExplosion.rb:20:1379:20:1383 | [post] self | UseUseExplosion.rb:20:2651:20:2656 | self | @@ -990,11 +729,7 @@ | UseUseExplosion.rb:20:1379:20:1383 | self | UseUseExplosion.rb:20:2651:20:2656 | self | | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [false] ( ... ) | | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [true] ( ... ) | -| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | -| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | | UseUseExplosion.rb:20:1391:20:2644 | then ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1396:20:2644 | if ... | UseUseExplosion.rb:20:1391:20:2644 | then ... | | UseUseExplosion.rb:20:1400:20:1404 | [post] self | UseUseExplosion.rb:20:1421:20:1425 | self | | UseUseExplosion.rb:20:1400:20:1404 | [post] self | UseUseExplosion.rb:20:2635:20:2640 | self | @@ -1002,11 +737,7 @@ | UseUseExplosion.rb:20:1400:20:1404 | self | UseUseExplosion.rb:20:2635:20:2640 | self | | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [false] ( ... ) | | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [true] ( ... ) | -| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | -| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | | UseUseExplosion.rb:20:1412:20:2628 | then ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1417:20:2628 | if ... | UseUseExplosion.rb:20:1412:20:2628 | then ... | | UseUseExplosion.rb:20:1421:20:1425 | [post] self | UseUseExplosion.rb:20:1442:20:1446 | self | | UseUseExplosion.rb:20:1421:20:1425 | [post] self | UseUseExplosion.rb:20:2619:20:2624 | self | @@ -1014,11 +745,7 @@ | UseUseExplosion.rb:20:1421:20:1425 | self | UseUseExplosion.rb:20:2619:20:2624 | self | | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [false] ( ... ) | | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [true] ( ... ) | -| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | -| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | | UseUseExplosion.rb:20:1433:20:2612 | then ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1438:20:2612 | if ... | UseUseExplosion.rb:20:1433:20:2612 | then ... | | UseUseExplosion.rb:20:1442:20:1446 | [post] self | UseUseExplosion.rb:20:1463:20:1467 | self | | UseUseExplosion.rb:20:1442:20:1446 | [post] self | UseUseExplosion.rb:20:2603:20:2608 | self | @@ -1026,11 +753,7 @@ | UseUseExplosion.rb:20:1442:20:1446 | self | UseUseExplosion.rb:20:2603:20:2608 | self | | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [false] ( ... ) | | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [true] ( ... ) | -| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | -| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | | UseUseExplosion.rb:20:1454:20:2596 | then ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1459:20:2596 | if ... | UseUseExplosion.rb:20:1454:20:2596 | then ... | | UseUseExplosion.rb:20:1463:20:1467 | [post] self | UseUseExplosion.rb:20:1484:20:1488 | self | | UseUseExplosion.rb:20:1463:20:1467 | [post] self | UseUseExplosion.rb:20:2587:20:2592 | self | @@ -1038,11 +761,7 @@ | UseUseExplosion.rb:20:1463:20:1467 | self | UseUseExplosion.rb:20:2587:20:2592 | self | | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [false] ( ... ) | | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [true] ( ... ) | -| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | -| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | | UseUseExplosion.rb:20:1475:20:2580 | then ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1480:20:2580 | if ... | UseUseExplosion.rb:20:1475:20:2580 | then ... | | UseUseExplosion.rb:20:1484:20:1488 | [post] self | UseUseExplosion.rb:20:1505:20:1509 | self | | UseUseExplosion.rb:20:1484:20:1488 | [post] self | UseUseExplosion.rb:20:2571:20:2576 | self | @@ -1050,11 +769,7 @@ | UseUseExplosion.rb:20:1484:20:1488 | self | UseUseExplosion.rb:20:2571:20:2576 | self | | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [false] ( ... ) | | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [true] ( ... ) | -| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | -| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | | UseUseExplosion.rb:20:1496:20:2564 | then ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1501:20:2564 | if ... | UseUseExplosion.rb:20:1496:20:2564 | then ... | | UseUseExplosion.rb:20:1505:20:1509 | [post] self | UseUseExplosion.rb:20:1526:20:1530 | self | | UseUseExplosion.rb:20:1505:20:1509 | [post] self | UseUseExplosion.rb:20:2555:20:2560 | self | @@ -1062,11 +777,7 @@ | UseUseExplosion.rb:20:1505:20:1509 | self | UseUseExplosion.rb:20:2555:20:2560 | self | | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [false] ( ... ) | | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [true] ( ... ) | -| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | -| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | | UseUseExplosion.rb:20:1517:20:2548 | then ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1522:20:2548 | if ... | UseUseExplosion.rb:20:1517:20:2548 | then ... | | UseUseExplosion.rb:20:1526:20:1530 | [post] self | UseUseExplosion.rb:20:1547:20:1551 | self | | UseUseExplosion.rb:20:1526:20:1530 | [post] self | UseUseExplosion.rb:20:2539:20:2544 | self | @@ -1074,11 +785,7 @@ | UseUseExplosion.rb:20:1526:20:1530 | self | UseUseExplosion.rb:20:2539:20:2544 | self | | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [false] ( ... ) | | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [true] ( ... ) | -| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | -| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | | UseUseExplosion.rb:20:1538:20:2532 | then ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1543:20:2532 | if ... | UseUseExplosion.rb:20:1538:20:2532 | then ... | | UseUseExplosion.rb:20:1547:20:1551 | [post] self | UseUseExplosion.rb:20:1568:20:1572 | self | | UseUseExplosion.rb:20:1547:20:1551 | [post] self | UseUseExplosion.rb:20:2523:20:2528 | self | @@ -1086,11 +793,7 @@ | UseUseExplosion.rb:20:1547:20:1551 | self | UseUseExplosion.rb:20:2523:20:2528 | self | | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [false] ( ... ) | | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [true] ( ... ) | -| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | -| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | | UseUseExplosion.rb:20:1559:20:2516 | then ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1564:20:2516 | if ... | UseUseExplosion.rb:20:1559:20:2516 | then ... | | UseUseExplosion.rb:20:1568:20:1572 | [post] self | UseUseExplosion.rb:20:1589:20:1593 | self | | UseUseExplosion.rb:20:1568:20:1572 | [post] self | UseUseExplosion.rb:20:2507:20:2512 | self | @@ -1098,11 +801,7 @@ | UseUseExplosion.rb:20:1568:20:1572 | self | UseUseExplosion.rb:20:2507:20:2512 | self | | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [false] ( ... ) | | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [true] ( ... ) | -| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | -| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | | UseUseExplosion.rb:20:1580:20:2500 | then ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1585:20:2500 | if ... | UseUseExplosion.rb:20:1580:20:2500 | then ... | | UseUseExplosion.rb:20:1589:20:1593 | [post] self | UseUseExplosion.rb:20:1610:20:1614 | self | | UseUseExplosion.rb:20:1589:20:1593 | [post] self | UseUseExplosion.rb:20:2491:20:2496 | self | @@ -1110,11 +809,7 @@ | UseUseExplosion.rb:20:1589:20:1593 | self | UseUseExplosion.rb:20:2491:20:2496 | self | | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [false] ( ... ) | | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [true] ( ... ) | -| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | -| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | | UseUseExplosion.rb:20:1601:20:2484 | then ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1606:20:2484 | if ... | UseUseExplosion.rb:20:1601:20:2484 | then ... | | UseUseExplosion.rb:20:1610:20:1614 | [post] self | UseUseExplosion.rb:20:1631:20:1635 | self | | UseUseExplosion.rb:20:1610:20:1614 | [post] self | UseUseExplosion.rb:20:2475:20:2480 | self | @@ -1122,11 +817,7 @@ | UseUseExplosion.rb:20:1610:20:1614 | self | UseUseExplosion.rb:20:2475:20:2480 | self | | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [false] ( ... ) | | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [true] ( ... ) | -| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | -| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | | UseUseExplosion.rb:20:1622:20:2468 | then ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1627:20:2468 | if ... | UseUseExplosion.rb:20:1622:20:2468 | then ... | | UseUseExplosion.rb:20:1631:20:1635 | [post] self | UseUseExplosion.rb:20:1652:20:1656 | self | | UseUseExplosion.rb:20:1631:20:1635 | [post] self | UseUseExplosion.rb:20:2459:20:2464 | self | @@ -1134,11 +825,7 @@ | UseUseExplosion.rb:20:1631:20:1635 | self | UseUseExplosion.rb:20:2459:20:2464 | self | | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [false] ( ... ) | | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [true] ( ... ) | -| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | -| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | | UseUseExplosion.rb:20:1643:20:2452 | then ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1648:20:2452 | if ... | UseUseExplosion.rb:20:1643:20:2452 | then ... | | UseUseExplosion.rb:20:1652:20:1656 | [post] self | UseUseExplosion.rb:20:1673:20:1677 | self | | UseUseExplosion.rb:20:1652:20:1656 | [post] self | UseUseExplosion.rb:20:2443:20:2448 | self | @@ -1146,11 +833,7 @@ | UseUseExplosion.rb:20:1652:20:1656 | self | UseUseExplosion.rb:20:2443:20:2448 | self | | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [false] ( ... ) | | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [true] ( ... ) | -| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | -| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | | UseUseExplosion.rb:20:1664:20:2436 | then ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1669:20:2436 | if ... | UseUseExplosion.rb:20:1664:20:2436 | then ... | | UseUseExplosion.rb:20:1673:20:1677 | [post] self | UseUseExplosion.rb:20:1694:20:1698 | self | | UseUseExplosion.rb:20:1673:20:1677 | [post] self | UseUseExplosion.rb:20:2427:20:2432 | self | @@ -1158,11 +841,7 @@ | UseUseExplosion.rb:20:1673:20:1677 | self | UseUseExplosion.rb:20:2427:20:2432 | self | | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [false] ( ... ) | | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [true] ( ... ) | -| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | -| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | | UseUseExplosion.rb:20:1685:20:2420 | then ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1690:20:2420 | if ... | UseUseExplosion.rb:20:1685:20:2420 | then ... | | UseUseExplosion.rb:20:1694:20:1698 | [post] self | UseUseExplosion.rb:20:1715:20:1719 | self | | UseUseExplosion.rb:20:1694:20:1698 | [post] self | UseUseExplosion.rb:20:2411:20:2416 | self | @@ -1170,11 +849,7 @@ | UseUseExplosion.rb:20:1694:20:1698 | self | UseUseExplosion.rb:20:2411:20:2416 | self | | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [false] ( ... ) | | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [true] ( ... ) | -| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | -| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | | UseUseExplosion.rb:20:1706:20:2404 | then ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1711:20:2404 | if ... | UseUseExplosion.rb:20:1706:20:2404 | then ... | | UseUseExplosion.rb:20:1715:20:1719 | [post] self | UseUseExplosion.rb:20:1736:20:1740 | self | | UseUseExplosion.rb:20:1715:20:1719 | [post] self | UseUseExplosion.rb:20:2395:20:2400 | self | @@ -1182,11 +857,7 @@ | UseUseExplosion.rb:20:1715:20:1719 | self | UseUseExplosion.rb:20:2395:20:2400 | self | | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [false] ( ... ) | | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [true] ( ... ) | -| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | -| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | | UseUseExplosion.rb:20:1727:20:2388 | then ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1732:20:2388 | if ... | UseUseExplosion.rb:20:1727:20:2388 | then ... | | UseUseExplosion.rb:20:1736:20:1740 | [post] self | UseUseExplosion.rb:20:1757:20:1761 | self | | UseUseExplosion.rb:20:1736:20:1740 | [post] self | UseUseExplosion.rb:20:2379:20:2384 | self | @@ -1194,11 +865,7 @@ | UseUseExplosion.rb:20:1736:20:1740 | self | UseUseExplosion.rb:20:2379:20:2384 | self | | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [false] ( ... ) | | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [true] ( ... ) | -| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | -| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | | UseUseExplosion.rb:20:1748:20:2372 | then ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1753:20:2372 | if ... | UseUseExplosion.rb:20:1748:20:2372 | then ... | | UseUseExplosion.rb:20:1757:20:1761 | [post] self | UseUseExplosion.rb:20:1778:20:1782 | self | | UseUseExplosion.rb:20:1757:20:1761 | [post] self | UseUseExplosion.rb:20:2363:20:2368 | self | @@ -1206,11 +873,7 @@ | UseUseExplosion.rb:20:1757:20:1761 | self | UseUseExplosion.rb:20:2363:20:2368 | self | | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [false] ( ... ) | | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [true] ( ... ) | -| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | -| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | | UseUseExplosion.rb:20:1769:20:2356 | then ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1774:20:2356 | if ... | UseUseExplosion.rb:20:1769:20:2356 | then ... | | UseUseExplosion.rb:20:1778:20:1782 | [post] self | UseUseExplosion.rb:20:1799:20:1803 | self | | UseUseExplosion.rb:20:1778:20:1782 | [post] self | UseUseExplosion.rb:20:2347:20:2352 | self | @@ -1218,11 +881,7 @@ | UseUseExplosion.rb:20:1778:20:1782 | self | UseUseExplosion.rb:20:2347:20:2352 | self | | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [false] ( ... ) | | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [true] ( ... ) | -| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | -| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | | UseUseExplosion.rb:20:1790:20:2340 | then ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1795:20:2340 | if ... | UseUseExplosion.rb:20:1790:20:2340 | then ... | | UseUseExplosion.rb:20:1799:20:1803 | [post] self | UseUseExplosion.rb:20:1820:20:1824 | self | | UseUseExplosion.rb:20:1799:20:1803 | [post] self | UseUseExplosion.rb:20:2331:20:2336 | self | @@ -1230,11 +889,7 @@ | UseUseExplosion.rb:20:1799:20:1803 | self | UseUseExplosion.rb:20:2331:20:2336 | self | | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [false] ( ... ) | | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [true] ( ... ) | -| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | -| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | | UseUseExplosion.rb:20:1811:20:2324 | then ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1816:20:2324 | if ... | UseUseExplosion.rb:20:1811:20:2324 | then ... | | UseUseExplosion.rb:20:1820:20:1824 | [post] self | UseUseExplosion.rb:20:1841:20:1845 | self | | UseUseExplosion.rb:20:1820:20:1824 | [post] self | UseUseExplosion.rb:20:2315:20:2320 | self | @@ -1242,11 +897,7 @@ | UseUseExplosion.rb:20:1820:20:1824 | self | UseUseExplosion.rb:20:2315:20:2320 | self | | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [false] ( ... ) | | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [true] ( ... ) | -| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | -| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | | UseUseExplosion.rb:20:1832:20:2308 | then ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1837:20:2308 | if ... | UseUseExplosion.rb:20:1832:20:2308 | then ... | | UseUseExplosion.rb:20:1841:20:1845 | [post] self | UseUseExplosion.rb:20:1862:20:1866 | self | | UseUseExplosion.rb:20:1841:20:1845 | [post] self | UseUseExplosion.rb:20:2299:20:2304 | self | @@ -1254,11 +905,7 @@ | UseUseExplosion.rb:20:1841:20:1845 | self | UseUseExplosion.rb:20:2299:20:2304 | self | | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [false] ( ... ) | | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [true] ( ... ) | -| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | -| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | | UseUseExplosion.rb:20:1853:20:2292 | then ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1858:20:2292 | if ... | UseUseExplosion.rb:20:1853:20:2292 | then ... | | UseUseExplosion.rb:20:1862:20:1866 | [post] self | UseUseExplosion.rb:20:1883:20:1887 | self | | UseUseExplosion.rb:20:1862:20:1866 | [post] self | UseUseExplosion.rb:20:2283:20:2288 | self | @@ -1266,11 +913,7 @@ | UseUseExplosion.rb:20:1862:20:1866 | self | UseUseExplosion.rb:20:2283:20:2288 | self | | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [false] ( ... ) | | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [true] ( ... ) | -| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | -| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | | UseUseExplosion.rb:20:1874:20:2276 | then ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1879:20:2276 | if ... | UseUseExplosion.rb:20:1874:20:2276 | then ... | | UseUseExplosion.rb:20:1883:20:1887 | [post] self | UseUseExplosion.rb:20:1904:20:1908 | self | | UseUseExplosion.rb:20:1883:20:1887 | [post] self | UseUseExplosion.rb:20:2267:20:2272 | self | @@ -1278,11 +921,7 @@ | UseUseExplosion.rb:20:1883:20:1887 | self | UseUseExplosion.rb:20:2267:20:2272 | self | | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [false] ( ... ) | | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [true] ( ... ) | -| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | -| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | | UseUseExplosion.rb:20:1895:20:2260 | then ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1900:20:2260 | if ... | UseUseExplosion.rb:20:1895:20:2260 | then ... | | UseUseExplosion.rb:20:1904:20:1908 | [post] self | UseUseExplosion.rb:20:1925:20:1929 | self | | UseUseExplosion.rb:20:1904:20:1908 | [post] self | UseUseExplosion.rb:20:2251:20:2256 | self | @@ -1290,11 +929,7 @@ | UseUseExplosion.rb:20:1904:20:1908 | self | UseUseExplosion.rb:20:2251:20:2256 | self | | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [false] ( ... ) | | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [true] ( ... ) | -| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | -| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | | UseUseExplosion.rb:20:1916:20:2244 | then ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1921:20:2244 | if ... | UseUseExplosion.rb:20:1916:20:2244 | then ... | | UseUseExplosion.rb:20:1925:20:1929 | [post] self | UseUseExplosion.rb:20:1945:20:1949 | self | | UseUseExplosion.rb:20:1925:20:1929 | [post] self | UseUseExplosion.rb:20:2235:20:2240 | self | @@ -1302,11 +937,7 @@ | UseUseExplosion.rb:20:1925:20:1929 | self | UseUseExplosion.rb:20:2235:20:2240 | self | | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [false] ( ... ) | | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [true] ( ... ) | -| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | -| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | | UseUseExplosion.rb:20:1936:20:2228 | then ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1941:20:2228 | if ... | UseUseExplosion.rb:20:1936:20:2228 | then ... | | UseUseExplosion.rb:20:1945:20:1949 | [post] self | UseUseExplosion.rb:20:1965:20:1969 | self | | UseUseExplosion.rb:20:1945:20:1949 | [post] self | UseUseExplosion.rb:20:2219:20:2224 | self | @@ -1314,11 +945,7 @@ | UseUseExplosion.rb:20:1945:20:1949 | self | UseUseExplosion.rb:20:2219:20:2224 | self | | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [false] ( ... ) | | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [true] ( ... ) | -| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | -| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | | UseUseExplosion.rb:20:1956:20:2212 | then ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1961:20:2212 | if ... | UseUseExplosion.rb:20:1956:20:2212 | then ... | | UseUseExplosion.rb:20:1965:20:1969 | [post] self | UseUseExplosion.rb:20:1985:20:1989 | self | | UseUseExplosion.rb:20:1965:20:1969 | [post] self | UseUseExplosion.rb:20:2203:20:2208 | self | @@ -1326,11 +953,7 @@ | UseUseExplosion.rb:20:1965:20:1969 | self | UseUseExplosion.rb:20:2203:20:2208 | self | | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [false] ( ... ) | | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [true] ( ... ) | -| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | -| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | | UseUseExplosion.rb:20:1976:20:2196 | then ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1981:20:2196 | if ... | UseUseExplosion.rb:20:1976:20:2196 | then ... | | UseUseExplosion.rb:20:1985:20:1989 | [post] self | UseUseExplosion.rb:20:2005:20:2009 | self | | UseUseExplosion.rb:20:1985:20:1989 | [post] self | UseUseExplosion.rb:20:2187:20:2192 | self | @@ -1338,11 +961,7 @@ | UseUseExplosion.rb:20:1985:20:1989 | self | UseUseExplosion.rb:20:2187:20:2192 | self | | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [false] ( ... ) | | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [true] ( ... ) | -| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | -| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | | UseUseExplosion.rb:20:1996:20:2180 | then ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2001:20:2180 | if ... | UseUseExplosion.rb:20:1996:20:2180 | then ... | | UseUseExplosion.rb:20:2005:20:2009 | [post] self | UseUseExplosion.rb:20:2025:20:2029 | self | | UseUseExplosion.rb:20:2005:20:2009 | [post] self | UseUseExplosion.rb:20:2171:20:2176 | self | @@ -1350,11 +969,7 @@ | UseUseExplosion.rb:20:2005:20:2009 | self | UseUseExplosion.rb:20:2171:20:2176 | self | | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [false] ( ... ) | | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [true] ( ... ) | -| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | -| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | | UseUseExplosion.rb:20:2016:20:2164 | then ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2021:20:2164 | if ... | UseUseExplosion.rb:20:2016:20:2164 | then ... | | UseUseExplosion.rb:20:2025:20:2029 | [post] self | UseUseExplosion.rb:20:2045:20:2049 | self | | UseUseExplosion.rb:20:2025:20:2029 | [post] self | UseUseExplosion.rb:20:2155:20:2160 | self | @@ -1362,11 +977,7 @@ | UseUseExplosion.rb:20:2025:20:2029 | self | UseUseExplosion.rb:20:2155:20:2160 | self | | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [false] ( ... ) | | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [true] ( ... ) | -| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | -| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | | UseUseExplosion.rb:20:2036:20:2148 | then ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2041:20:2148 | if ... | UseUseExplosion.rb:20:2036:20:2148 | then ... | | UseUseExplosion.rb:20:2045:20:2049 | [post] self | UseUseExplosion.rb:20:2065:20:2069 | self | | UseUseExplosion.rb:20:2045:20:2049 | [post] self | UseUseExplosion.rb:20:2139:20:2144 | self | @@ -1374,11 +985,7 @@ | UseUseExplosion.rb:20:2045:20:2049 | self | UseUseExplosion.rb:20:2139:20:2144 | self | | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [false] ( ... ) | | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [true] ( ... ) | -| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | -| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | | UseUseExplosion.rb:20:2056:20:2132 | then ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2061:20:2132 | if ... | UseUseExplosion.rb:20:2056:20:2132 | then ... | | UseUseExplosion.rb:20:2065:20:2069 | [post] self | UseUseExplosion.rb:20:2085:20:2089 | self | | UseUseExplosion.rb:20:2065:20:2069 | [post] self | UseUseExplosion.rb:20:2123:20:2128 | self | @@ -1386,11 +993,7 @@ | UseUseExplosion.rb:20:2065:20:2069 | self | UseUseExplosion.rb:20:2123:20:2128 | self | | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [false] ( ... ) | | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [true] ( ... ) | -| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | -| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | | UseUseExplosion.rb:20:2076:20:2116 | then ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2081:20:2116 | if ... | UseUseExplosion.rb:20:2076:20:2116 | then ... | | UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | | UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2107:20:2112 | self | @@ -1398,709 +1001,509 @@ | UseUseExplosion.rb:20:2085:20:2089 | self | UseUseExplosion.rb:20:2107:20:2112 | self | | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [false] ( ... ) | | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [true] ( ... ) | -| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | -| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2096:20:2099 | then ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | -| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | -| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | | UseUseExplosion.rb:20:2102:20:2112 | else ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | -| UseUseExplosion.rb:20:2107:20:2112 | [post] self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2107:20:2112 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2107:20:2112 | call to use | UseUseExplosion.rb:20:2102:20:2112 | else ... | -| UseUseExplosion.rb:20:2107:20:2112 | self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2111:20:2111 | x | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | -| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | +| UseUseExplosion.rb:20:2107:20:2112 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2111:20:2111 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2118:20:2128 | else ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | -| UseUseExplosion.rb:20:2123:20:2128 | [post] self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2123:20:2128 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2123:20:2128 | call to use | UseUseExplosion.rb:20:2118:20:2128 | else ... | -| UseUseExplosion.rb:20:2123:20:2128 | self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2127:20:2127 | x | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | -| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | +| UseUseExplosion.rb:20:2123:20:2128 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2127:20:2127 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2134:20:2144 | else ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | -| UseUseExplosion.rb:20:2139:20:2144 | [post] self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2139:20:2144 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2139:20:2144 | call to use | UseUseExplosion.rb:20:2134:20:2144 | else ... | -| UseUseExplosion.rb:20:2139:20:2144 | self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2143:20:2143 | x | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | -| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | +| UseUseExplosion.rb:20:2139:20:2144 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2143:20:2143 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2150:20:2160 | else ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | -| UseUseExplosion.rb:20:2155:20:2160 | [post] self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2155:20:2160 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2155:20:2160 | call to use | UseUseExplosion.rb:20:2150:20:2160 | else ... | -| UseUseExplosion.rb:20:2155:20:2160 | self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2159:20:2159 | x | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | -| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | +| UseUseExplosion.rb:20:2155:20:2160 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2159:20:2159 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2166:20:2176 | else ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | -| UseUseExplosion.rb:20:2171:20:2176 | [post] self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2171:20:2176 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2171:20:2176 | call to use | UseUseExplosion.rb:20:2166:20:2176 | else ... | -| UseUseExplosion.rb:20:2171:20:2176 | self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2175:20:2175 | x | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | -| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | +| UseUseExplosion.rb:20:2171:20:2176 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2175:20:2175 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2182:20:2192 | else ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | -| UseUseExplosion.rb:20:2187:20:2192 | [post] self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2187:20:2192 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2187:20:2192 | call to use | UseUseExplosion.rb:20:2182:20:2192 | else ... | -| UseUseExplosion.rb:20:2187:20:2192 | self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2191:20:2191 | x | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | -| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | +| UseUseExplosion.rb:20:2187:20:2192 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2191:20:2191 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2198:20:2208 | else ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | -| UseUseExplosion.rb:20:2203:20:2208 | [post] self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2203:20:2208 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2203:20:2208 | call to use | UseUseExplosion.rb:20:2198:20:2208 | else ... | -| UseUseExplosion.rb:20:2203:20:2208 | self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2207:20:2207 | x | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | -| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | +| UseUseExplosion.rb:20:2203:20:2208 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2207:20:2207 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2214:20:2224 | else ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | -| UseUseExplosion.rb:20:2219:20:2224 | [post] self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2219:20:2224 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2219:20:2224 | call to use | UseUseExplosion.rb:20:2214:20:2224 | else ... | -| UseUseExplosion.rb:20:2219:20:2224 | self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2223:20:2223 | x | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | -| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | +| UseUseExplosion.rb:20:2219:20:2224 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2223:20:2223 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2230:20:2240 | else ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | -| UseUseExplosion.rb:20:2235:20:2240 | [post] self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2235:20:2240 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2235:20:2240 | call to use | UseUseExplosion.rb:20:2230:20:2240 | else ... | -| UseUseExplosion.rb:20:2235:20:2240 | self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2239:20:2239 | x | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | -| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | +| UseUseExplosion.rb:20:2235:20:2240 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2239:20:2239 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2246:20:2256 | else ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | -| UseUseExplosion.rb:20:2251:20:2256 | [post] self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2251:20:2256 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2251:20:2256 | call to use | UseUseExplosion.rb:20:2246:20:2256 | else ... | -| UseUseExplosion.rb:20:2251:20:2256 | self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2255:20:2255 | x | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | -| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | +| UseUseExplosion.rb:20:2251:20:2256 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2255:20:2255 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2262:20:2272 | else ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | -| UseUseExplosion.rb:20:2267:20:2272 | [post] self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2267:20:2272 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2267:20:2272 | call to use | UseUseExplosion.rb:20:2262:20:2272 | else ... | -| UseUseExplosion.rb:20:2267:20:2272 | self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2271:20:2271 | x | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | -| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | +| UseUseExplosion.rb:20:2267:20:2272 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2271:20:2271 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2278:20:2288 | else ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | -| UseUseExplosion.rb:20:2283:20:2288 | [post] self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2283:20:2288 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2283:20:2288 | call to use | UseUseExplosion.rb:20:2278:20:2288 | else ... | -| UseUseExplosion.rb:20:2283:20:2288 | self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2287:20:2287 | x | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | -| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | +| UseUseExplosion.rb:20:2283:20:2288 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2287:20:2287 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2294:20:2304 | else ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | -| UseUseExplosion.rb:20:2299:20:2304 | [post] self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2299:20:2304 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2299:20:2304 | call to use | UseUseExplosion.rb:20:2294:20:2304 | else ... | -| UseUseExplosion.rb:20:2299:20:2304 | self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2303:20:2303 | x | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | -| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | +| UseUseExplosion.rb:20:2299:20:2304 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2303:20:2303 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2310:20:2320 | else ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | -| UseUseExplosion.rb:20:2315:20:2320 | [post] self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2315:20:2320 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2315:20:2320 | call to use | UseUseExplosion.rb:20:2310:20:2320 | else ... | -| UseUseExplosion.rb:20:2315:20:2320 | self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2319:20:2319 | x | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | -| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | +| UseUseExplosion.rb:20:2315:20:2320 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2319:20:2319 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2326:20:2336 | else ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | -| UseUseExplosion.rb:20:2331:20:2336 | [post] self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2331:20:2336 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2331:20:2336 | call to use | UseUseExplosion.rb:20:2326:20:2336 | else ... | -| UseUseExplosion.rb:20:2331:20:2336 | self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2335:20:2335 | x | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | -| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | +| UseUseExplosion.rb:20:2331:20:2336 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2335:20:2335 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2342:20:2352 | else ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | -| UseUseExplosion.rb:20:2347:20:2352 | [post] self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2347:20:2352 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2347:20:2352 | call to use | UseUseExplosion.rb:20:2342:20:2352 | else ... | -| UseUseExplosion.rb:20:2347:20:2352 | self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2351:20:2351 | x | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | -| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | +| UseUseExplosion.rb:20:2347:20:2352 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2351:20:2351 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2358:20:2368 | else ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | -| UseUseExplosion.rb:20:2363:20:2368 | [post] self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2363:20:2368 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2363:20:2368 | call to use | UseUseExplosion.rb:20:2358:20:2368 | else ... | -| UseUseExplosion.rb:20:2363:20:2368 | self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2367:20:2367 | x | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | -| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | +| UseUseExplosion.rb:20:2363:20:2368 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2367:20:2367 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2374:20:2384 | else ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | -| UseUseExplosion.rb:20:2379:20:2384 | [post] self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2379:20:2384 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2379:20:2384 | call to use | UseUseExplosion.rb:20:2374:20:2384 | else ... | -| UseUseExplosion.rb:20:2379:20:2384 | self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2383:20:2383 | x | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | -| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | +| UseUseExplosion.rb:20:2379:20:2384 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2383:20:2383 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2390:20:2400 | else ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | -| UseUseExplosion.rb:20:2395:20:2400 | [post] self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2395:20:2400 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2395:20:2400 | call to use | UseUseExplosion.rb:20:2390:20:2400 | else ... | -| UseUseExplosion.rb:20:2395:20:2400 | self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2399:20:2399 | x | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | -| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | +| UseUseExplosion.rb:20:2395:20:2400 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2399:20:2399 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2406:20:2416 | else ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | -| UseUseExplosion.rb:20:2411:20:2416 | [post] self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2411:20:2416 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2411:20:2416 | call to use | UseUseExplosion.rb:20:2406:20:2416 | else ... | -| UseUseExplosion.rb:20:2411:20:2416 | self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2415:20:2415 | x | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | -| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | +| UseUseExplosion.rb:20:2411:20:2416 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2415:20:2415 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2422:20:2432 | else ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | -| UseUseExplosion.rb:20:2427:20:2432 | [post] self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2427:20:2432 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2427:20:2432 | call to use | UseUseExplosion.rb:20:2422:20:2432 | else ... | -| UseUseExplosion.rb:20:2427:20:2432 | self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2431:20:2431 | x | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | -| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | +| UseUseExplosion.rb:20:2427:20:2432 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2431:20:2431 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2438:20:2448 | else ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | -| UseUseExplosion.rb:20:2443:20:2448 | [post] self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2443:20:2448 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2443:20:2448 | call to use | UseUseExplosion.rb:20:2438:20:2448 | else ... | -| UseUseExplosion.rb:20:2443:20:2448 | self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2447:20:2447 | x | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | -| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | +| UseUseExplosion.rb:20:2443:20:2448 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2447:20:2447 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2454:20:2464 | else ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | -| UseUseExplosion.rb:20:2459:20:2464 | [post] self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2459:20:2464 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2459:20:2464 | call to use | UseUseExplosion.rb:20:2454:20:2464 | else ... | -| UseUseExplosion.rb:20:2459:20:2464 | self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2463:20:2463 | x | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | -| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | +| UseUseExplosion.rb:20:2459:20:2464 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2463:20:2463 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2470:20:2480 | else ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | -| UseUseExplosion.rb:20:2475:20:2480 | [post] self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2475:20:2480 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2475:20:2480 | call to use | UseUseExplosion.rb:20:2470:20:2480 | else ... | -| UseUseExplosion.rb:20:2475:20:2480 | self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2479:20:2479 | x | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | -| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | +| UseUseExplosion.rb:20:2475:20:2480 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2479:20:2479 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2486:20:2496 | else ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | -| UseUseExplosion.rb:20:2491:20:2496 | [post] self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2491:20:2496 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2491:20:2496 | call to use | UseUseExplosion.rb:20:2486:20:2496 | else ... | -| UseUseExplosion.rb:20:2491:20:2496 | self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2495:20:2495 | x | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | -| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | +| UseUseExplosion.rb:20:2491:20:2496 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2495:20:2495 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2502:20:2512 | else ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | -| UseUseExplosion.rb:20:2507:20:2512 | [post] self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2507:20:2512 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2507:20:2512 | call to use | UseUseExplosion.rb:20:2502:20:2512 | else ... | -| UseUseExplosion.rb:20:2507:20:2512 | self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2511:20:2511 | x | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | -| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | +| UseUseExplosion.rb:20:2507:20:2512 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2511:20:2511 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2518:20:2528 | else ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | -| UseUseExplosion.rb:20:2523:20:2528 | [post] self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2523:20:2528 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2523:20:2528 | call to use | UseUseExplosion.rb:20:2518:20:2528 | else ... | -| UseUseExplosion.rb:20:2523:20:2528 | self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2527:20:2527 | x | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | -| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | +| UseUseExplosion.rb:20:2523:20:2528 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2527:20:2527 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2534:20:2544 | else ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | -| UseUseExplosion.rb:20:2539:20:2544 | [post] self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2539:20:2544 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2539:20:2544 | call to use | UseUseExplosion.rb:20:2534:20:2544 | else ... | -| UseUseExplosion.rb:20:2539:20:2544 | self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2543:20:2543 | x | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | -| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | +| UseUseExplosion.rb:20:2539:20:2544 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2543:20:2543 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2550:20:2560 | else ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | -| UseUseExplosion.rb:20:2555:20:2560 | [post] self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2555:20:2560 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2555:20:2560 | call to use | UseUseExplosion.rb:20:2550:20:2560 | else ... | -| UseUseExplosion.rb:20:2555:20:2560 | self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2559:20:2559 | x | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | -| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | +| UseUseExplosion.rb:20:2555:20:2560 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2559:20:2559 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2566:20:2576 | else ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | -| UseUseExplosion.rb:20:2571:20:2576 | [post] self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2571:20:2576 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2571:20:2576 | call to use | UseUseExplosion.rb:20:2566:20:2576 | else ... | -| UseUseExplosion.rb:20:2571:20:2576 | self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2575:20:2575 | x | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | -| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | +| UseUseExplosion.rb:20:2571:20:2576 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2575:20:2575 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2582:20:2592 | else ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | -| UseUseExplosion.rb:20:2587:20:2592 | [post] self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2587:20:2592 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2587:20:2592 | call to use | UseUseExplosion.rb:20:2582:20:2592 | else ... | -| UseUseExplosion.rb:20:2587:20:2592 | self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2591:20:2591 | x | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | -| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | +| UseUseExplosion.rb:20:2587:20:2592 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2591:20:2591 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2598:20:2608 | else ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | -| UseUseExplosion.rb:20:2603:20:2608 | [post] self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2603:20:2608 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2603:20:2608 | call to use | UseUseExplosion.rb:20:2598:20:2608 | else ... | -| UseUseExplosion.rb:20:2603:20:2608 | self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2607:20:2607 | x | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | -| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | +| UseUseExplosion.rb:20:2603:20:2608 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2607:20:2607 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2614:20:2624 | else ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | -| UseUseExplosion.rb:20:2619:20:2624 | [post] self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2619:20:2624 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2619:20:2624 | call to use | UseUseExplosion.rb:20:2614:20:2624 | else ... | -| UseUseExplosion.rb:20:2619:20:2624 | self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2623:20:2623 | x | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | -| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | +| UseUseExplosion.rb:20:2619:20:2624 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2623:20:2623 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2630:20:2640 | else ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | -| UseUseExplosion.rb:20:2635:20:2640 | [post] self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2635:20:2640 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2635:20:2640 | call to use | UseUseExplosion.rb:20:2630:20:2640 | else ... | -| UseUseExplosion.rb:20:2635:20:2640 | self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2639:20:2639 | x | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | -| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | +| UseUseExplosion.rb:20:2635:20:2640 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2639:20:2639 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2646:20:2656 | else ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | -| UseUseExplosion.rb:20:2651:20:2656 | [post] self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2651:20:2656 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2651:20:2656 | call to use | UseUseExplosion.rb:20:2646:20:2656 | else ... | -| UseUseExplosion.rb:20:2651:20:2656 | self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2655:20:2655 | x | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | -| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | +| UseUseExplosion.rb:20:2651:20:2656 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2655:20:2655 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2662:20:2672 | else ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | -| UseUseExplosion.rb:20:2667:20:2672 | [post] self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2667:20:2672 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2667:20:2672 | call to use | UseUseExplosion.rb:20:2662:20:2672 | else ... | -| UseUseExplosion.rb:20:2667:20:2672 | self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2671:20:2671 | x | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | -| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | +| UseUseExplosion.rb:20:2667:20:2672 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2671:20:2671 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2678:20:2688 | else ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | -| UseUseExplosion.rb:20:2683:20:2688 | [post] self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2683:20:2688 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2683:20:2688 | call to use | UseUseExplosion.rb:20:2678:20:2688 | else ... | -| UseUseExplosion.rb:20:2683:20:2688 | self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2687:20:2687 | x | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | -| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | +| UseUseExplosion.rb:20:2683:20:2688 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2687:20:2687 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2694:20:2704 | else ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | -| UseUseExplosion.rb:20:2699:20:2704 | [post] self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2699:20:2704 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2699:20:2704 | call to use | UseUseExplosion.rb:20:2694:20:2704 | else ... | -| UseUseExplosion.rb:20:2699:20:2704 | self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2703:20:2703 | x | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | -| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | +| UseUseExplosion.rb:20:2699:20:2704 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2703:20:2703 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2710:20:2720 | else ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | -| UseUseExplosion.rb:20:2715:20:2720 | [post] self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2715:20:2720 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2715:20:2720 | call to use | UseUseExplosion.rb:20:2710:20:2720 | else ... | -| UseUseExplosion.rb:20:2715:20:2720 | self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2719:20:2719 | x | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | -| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | +| UseUseExplosion.rb:20:2715:20:2720 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2719:20:2719 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2726:20:2736 | else ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | -| UseUseExplosion.rb:20:2731:20:2736 | [post] self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2731:20:2736 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2731:20:2736 | call to use | UseUseExplosion.rb:20:2726:20:2736 | else ... | -| UseUseExplosion.rb:20:2731:20:2736 | self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2735:20:2735 | x | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | -| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | +| UseUseExplosion.rb:20:2731:20:2736 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2735:20:2735 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2742:20:2752 | else ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | -| UseUseExplosion.rb:20:2747:20:2752 | [post] self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2747:20:2752 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2747:20:2752 | call to use | UseUseExplosion.rb:20:2742:20:2752 | else ... | -| UseUseExplosion.rb:20:2747:20:2752 | self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2751:20:2751 | x | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | -| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | +| UseUseExplosion.rb:20:2747:20:2752 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2751:20:2751 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2758:20:2768 | else ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | -| UseUseExplosion.rb:20:2763:20:2768 | [post] self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2763:20:2768 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2763:20:2768 | call to use | UseUseExplosion.rb:20:2758:20:2768 | else ... | -| UseUseExplosion.rb:20:2763:20:2768 | self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2767:20:2767 | x | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | -| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | +| UseUseExplosion.rb:20:2763:20:2768 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2767:20:2767 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2774:20:2784 | else ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | -| UseUseExplosion.rb:20:2779:20:2784 | [post] self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2779:20:2784 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2779:20:2784 | call to use | UseUseExplosion.rb:20:2774:20:2784 | else ... | -| UseUseExplosion.rb:20:2779:20:2784 | self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2783:20:2783 | x | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | -| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | +| UseUseExplosion.rb:20:2779:20:2784 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2783:20:2783 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2790:20:2800 | else ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | -| UseUseExplosion.rb:20:2795:20:2800 | [post] self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2795:20:2800 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2795:20:2800 | call to use | UseUseExplosion.rb:20:2790:20:2800 | else ... | -| UseUseExplosion.rb:20:2795:20:2800 | self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2799:20:2799 | x | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | -| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | +| UseUseExplosion.rb:20:2795:20:2800 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2799:20:2799 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2806:20:2816 | else ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | -| UseUseExplosion.rb:20:2811:20:2816 | [post] self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2811:20:2816 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2811:20:2816 | call to use | UseUseExplosion.rb:20:2806:20:2816 | else ... | -| UseUseExplosion.rb:20:2811:20:2816 | self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2815:20:2815 | x | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | -| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | +| UseUseExplosion.rb:20:2811:20:2816 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2815:20:2815 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2822:20:2832 | else ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | -| UseUseExplosion.rb:20:2827:20:2832 | [post] self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2827:20:2832 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2827:20:2832 | call to use | UseUseExplosion.rb:20:2822:20:2832 | else ... | -| UseUseExplosion.rb:20:2827:20:2832 | self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2831:20:2831 | x | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | -| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | +| UseUseExplosion.rb:20:2827:20:2832 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2831:20:2831 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2838:20:2848 | else ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | -| UseUseExplosion.rb:20:2843:20:2848 | [post] self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2843:20:2848 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2843:20:2848 | call to use | UseUseExplosion.rb:20:2838:20:2848 | else ... | -| UseUseExplosion.rb:20:2843:20:2848 | self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2847:20:2847 | x | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | -| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | +| UseUseExplosion.rb:20:2843:20:2848 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2847:20:2847 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2854:20:2864 | else ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | -| UseUseExplosion.rb:20:2859:20:2864 | [post] self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2859:20:2864 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2859:20:2864 | call to use | UseUseExplosion.rb:20:2854:20:2864 | else ... | -| UseUseExplosion.rb:20:2859:20:2864 | self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2863:20:2863 | x | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | -| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | +| UseUseExplosion.rb:20:2859:20:2864 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2863:20:2863 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2870:20:2880 | else ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | -| UseUseExplosion.rb:20:2875:20:2880 | [post] self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2875:20:2880 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2875:20:2880 | call to use | UseUseExplosion.rb:20:2870:20:2880 | else ... | -| UseUseExplosion.rb:20:2875:20:2880 | self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2879:20:2879 | x | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | -| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | +| UseUseExplosion.rb:20:2875:20:2880 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2879:20:2879 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2886:20:2896 | else ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | -| UseUseExplosion.rb:20:2891:20:2896 | [post] self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2891:20:2896 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2891:20:2896 | call to use | UseUseExplosion.rb:20:2886:20:2896 | else ... | -| UseUseExplosion.rb:20:2891:20:2896 | self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2895:20:2895 | x | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | -| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | +| UseUseExplosion.rb:20:2891:20:2896 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2895:20:2895 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2902:20:2912 | else ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | -| UseUseExplosion.rb:20:2907:20:2912 | [post] self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2907:20:2912 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2907:20:2912 | call to use | UseUseExplosion.rb:20:2902:20:2912 | else ... | -| UseUseExplosion.rb:20:2907:20:2912 | self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2911:20:2911 | x | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | -| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | +| UseUseExplosion.rb:20:2907:20:2912 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2911:20:2911 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2918:20:2928 | else ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | -| UseUseExplosion.rb:20:2923:20:2928 | [post] self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2923:20:2928 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2923:20:2928 | call to use | UseUseExplosion.rb:20:2918:20:2928 | else ... | -| UseUseExplosion.rb:20:2923:20:2928 | self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2927:20:2927 | x | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | -| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | +| UseUseExplosion.rb:20:2923:20:2928 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2927:20:2927 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2934:20:2944 | else ... | UseUseExplosion.rb:20:997:20:2948 | if ... | -| UseUseExplosion.rb:20:2939:20:2944 | [post] self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2939:20:2944 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2939:20:2944 | call to use | UseUseExplosion.rb:20:2934:20:2944 | else ... | -| UseUseExplosion.rb:20:2939:20:2944 | self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2943:20:2943 | x | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | -| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | +| UseUseExplosion.rb:20:2939:20:2944 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2943:20:2943 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2950:20:2960 | else ... | UseUseExplosion.rb:20:976:20:2964 | if ... | -| UseUseExplosion.rb:20:2955:20:2960 | [post] self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2955:20:2960 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2955:20:2960 | call to use | UseUseExplosion.rb:20:2950:20:2960 | else ... | -| UseUseExplosion.rb:20:2955:20:2960 | self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2959:20:2959 | x | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | -| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | +| UseUseExplosion.rb:20:2955:20:2960 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2959:20:2959 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2966:20:2976 | else ... | UseUseExplosion.rb:20:955:20:2980 | if ... | -| UseUseExplosion.rb:20:2971:20:2976 | [post] self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2971:20:2976 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2971:20:2976 | call to use | UseUseExplosion.rb:20:2966:20:2976 | else ... | -| UseUseExplosion.rb:20:2971:20:2976 | self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2975:20:2975 | x | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | -| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | +| UseUseExplosion.rb:20:2971:20:2976 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2975:20:2975 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2982:20:2992 | else ... | UseUseExplosion.rb:20:934:20:2996 | if ... | -| UseUseExplosion.rb:20:2987:20:2992 | [post] self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2987:20:2992 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2987:20:2992 | call to use | UseUseExplosion.rb:20:2982:20:2992 | else ... | -| UseUseExplosion.rb:20:2987:20:2992 | self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2991:20:2991 | x | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | -| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | +| UseUseExplosion.rb:20:2987:20:2992 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2991:20:2991 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2998:20:3008 | else ... | UseUseExplosion.rb:20:913:20:3012 | if ... | -| UseUseExplosion.rb:20:3003:20:3008 | [post] self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3003:20:3008 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3003:20:3008 | call to use | UseUseExplosion.rb:20:2998:20:3008 | else ... | -| UseUseExplosion.rb:20:3003:20:3008 | self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3007:20:3007 | x | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | -| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | +| UseUseExplosion.rb:20:3003:20:3008 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3007:20:3007 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3014:20:3024 | else ... | UseUseExplosion.rb:20:892:20:3028 | if ... | -| UseUseExplosion.rb:20:3019:20:3024 | [post] self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3019:20:3024 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3019:20:3024 | call to use | UseUseExplosion.rb:20:3014:20:3024 | else ... | -| UseUseExplosion.rb:20:3019:20:3024 | self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3023:20:3023 | x | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | -| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | +| UseUseExplosion.rb:20:3019:20:3024 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3023:20:3023 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3030:20:3040 | else ... | UseUseExplosion.rb:20:871:20:3044 | if ... | -| UseUseExplosion.rb:20:3035:20:3040 | [post] self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3035:20:3040 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3035:20:3040 | call to use | UseUseExplosion.rb:20:3030:20:3040 | else ... | -| UseUseExplosion.rb:20:3035:20:3040 | self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3039:20:3039 | x | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | -| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | +| UseUseExplosion.rb:20:3035:20:3040 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3039:20:3039 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3046:20:3056 | else ... | UseUseExplosion.rb:20:850:20:3060 | if ... | -| UseUseExplosion.rb:20:3051:20:3056 | [post] self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3051:20:3056 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3051:20:3056 | call to use | UseUseExplosion.rb:20:3046:20:3056 | else ... | -| UseUseExplosion.rb:20:3051:20:3056 | self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3055:20:3055 | x | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | -| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | +| UseUseExplosion.rb:20:3051:20:3056 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3055:20:3055 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3062:20:3072 | else ... | UseUseExplosion.rb:20:829:20:3076 | if ... | -| UseUseExplosion.rb:20:3067:20:3072 | [post] self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3067:20:3072 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3067:20:3072 | call to use | UseUseExplosion.rb:20:3062:20:3072 | else ... | -| UseUseExplosion.rb:20:3067:20:3072 | self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3071:20:3071 | x | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | -| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | +| UseUseExplosion.rb:20:3067:20:3072 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3071:20:3071 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3078:20:3088 | else ... | UseUseExplosion.rb:20:808:20:3092 | if ... | -| UseUseExplosion.rb:20:3083:20:3088 | [post] self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3083:20:3088 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3083:20:3088 | call to use | UseUseExplosion.rb:20:3078:20:3088 | else ... | -| UseUseExplosion.rb:20:3083:20:3088 | self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3087:20:3087 | x | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | -| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | +| UseUseExplosion.rb:20:3083:20:3088 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3087:20:3087 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3094:20:3104 | else ... | UseUseExplosion.rb:20:787:20:3108 | if ... | -| UseUseExplosion.rb:20:3099:20:3104 | [post] self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3099:20:3104 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3099:20:3104 | call to use | UseUseExplosion.rb:20:3094:20:3104 | else ... | -| UseUseExplosion.rb:20:3099:20:3104 | self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3103:20:3103 | x | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | -| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | +| UseUseExplosion.rb:20:3099:20:3104 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3103:20:3103 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3110:20:3120 | else ... | UseUseExplosion.rb:20:766:20:3124 | if ... | -| UseUseExplosion.rb:20:3115:20:3120 | [post] self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3115:20:3120 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3115:20:3120 | call to use | UseUseExplosion.rb:20:3110:20:3120 | else ... | -| UseUseExplosion.rb:20:3115:20:3120 | self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3119:20:3119 | x | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | -| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | +| UseUseExplosion.rb:20:3115:20:3120 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3119:20:3119 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3126:20:3136 | else ... | UseUseExplosion.rb:20:745:20:3140 | if ... | -| UseUseExplosion.rb:20:3131:20:3136 | [post] self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3131:20:3136 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3131:20:3136 | call to use | UseUseExplosion.rb:20:3126:20:3136 | else ... | -| UseUseExplosion.rb:20:3131:20:3136 | self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3135:20:3135 | x | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | -| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | +| UseUseExplosion.rb:20:3131:20:3136 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3135:20:3135 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3142:20:3152 | else ... | UseUseExplosion.rb:20:724:20:3156 | if ... | -| UseUseExplosion.rb:20:3147:20:3152 | [post] self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3147:20:3152 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3147:20:3152 | call to use | UseUseExplosion.rb:20:3142:20:3152 | else ... | -| UseUseExplosion.rb:20:3147:20:3152 | self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3151:20:3151 | x | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | -| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | +| UseUseExplosion.rb:20:3147:20:3152 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3151:20:3151 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3158:20:3168 | else ... | UseUseExplosion.rb:20:703:20:3172 | if ... | -| UseUseExplosion.rb:20:3163:20:3168 | [post] self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3163:20:3168 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3163:20:3168 | call to use | UseUseExplosion.rb:20:3158:20:3168 | else ... | -| UseUseExplosion.rb:20:3163:20:3168 | self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3167:20:3167 | x | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | -| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | +| UseUseExplosion.rb:20:3163:20:3168 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3167:20:3167 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3174:20:3184 | else ... | UseUseExplosion.rb:20:682:20:3188 | if ... | -| UseUseExplosion.rb:20:3179:20:3184 | [post] self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3179:20:3184 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3179:20:3184 | call to use | UseUseExplosion.rb:20:3174:20:3184 | else ... | -| UseUseExplosion.rb:20:3179:20:3184 | self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3183:20:3183 | x | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | -| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | +| UseUseExplosion.rb:20:3179:20:3184 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3183:20:3183 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3190:20:3200 | else ... | UseUseExplosion.rb:20:661:20:3204 | if ... | -| UseUseExplosion.rb:20:3195:20:3200 | [post] self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3195:20:3200 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3195:20:3200 | call to use | UseUseExplosion.rb:20:3190:20:3200 | else ... | -| UseUseExplosion.rb:20:3195:20:3200 | self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3199:20:3199 | x | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | -| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | +| UseUseExplosion.rb:20:3195:20:3200 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3199:20:3199 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3206:20:3216 | else ... | UseUseExplosion.rb:20:640:20:3220 | if ... | -| UseUseExplosion.rb:20:3211:20:3216 | [post] self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3211:20:3216 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3211:20:3216 | call to use | UseUseExplosion.rb:20:3206:20:3216 | else ... | -| UseUseExplosion.rb:20:3211:20:3216 | self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3215:20:3215 | x | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | -| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | +| UseUseExplosion.rb:20:3211:20:3216 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3215:20:3215 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3222:20:3232 | else ... | UseUseExplosion.rb:20:619:20:3236 | if ... | -| UseUseExplosion.rb:20:3227:20:3232 | [post] self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3227:20:3232 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3227:20:3232 | call to use | UseUseExplosion.rb:20:3222:20:3232 | else ... | -| UseUseExplosion.rb:20:3227:20:3232 | self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3231:20:3231 | x | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | -| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | +| UseUseExplosion.rb:20:3227:20:3232 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3231:20:3231 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3238:20:3248 | else ... | UseUseExplosion.rb:20:598:20:3252 | if ... | -| UseUseExplosion.rb:20:3243:20:3248 | [post] self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3243:20:3248 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3243:20:3248 | call to use | UseUseExplosion.rb:20:3238:20:3248 | else ... | -| UseUseExplosion.rb:20:3243:20:3248 | self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3247:20:3247 | x | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | -| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | +| UseUseExplosion.rb:20:3243:20:3248 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3247:20:3247 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3254:20:3264 | else ... | UseUseExplosion.rb:20:577:20:3268 | if ... | -| UseUseExplosion.rb:20:3259:20:3264 | [post] self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3259:20:3264 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3259:20:3264 | call to use | UseUseExplosion.rb:20:3254:20:3264 | else ... | -| UseUseExplosion.rb:20:3259:20:3264 | self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3263:20:3263 | x | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | -| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | +| UseUseExplosion.rb:20:3259:20:3264 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3263:20:3263 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3270:20:3280 | else ... | UseUseExplosion.rb:20:556:20:3284 | if ... | -| UseUseExplosion.rb:20:3275:20:3280 | [post] self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3275:20:3280 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3275:20:3280 | call to use | UseUseExplosion.rb:20:3270:20:3280 | else ... | -| UseUseExplosion.rb:20:3275:20:3280 | self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3279:20:3279 | x | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | -| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | +| UseUseExplosion.rb:20:3275:20:3280 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3279:20:3279 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3286:20:3296 | else ... | UseUseExplosion.rb:20:535:20:3300 | if ... | -| UseUseExplosion.rb:20:3291:20:3296 | [post] self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3291:20:3296 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3291:20:3296 | call to use | UseUseExplosion.rb:20:3286:20:3296 | else ... | -| UseUseExplosion.rb:20:3291:20:3296 | self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3295:20:3295 | x | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | -| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | +| UseUseExplosion.rb:20:3291:20:3296 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3295:20:3295 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3302:20:3312 | else ... | UseUseExplosion.rb:20:514:20:3316 | if ... | -| UseUseExplosion.rb:20:3307:20:3312 | [post] self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3307:20:3312 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3307:20:3312 | call to use | UseUseExplosion.rb:20:3302:20:3312 | else ... | -| UseUseExplosion.rb:20:3307:20:3312 | self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3311:20:3311 | x | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | -| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | +| UseUseExplosion.rb:20:3307:20:3312 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3311:20:3311 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3318:20:3328 | else ... | UseUseExplosion.rb:20:493:20:3332 | if ... | -| UseUseExplosion.rb:20:3323:20:3328 | [post] self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3323:20:3328 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3323:20:3328 | call to use | UseUseExplosion.rb:20:3318:20:3328 | else ... | -| UseUseExplosion.rb:20:3323:20:3328 | self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3327:20:3327 | x | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | -| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | +| UseUseExplosion.rb:20:3323:20:3328 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3327:20:3327 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3334:20:3344 | else ... | UseUseExplosion.rb:20:472:20:3348 | if ... | -| UseUseExplosion.rb:20:3339:20:3344 | [post] self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3339:20:3344 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3339:20:3344 | call to use | UseUseExplosion.rb:20:3334:20:3344 | else ... | -| UseUseExplosion.rb:20:3339:20:3344 | self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3343:20:3343 | x | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | -| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | +| UseUseExplosion.rb:20:3339:20:3344 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3343:20:3343 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3350:20:3360 | else ... | UseUseExplosion.rb:20:451:20:3364 | if ... | -| UseUseExplosion.rb:20:3355:20:3360 | [post] self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3355:20:3360 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3355:20:3360 | call to use | UseUseExplosion.rb:20:3350:20:3360 | else ... | -| UseUseExplosion.rb:20:3355:20:3360 | self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3359:20:3359 | x | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | -| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | +| UseUseExplosion.rb:20:3355:20:3360 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3359:20:3359 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3366:20:3376 | else ... | UseUseExplosion.rb:20:430:20:3380 | if ... | -| UseUseExplosion.rb:20:3371:20:3376 | [post] self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3371:20:3376 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3371:20:3376 | call to use | UseUseExplosion.rb:20:3366:20:3376 | else ... | -| UseUseExplosion.rb:20:3371:20:3376 | self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3375:20:3375 | x | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | -| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | +| UseUseExplosion.rb:20:3371:20:3376 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3375:20:3375 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3382:20:3392 | else ... | UseUseExplosion.rb:20:409:20:3396 | if ... | -| UseUseExplosion.rb:20:3387:20:3392 | [post] self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3387:20:3392 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3387:20:3392 | call to use | UseUseExplosion.rb:20:3382:20:3392 | else ... | -| UseUseExplosion.rb:20:3387:20:3392 | self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3391:20:3391 | x | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | -| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | +| UseUseExplosion.rb:20:3387:20:3392 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3391:20:3391 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3398:20:3408 | else ... | UseUseExplosion.rb:20:388:20:3412 | if ... | -| UseUseExplosion.rb:20:3403:20:3408 | [post] self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3403:20:3408 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3403:20:3408 | call to use | UseUseExplosion.rb:20:3398:20:3408 | else ... | -| UseUseExplosion.rb:20:3403:20:3408 | self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3407:20:3407 | x | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | -| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | +| UseUseExplosion.rb:20:3403:20:3408 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3407:20:3407 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3414:20:3424 | else ... | UseUseExplosion.rb:20:367:20:3428 | if ... | -| UseUseExplosion.rb:20:3419:20:3424 | [post] self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3419:20:3424 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3419:20:3424 | call to use | UseUseExplosion.rb:20:3414:20:3424 | else ... | -| UseUseExplosion.rb:20:3419:20:3424 | self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3423:20:3423 | x | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | -| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | +| UseUseExplosion.rb:20:3419:20:3424 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3423:20:3423 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3430:20:3440 | else ... | UseUseExplosion.rb:20:346:20:3444 | if ... | -| UseUseExplosion.rb:20:3435:20:3440 | [post] self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3435:20:3440 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3435:20:3440 | call to use | UseUseExplosion.rb:20:3430:20:3440 | else ... | -| UseUseExplosion.rb:20:3435:20:3440 | self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3439:20:3439 | x | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | -| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | +| UseUseExplosion.rb:20:3435:20:3440 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3439:20:3439 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3446:20:3456 | else ... | UseUseExplosion.rb:20:325:20:3460 | if ... | -| UseUseExplosion.rb:20:3451:20:3456 | [post] self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3451:20:3456 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3451:20:3456 | call to use | UseUseExplosion.rb:20:3446:20:3456 | else ... | -| UseUseExplosion.rb:20:3451:20:3456 | self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3455:20:3455 | x | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | -| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | +| UseUseExplosion.rb:20:3451:20:3456 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3455:20:3455 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3462:20:3472 | else ... | UseUseExplosion.rb:20:304:20:3476 | if ... | -| UseUseExplosion.rb:20:3467:20:3472 | [post] self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3467:20:3472 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3467:20:3472 | call to use | UseUseExplosion.rb:20:3462:20:3472 | else ... | -| UseUseExplosion.rb:20:3467:20:3472 | self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3471:20:3471 | x | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | -| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | +| UseUseExplosion.rb:20:3467:20:3472 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3471:20:3471 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3478:20:3488 | else ... | UseUseExplosion.rb:20:283:20:3492 | if ... | -| UseUseExplosion.rb:20:3483:20:3488 | [post] self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3483:20:3488 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3483:20:3488 | call to use | UseUseExplosion.rb:20:3478:20:3488 | else ... | -| UseUseExplosion.rb:20:3483:20:3488 | self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3487:20:3487 | x | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | -| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | +| UseUseExplosion.rb:20:3483:20:3488 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3487:20:3487 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3494:20:3504 | else ... | UseUseExplosion.rb:20:262:20:3508 | if ... | -| UseUseExplosion.rb:20:3499:20:3504 | [post] self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3499:20:3504 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3499:20:3504 | call to use | UseUseExplosion.rb:20:3494:20:3504 | else ... | -| UseUseExplosion.rb:20:3499:20:3504 | self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3503:20:3503 | x | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | -| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | +| UseUseExplosion.rb:20:3499:20:3504 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3503:20:3503 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3510:20:3520 | else ... | UseUseExplosion.rb:20:241:20:3524 | if ... | -| UseUseExplosion.rb:20:3515:20:3520 | [post] self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3515:20:3520 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3515:20:3520 | call to use | UseUseExplosion.rb:20:3510:20:3520 | else ... | -| UseUseExplosion.rb:20:3515:20:3520 | self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3519:20:3519 | x | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | -| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | +| UseUseExplosion.rb:20:3515:20:3520 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3519:20:3519 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3526:20:3536 | else ... | UseUseExplosion.rb:20:220:20:3540 | if ... | -| UseUseExplosion.rb:20:3531:20:3536 | [post] self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3531:20:3536 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3531:20:3536 | call to use | UseUseExplosion.rb:20:3526:20:3536 | else ... | -| UseUseExplosion.rb:20:3531:20:3536 | self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3535:20:3535 | x | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | -| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | +| UseUseExplosion.rb:20:3531:20:3536 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3535:20:3535 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3542:20:3552 | else ... | UseUseExplosion.rb:20:199:20:3556 | if ... | -| UseUseExplosion.rb:20:3547:20:3552 | [post] self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3547:20:3552 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3547:20:3552 | call to use | UseUseExplosion.rb:20:3542:20:3552 | else ... | -| UseUseExplosion.rb:20:3547:20:3552 | self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3551:20:3551 | x | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | -| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | +| UseUseExplosion.rb:20:3547:20:3552 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3551:20:3551 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3558:20:3568 | else ... | UseUseExplosion.rb:20:178:20:3572 | if ... | -| UseUseExplosion.rb:20:3563:20:3568 | [post] self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3563:20:3568 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3563:20:3568 | call to use | UseUseExplosion.rb:20:3558:20:3568 | else ... | -| UseUseExplosion.rb:20:3563:20:3568 | self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3567:20:3567 | x | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | -| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | +| UseUseExplosion.rb:20:3563:20:3568 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3567:20:3567 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3574:20:3584 | else ... | UseUseExplosion.rb:20:157:20:3588 | if ... | -| UseUseExplosion.rb:20:3579:20:3584 | [post] self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3579:20:3584 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3579:20:3584 | call to use | UseUseExplosion.rb:20:3574:20:3584 | else ... | -| UseUseExplosion.rb:20:3579:20:3584 | self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3583:20:3583 | x | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | -| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | +| UseUseExplosion.rb:20:3579:20:3584 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3583:20:3583 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3590:20:3600 | else ... | UseUseExplosion.rb:20:136:20:3604 | if ... | -| UseUseExplosion.rb:20:3595:20:3600 | [post] self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3595:20:3600 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3595:20:3600 | call to use | UseUseExplosion.rb:20:3590:20:3600 | else ... | -| UseUseExplosion.rb:20:3595:20:3600 | self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3599:20:3599 | x | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | -| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | +| UseUseExplosion.rb:20:3595:20:3600 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3599:20:3599 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3606:20:3616 | else ... | UseUseExplosion.rb:20:115:20:3620 | if ... | -| UseUseExplosion.rb:20:3611:20:3616 | [post] self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3611:20:3616 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3611:20:3616 | call to use | UseUseExplosion.rb:20:3606:20:3616 | else ... | -| UseUseExplosion.rb:20:3611:20:3616 | self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3615:20:3615 | x | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | -| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | +| UseUseExplosion.rb:20:3611:20:3616 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3615:20:3615 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3622:20:3632 | else ... | UseUseExplosion.rb:20:94:20:3636 | if ... | -| UseUseExplosion.rb:20:3627:20:3632 | [post] self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3627:20:3632 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3627:20:3632 | call to use | UseUseExplosion.rb:20:3622:20:3632 | else ... | -| UseUseExplosion.rb:20:3627:20:3632 | self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3631:20:3631 | x | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | -| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | +| UseUseExplosion.rb:20:3627:20:3632 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3631:20:3631 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3638:20:3648 | else ... | UseUseExplosion.rb:20:73:20:3652 | if ... | -| UseUseExplosion.rb:20:3643:20:3648 | [post] self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3643:20:3648 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3643:20:3648 | call to use | UseUseExplosion.rb:20:3638:20:3648 | else ... | -| UseUseExplosion.rb:20:3643:20:3648 | self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3647:20:3647 | x | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | -| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | +| UseUseExplosion.rb:20:3643:20:3648 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3647:20:3647 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3654:20:3664 | else ... | UseUseExplosion.rb:20:52:20:3668 | if ... | -| UseUseExplosion.rb:20:3659:20:3664 | [post] self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3659:20:3664 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3659:20:3664 | call to use | UseUseExplosion.rb:20:3654:20:3664 | else ... | -| UseUseExplosion.rb:20:3659:20:3664 | self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3663:20:3663 | x | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | -| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | +| UseUseExplosion.rb:20:3659:20:3664 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3663:20:3663 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3670:20:3680 | else ... | UseUseExplosion.rb:20:31:20:3684 | if ... | -| UseUseExplosion.rb:20:3675:20:3680 | [post] self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3675:20:3680 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3675:20:3680 | call to use | UseUseExplosion.rb:20:3670:20:3680 | else ... | -| UseUseExplosion.rb:20:3675:20:3680 | self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3679:20:3679 | x | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | -| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | +| UseUseExplosion.rb:20:3675:20:3680 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3679:20:3679 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3686:20:3696 | else ... | UseUseExplosion.rb:20:9:20:3700 | if ... | -| UseUseExplosion.rb:20:3691:20:3696 | [post] self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3691:20:3696 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3691:20:3696 | call to use | UseUseExplosion.rb:20:3686:20:3696 | else ... | -| UseUseExplosion.rb:20:3691:20:3696 | self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3695:20:3695 | x | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | +| UseUseExplosion.rb:20:3691:20:3696 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3695:20:3695 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:35:21:39 | self | | UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:3691:21:3696 | self | | UseUseExplosion.rb:21:13:21:17 | self | UseUseExplosion.rb:21:35:21:39 | self | @@ -3139,12 +2542,11 @@ | local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:5:13:3 | ... | | local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... | | local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | -| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | | local_dataflow.rb:10:9:10:9 | [post] x | local_dataflow.rb:10:9:10:9 | [input] phi | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | ... = ... | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | x | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] phi | -| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] phi | +| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | phi | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x | | local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array | | local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array | @@ -3158,12 +2560,11 @@ | local_dataflow.rb:15:1:17:3 | call to each | local_dataflow.rb:15:1:17:3 | ... | | local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... | | local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | -| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | | local_dataflow.rb:15:5:15:5 | [post] x | local_dataflow.rb:15:5:15:5 | [input] phi | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | ... = ... | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | x | | local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] phi | -| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] phi | +| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | phi | | local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break | @@ -3174,12 +2575,11 @@ | local_dataflow.rb:19:1:21:3 | call to each | local_dataflow.rb:19:1:21:3 | ... | | local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... | | local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | -| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | | local_dataflow.rb:19:5:19:5 | [post] x | local_dataflow.rb:19:5:19:5 | [input] phi | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | ... = ... | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | x | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] phi | -| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] phi | +| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | phi | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x | | local_dataflow.rb:24:2:24:8 | break | local_dataflow.rb:23:1:25:3 | while ... | | local_dataflow.rb:24:8:24:8 | 5 | local_dataflow.rb:24:2:24:8 | break | @@ -3208,27 +2608,23 @@ | local_dataflow.rb:60:1:90:3 | self in test_case | local_dataflow.rb:60:1:90:3 | self (test_case) | | local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:60:15:60:15 | x | | local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:61:12:61:12 | x | -| local_dataflow.rb:61:7:68:5 | SSA phi read(x) | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:61:7:68:5 | case ... | local_dataflow.rb:61:3:68:5 | ... = ... | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:63:15:63:15 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:65:6:65:6 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:67:5:67:5 | x | -| local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | +| local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:62:10:62:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:62:15:62:15 | 3 | local_dataflow.rb:62:10:62:15 | then ... | -| local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:63:10:63:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | -| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | | local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | then ... | -| local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | +| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:64:9:65:6 | then ... | local_dataflow.rb:61:7:68:5 | case ... | -| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | | local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | then ... | -| local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | +| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:66:3:67:5 | else ... | local_dataflow.rb:61:7:68:5 | case ... | -| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | | local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | else ... | +| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... | | local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:71:13:71:13 | x | | local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:73:7:73:7 | x | @@ -3242,7 +2638,6 @@ | local_dataflow.rb:74:3:75:6 | else ... | local_dataflow.rb:69:7:76:5 | case ... | | local_dataflow.rb:75:6:75:6 | x | local_dataflow.rb:74:3:75:6 | else ... | | local_dataflow.rb:78:3:78:3 | z | local_dataflow.rb:89:8:89:8 | z | -| local_dataflow.rb:78:7:88:5 | SSA phi read(self) | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:78:7:88:5 | case ... | local_dataflow.rb:78:3:78:3 | z | | local_dataflow.rb:78:7:88:5 | case ... | local_dataflow.rb:78:3:88:5 | ... = ... | | local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:79:20:79:26 | self | @@ -3260,23 +2655,20 @@ | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:86:28:86:34 | self | | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:87:20:87:26 | self | | local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b | -| local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:79:15:79:45 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:79:20:79:26 | [post] self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | +| local_dataflow.rb:79:20:79:26 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:79:20:79:26 | call to sink | local_dataflow.rb:79:15:79:45 | then ... | -| local_dataflow.rb:79:20:79:26 | self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | +| local_dataflow.rb:79:20:79:26 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:13:80:13 | a | | local_dataflow.rb:80:13:80:13 | [post] a | local_dataflow.rb:80:29:80:29 | a | | local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:29:80:29 | a | -| local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:80:19:80:49 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:80:24:80:30 | [post] self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | +| local_dataflow.rb:80:24:80:30 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:80:24:80:30 | call to sink | local_dataflow.rb:80:19:80:49 | then ... | -| local_dataflow.rb:80:24:80:30 | self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | +| local_dataflow.rb:80:24:80:30 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c | | local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d | | local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e | -| local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:81:20:84:33 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:81:25:84:14 | call to [] | local_dataflow.rb:81:20:84:33 | then ... | | local_dataflow.rb:81:25:84:14 | synthetic splat argument | local_dataflow.rb:81:25:84:14 | call to [] | @@ -3284,32 +2676,29 @@ | local_dataflow.rb:82:7:82:13 | self | local_dataflow.rb:83:7:83:13 | self | | local_dataflow.rb:83:7:83:13 | [post] self | local_dataflow.rb:84:7:84:13 | self | | local_dataflow.rb:83:7:83:13 | self | local_dataflow.rb:84:7:84:13 | self | -| local_dataflow.rb:84:7:84:13 | [post] self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | -| local_dataflow.rb:84:7:84:13 | self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | +| local_dataflow.rb:84:7:84:13 | [post] self | local_dataflow.rb:89:3:89:9 | self | +| local_dataflow.rb:84:7:84:13 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f | -| local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:85:17:85:47 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:85:22:85:28 | [post] self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | +| local_dataflow.rb:85:22:85:28 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:85:22:85:28 | call to sink | local_dataflow.rb:85:17:85:47 | then ... | -| local_dataflow.rb:85:22:85:28 | self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | +| local_dataflow.rb:85:22:85:28 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g | -| local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:86:23:86:53 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:86:28:86:34 | [post] self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | +| local_dataflow.rb:86:28:86:34 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:86:28:86:34 | call to sink | local_dataflow.rb:86:23:86:53 | then ... | -| local_dataflow.rb:86:28:86:34 | self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | +| local_dataflow.rb:86:28:86:34 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x | -| local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:87:15:87:48 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:87:20:87:26 | [post] self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | -| local_dataflow.rb:87:20:87:26 | self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | +| local_dataflow.rb:87:20:87:26 | [post] self | local_dataflow.rb:89:3:89:9 | self | +| local_dataflow.rb:87:20:87:26 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:87:25:87:25 | [post] x | local_dataflow.rb:87:29:87:29 | x | | local_dataflow.rb:87:25:87:25 | x | local_dataflow.rb:87:29:87:29 | x | | local_dataflow.rb:87:29:87:29 | x | local_dataflow.rb:87:15:87:48 | then ... | | local_dataflow.rb:92:1:109:3 | self (and_or) | local_dataflow.rb:93:7:93:15 | self | | local_dataflow.rb:92:1:109:3 | self in and_or | local_dataflow.rb:92:1:109:3 | self (and_or) | | local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a | -| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | +| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self | | local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | | local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | @@ -3317,59 +2706,51 @@ | local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:3 | a | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:28 | ... = ... | -| local_dataflow.rb:93:7:93:28 | SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self | -| local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | -| local_dataflow.rb:93:20:93:28 | [post] self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | +| local_dataflow.rb:93:20:93:28 | [post] self | local_dataflow.rb:94:3:94:9 | self | | local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | -| local_dataflow.rb:93:20:93:28 | self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | +| local_dataflow.rb:93:20:93:28 | self | local_dataflow.rb:94:3:94:9 | self | | local_dataflow.rb:94:3:94:9 | [post] self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:94:3:94:9 | self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:3 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:30 | ... = ... | -| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | +| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self | | local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | | local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | | local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | | local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:29 | ... or ... | local_dataflow.rb:95:7:95:30 | ( ... ) | -| local_dataflow.rb:95:8:95:29 | SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self | -| local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | -| local_dataflow.rb:95:21:95:29 | [post] self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | +| local_dataflow.rb:95:21:95:29 | [post] self | local_dataflow.rb:96:3:96:9 | self | | local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | -| local_dataflow.rb:95:21:95:29 | self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | +| local_dataflow.rb:95:21:95:29 | self | local_dataflow.rb:96:3:96:9 | self | | local_dataflow.rb:96:3:96:9 | [post] self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:96:3:96:9 | self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a | -| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | +| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self | | local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | | local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | | local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:3 | a | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:28 | ... = ... | -| local_dataflow.rb:98:7:98:28 | SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self | -| local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | -| local_dataflow.rb:98:20:98:28 | [post] self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | +| local_dataflow.rb:98:20:98:28 | [post] self | local_dataflow.rb:99:3:99:9 | self | | local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:7:98:28 | ... && ... | -| local_dataflow.rb:98:20:98:28 | self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | +| local_dataflow.rb:98:20:98:28 | self | local_dataflow.rb:99:3:99:9 | self | | local_dataflow.rb:99:3:99:9 | [post] self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:99:3:99:9 | self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:3 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:31 | ... = ... | -| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | +| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self | | local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | | local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | | local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:30 | ... and ... | local_dataflow.rb:100:7:100:31 | ( ... ) | -| local_dataflow.rb:100:8:100:30 | SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self | -| local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | -| local_dataflow.rb:100:22:100:30 | [post] self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | +| local_dataflow.rb:100:22:100:30 | [post] self | local_dataflow.rb:101:3:101:9 | self | | local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:8:100:30 | ... and ... | -| local_dataflow.rb:100:22:100:30 | self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | +| local_dataflow.rb:100:22:100:30 | self | local_dataflow.rb:101:3:101:9 | self | | local_dataflow.rb:101:3:101:9 | [post] self | local_dataflow.rb:103:7:103:15 | self | | local_dataflow.rb:101:3:101:9 | self | local_dataflow.rb:103:7:103:15 | self | | local_dataflow.rb:103:3:103:3 | a | local_dataflow.rb:104:3:104:3 | a | @@ -3379,16 +2760,14 @@ | local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:15 | ... = ... | | local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | | local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:9:104:17 | self | -| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | +| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:104:5:104:7 | ... \|\| ... | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:105:8:105:8 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:3 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:17 | ... = ... | -| local_dataflow.rb:104:5:104:7 | SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self | -| local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | -| local_dataflow.rb:104:9:104:17 | [post] self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | +| local_dataflow.rb:104:9:104:17 | [post] self | local_dataflow.rb:105:3:105:9 | self | | local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:5:104:7 | ... \|\| ... | -| local_dataflow.rb:104:9:104:17 | self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | +| local_dataflow.rb:104:9:104:17 | self | local_dataflow.rb:105:3:105:9 | self | | local_dataflow.rb:105:3:105:9 | [post] self | local_dataflow.rb:106:7:106:15 | self | | local_dataflow.rb:105:3:105:9 | self | local_dataflow.rb:106:7:106:15 | self | | local_dataflow.rb:106:3:106:3 | b | local_dataflow.rb:107:3:107:3 | b | @@ -3398,15 +2777,13 @@ | local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:15 | ... = ... | | local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | | local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:9:107:17 | self | -| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | +| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self | | local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:3 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:17 | ... = ... | -| local_dataflow.rb:107:5:107:7 | SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self | -| local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | -| local_dataflow.rb:107:9:107:17 | [post] self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | +| local_dataflow.rb:107:9:107:17 | [post] self | local_dataflow.rb:108:3:108:9 | self | | local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:5:107:7 | ... && ... | -| local_dataflow.rb:107:9:107:17 | self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | +| local_dataflow.rb:107:9:107:17 | self | local_dataflow.rb:108:3:108:9 | self | | local_dataflow.rb:111:1:114:3 | self (object_dup) | local_dataflow.rb:112:3:112:21 | self | | local_dataflow.rb:111:1:114:3 | self in object_dup | local_dataflow.rb:111:1:114:3 | self (object_dup) | | local_dataflow.rb:112:3:112:21 | [post] self | local_dataflow.rb:112:8:112:16 | self | @@ -3455,24 +2832,20 @@ | local_dataflow.rb:132:10:132:10 | [post] x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:10:132:10 | x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:12:148:10 | then ... | local_dataflow.rb:132:3:149:5 | if ... | -| local_dataflow.rb:133:5:139:7 | SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | -| local_dataflow.rb:133:5:139:7 | SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | -| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | -| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | | local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:18:133:23 | self | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | | local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | | local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:18:133:23 | self | -| local_dataflow.rb:133:8:133:23 | SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | -| local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | | local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x | -| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | -| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | @@ -3483,43 +2856,35 @@ | local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x | -| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | -| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | | local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... | -| local_dataflow.rb:134:7:134:12 | [post] self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | +| local_dataflow.rb:134:7:134:12 | [post] self | local_dataflow.rb:141:9:141:14 | self | | local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... | -| local_dataflow.rb:134:7:134:12 | self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | -| local_dataflow.rb:134:11:134:11 | [post] x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | -| local_dataflow.rb:134:11:134:11 | x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | -| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | -| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | +| local_dataflow.rb:134:7:134:12 | self | local_dataflow.rb:141:9:141:14 | self | +| local_dataflow.rb:134:11:134:11 | [post] x | local_dataflow.rb:141:13:141:13 | x | +| local_dataflow.rb:134:11:134:11 | x | local_dataflow.rb:141:13:141:13 | x | | local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:136:7:136:12 | [post] self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:7:136:12 | self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:11:136:11 | [post] x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:136:11:136:11 | x | local_dataflow.rb:137:14:137:14 | x | -| local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | -| local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | | local_dataflow.rb:137:7:138:9 | if ... | local_dataflow.rb:135:5:138:9 | else ... | -| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | | local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:21:137:26 | self | | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self | -| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | | local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | | local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... | -| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | -| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... | | local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | | local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | @@ -3529,15 +2894,11 @@ | local_dataflow.rb:137:25:137:25 | [post] x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | -| local_dataflow.rb:141:5:145:7 | SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self | -| local_dataflow.rb:141:5:145:7 | SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | -| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:8:141:14 | [true] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | -| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | | local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:20:141:25 | self | | local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | @@ -3547,17 +2908,15 @@ | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | -| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | -| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | -| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | | local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:31:141:36 | self | | local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | | local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:31:141:36 | self | -| local_dataflow.rb:141:20:141:36 | SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | -| local_dataflow.rb:141:20:141:36 | SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:20:141:36 | [false] ... && ... | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | | local_dataflow.rb:141:20:141:36 | [true] ... && ... | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | | local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | @@ -3565,8 +2924,8 @@ | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... | -| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | -| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... | | local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | | local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | @@ -3576,33 +2935,27 @@ | local_dataflow.rb:141:35:141:35 | [post] x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | | local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | | local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | -| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:141:38:142:9 | then ... | local_dataflow.rb:141:5:145:7 | if ... | | local_dataflow.rb:142:7:142:9 | nil | local_dataflow.rb:141:38:142:9 | then ... | -| local_dataflow.rb:143:5:144:16 | SSA phi read(self) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | -| local_dataflow.rb:143:5:144:16 | SSA phi read(x) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | -| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | | local_dataflow.rb:143:5:144:16 | elsif ... | local_dataflow.rb:141:5:145:7 | if ... | -| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | -| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | | local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | | local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self | -| local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | -| local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | -| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | -| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | | local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x | -| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | -| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | | local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | | local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | @@ -3613,14 +2966,12 @@ | local_dataflow.rb:143:25:143:25 | [post] x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | | local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | | local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | -| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | -| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | | local_dataflow.rb:143:27:144:16 | then ... | local_dataflow.rb:143:5:144:16 | elsif ... | -| local_dataflow.rb:144:11:144:16 | [post] self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | +| local_dataflow.rb:144:11:144:16 | [post] self | local_dataflow.rb:147:5:147:10 | self | | local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... | -| local_dataflow.rb:144:11:144:16 | self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | -| local_dataflow.rb:144:15:144:15 | [post] x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | -| local_dataflow.rb:144:15:144:15 | x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | +| local_dataflow.rb:144:11:144:16 | self | local_dataflow.rb:147:5:147:10 | self | +| local_dataflow.rb:144:15:144:15 | [post] x | local_dataflow.rb:147:9:147:9 | x | +| local_dataflow.rb:144:15:144:15 | x | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self | | local_dataflow.rb:147:5:147:10 | self | local_dataflow.rb:148:5:148:10 | self | | local_dataflow.rb:147:9:147:9 | [post] x | local_dataflow.rb:148:9:148:9 | x | diff --git a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected index a90c65dab24..208a012ff65 100644 --- a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected @@ -103,7 +103,6 @@ | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:3695:20:3695 | x | | UseUseExplosion.rb:19:13:19:13 | 0 | UseUseExplosion.rb:19:9:19:9 | x | | UseUseExplosion.rb:19:13:19:13 | 0 | UseUseExplosion.rb:19:9:19:13 | ... = ... | -| UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | UseUseExplosion.rb:21:2111:21:2111 | x | | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | UseUseExplosion.rb:21:2127:21:2127 | x | | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | UseUseExplosion.rb:21:2143:21:2143 | x | @@ -212,11 +211,7 @@ | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [false] ( ... ) | | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [true] ( ... ) | | UseUseExplosion.rb:20:21:20:23 | 100 | UseUseExplosion.rb:20:13:20:23 | ... > ... | -| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | -| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:26:20:3684 | then ... | UseUseExplosion.rb:20:9:20:3700 | if ... | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:31:20:3684 | if ... | UseUseExplosion.rb:20:26:20:3684 | then ... | | UseUseExplosion.rb:20:35:20:39 | @prop | UseUseExplosion.rb:20:35:20:44 | ... > ... | | UseUseExplosion.rb:20:35:20:39 | [post] self | UseUseExplosion.rb:20:56:20:60 | self | @@ -226,11 +221,7 @@ | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [false] ( ... ) | | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [true] ( ... ) | | UseUseExplosion.rb:20:43:20:44 | 99 | UseUseExplosion.rb:20:35:20:44 | ... > ... | -| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | -| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | | UseUseExplosion.rb:20:47:20:3668 | then ... | UseUseExplosion.rb:20:31:20:3684 | if ... | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:52:20:3668 | if ... | UseUseExplosion.rb:20:47:20:3668 | then ... | | UseUseExplosion.rb:20:56:20:60 | @prop | UseUseExplosion.rb:20:56:20:65 | ... > ... | | UseUseExplosion.rb:20:56:20:60 | [post] self | UseUseExplosion.rb:20:77:20:81 | self | @@ -240,11 +231,7 @@ | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [false] ( ... ) | | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [true] ( ... ) | | UseUseExplosion.rb:20:64:20:65 | 98 | UseUseExplosion.rb:20:56:20:65 | ... > ... | -| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | -| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | | UseUseExplosion.rb:20:68:20:3652 | then ... | UseUseExplosion.rb:20:52:20:3668 | if ... | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:73:20:3652 | if ... | UseUseExplosion.rb:20:68:20:3652 | then ... | | UseUseExplosion.rb:20:77:20:81 | @prop | UseUseExplosion.rb:20:77:20:86 | ... > ... | | UseUseExplosion.rb:20:77:20:81 | [post] self | UseUseExplosion.rb:20:98:20:102 | self | @@ -254,11 +241,7 @@ | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [false] ( ... ) | | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [true] ( ... ) | | UseUseExplosion.rb:20:85:20:86 | 97 | UseUseExplosion.rb:20:77:20:86 | ... > ... | -| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | -| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | | UseUseExplosion.rb:20:89:20:3636 | then ... | UseUseExplosion.rb:20:73:20:3652 | if ... | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:94:20:3636 | if ... | UseUseExplosion.rb:20:89:20:3636 | then ... | | UseUseExplosion.rb:20:98:20:102 | @prop | UseUseExplosion.rb:20:98:20:107 | ... > ... | | UseUseExplosion.rb:20:98:20:102 | [post] self | UseUseExplosion.rb:20:119:20:123 | self | @@ -268,11 +251,7 @@ | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [false] ( ... ) | | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [true] ( ... ) | | UseUseExplosion.rb:20:106:20:107 | 96 | UseUseExplosion.rb:20:98:20:107 | ... > ... | -| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | -| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | | UseUseExplosion.rb:20:110:20:3620 | then ... | UseUseExplosion.rb:20:94:20:3636 | if ... | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:115:20:3620 | if ... | UseUseExplosion.rb:20:110:20:3620 | then ... | | UseUseExplosion.rb:20:119:20:123 | @prop | UseUseExplosion.rb:20:119:20:128 | ... > ... | | UseUseExplosion.rb:20:119:20:123 | [post] self | UseUseExplosion.rb:20:140:20:144 | self | @@ -282,11 +261,7 @@ | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [false] ( ... ) | | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [true] ( ... ) | | UseUseExplosion.rb:20:127:20:128 | 95 | UseUseExplosion.rb:20:119:20:128 | ... > ... | -| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | -| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | | UseUseExplosion.rb:20:131:20:3604 | then ... | UseUseExplosion.rb:20:115:20:3620 | if ... | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:136:20:3604 | if ... | UseUseExplosion.rb:20:131:20:3604 | then ... | | UseUseExplosion.rb:20:140:20:144 | @prop | UseUseExplosion.rb:20:140:20:149 | ... > ... | | UseUseExplosion.rb:20:140:20:144 | [post] self | UseUseExplosion.rb:20:161:20:165 | self | @@ -296,11 +271,7 @@ | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [false] ( ... ) | | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [true] ( ... ) | | UseUseExplosion.rb:20:148:20:149 | 94 | UseUseExplosion.rb:20:140:20:149 | ... > ... | -| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | -| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | | UseUseExplosion.rb:20:152:20:3588 | then ... | UseUseExplosion.rb:20:136:20:3604 | if ... | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:157:20:3588 | if ... | UseUseExplosion.rb:20:152:20:3588 | then ... | | UseUseExplosion.rb:20:161:20:165 | @prop | UseUseExplosion.rb:20:161:20:170 | ... > ... | | UseUseExplosion.rb:20:161:20:165 | [post] self | UseUseExplosion.rb:20:182:20:186 | self | @@ -310,11 +281,7 @@ | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [false] ( ... ) | | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [true] ( ... ) | | UseUseExplosion.rb:20:169:20:170 | 93 | UseUseExplosion.rb:20:161:20:170 | ... > ... | -| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | -| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | | UseUseExplosion.rb:20:173:20:3572 | then ... | UseUseExplosion.rb:20:157:20:3588 | if ... | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:178:20:3572 | if ... | UseUseExplosion.rb:20:173:20:3572 | then ... | | UseUseExplosion.rb:20:182:20:186 | @prop | UseUseExplosion.rb:20:182:20:191 | ... > ... | | UseUseExplosion.rb:20:182:20:186 | [post] self | UseUseExplosion.rb:20:203:20:207 | self | @@ -324,11 +291,7 @@ | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [false] ( ... ) | | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [true] ( ... ) | | UseUseExplosion.rb:20:190:20:191 | 92 | UseUseExplosion.rb:20:182:20:191 | ... > ... | -| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | -| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | | UseUseExplosion.rb:20:194:20:3556 | then ... | UseUseExplosion.rb:20:178:20:3572 | if ... | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:199:20:3556 | if ... | UseUseExplosion.rb:20:194:20:3556 | then ... | | UseUseExplosion.rb:20:203:20:207 | @prop | UseUseExplosion.rb:20:203:20:212 | ... > ... | | UseUseExplosion.rb:20:203:20:207 | [post] self | UseUseExplosion.rb:20:224:20:228 | self | @@ -338,11 +301,7 @@ | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [false] ( ... ) | | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [true] ( ... ) | | UseUseExplosion.rb:20:211:20:212 | 91 | UseUseExplosion.rb:20:203:20:212 | ... > ... | -| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | -| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | | UseUseExplosion.rb:20:215:20:3540 | then ... | UseUseExplosion.rb:20:199:20:3556 | if ... | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:220:20:3540 | if ... | UseUseExplosion.rb:20:215:20:3540 | then ... | | UseUseExplosion.rb:20:224:20:228 | @prop | UseUseExplosion.rb:20:224:20:233 | ... > ... | | UseUseExplosion.rb:20:224:20:228 | [post] self | UseUseExplosion.rb:20:245:20:249 | self | @@ -352,11 +311,7 @@ | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [false] ( ... ) | | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [true] ( ... ) | | UseUseExplosion.rb:20:232:20:233 | 90 | UseUseExplosion.rb:20:224:20:233 | ... > ... | -| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | -| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | | UseUseExplosion.rb:20:236:20:3524 | then ... | UseUseExplosion.rb:20:220:20:3540 | if ... | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:241:20:3524 | if ... | UseUseExplosion.rb:20:236:20:3524 | then ... | | UseUseExplosion.rb:20:245:20:249 | @prop | UseUseExplosion.rb:20:245:20:254 | ... > ... | | UseUseExplosion.rb:20:245:20:249 | [post] self | UseUseExplosion.rb:20:266:20:270 | self | @@ -366,11 +321,7 @@ | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [false] ( ... ) | | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [true] ( ... ) | | UseUseExplosion.rb:20:253:20:254 | 89 | UseUseExplosion.rb:20:245:20:254 | ... > ... | -| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | -| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | | UseUseExplosion.rb:20:257:20:3508 | then ... | UseUseExplosion.rb:20:241:20:3524 | if ... | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:262:20:3508 | if ... | UseUseExplosion.rb:20:257:20:3508 | then ... | | UseUseExplosion.rb:20:266:20:270 | @prop | UseUseExplosion.rb:20:266:20:275 | ... > ... | | UseUseExplosion.rb:20:266:20:270 | [post] self | UseUseExplosion.rb:20:287:20:291 | self | @@ -380,11 +331,7 @@ | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [false] ( ... ) | | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [true] ( ... ) | | UseUseExplosion.rb:20:274:20:275 | 88 | UseUseExplosion.rb:20:266:20:275 | ... > ... | -| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | -| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | | UseUseExplosion.rb:20:278:20:3492 | then ... | UseUseExplosion.rb:20:262:20:3508 | if ... | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:283:20:3492 | if ... | UseUseExplosion.rb:20:278:20:3492 | then ... | | UseUseExplosion.rb:20:287:20:291 | @prop | UseUseExplosion.rb:20:287:20:296 | ... > ... | | UseUseExplosion.rb:20:287:20:291 | [post] self | UseUseExplosion.rb:20:308:20:312 | self | @@ -394,11 +341,7 @@ | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [false] ( ... ) | | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [true] ( ... ) | | UseUseExplosion.rb:20:295:20:296 | 87 | UseUseExplosion.rb:20:287:20:296 | ... > ... | -| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | -| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | | UseUseExplosion.rb:20:299:20:3476 | then ... | UseUseExplosion.rb:20:283:20:3492 | if ... | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:304:20:3476 | if ... | UseUseExplosion.rb:20:299:20:3476 | then ... | | UseUseExplosion.rb:20:308:20:312 | @prop | UseUseExplosion.rb:20:308:20:317 | ... > ... | | UseUseExplosion.rb:20:308:20:312 | [post] self | UseUseExplosion.rb:20:329:20:333 | self | @@ -408,11 +351,7 @@ | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [false] ( ... ) | | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [true] ( ... ) | | UseUseExplosion.rb:20:316:20:317 | 86 | UseUseExplosion.rb:20:308:20:317 | ... > ... | -| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | -| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | | UseUseExplosion.rb:20:320:20:3460 | then ... | UseUseExplosion.rb:20:304:20:3476 | if ... | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:325:20:3460 | if ... | UseUseExplosion.rb:20:320:20:3460 | then ... | | UseUseExplosion.rb:20:329:20:333 | @prop | UseUseExplosion.rb:20:329:20:338 | ... > ... | | UseUseExplosion.rb:20:329:20:333 | [post] self | UseUseExplosion.rb:20:350:20:354 | self | @@ -422,11 +361,7 @@ | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [false] ( ... ) | | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [true] ( ... ) | | UseUseExplosion.rb:20:337:20:338 | 85 | UseUseExplosion.rb:20:329:20:338 | ... > ... | -| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | -| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | | UseUseExplosion.rb:20:341:20:3444 | then ... | UseUseExplosion.rb:20:325:20:3460 | if ... | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:346:20:3444 | if ... | UseUseExplosion.rb:20:341:20:3444 | then ... | | UseUseExplosion.rb:20:350:20:354 | @prop | UseUseExplosion.rb:20:350:20:359 | ... > ... | | UseUseExplosion.rb:20:350:20:354 | [post] self | UseUseExplosion.rb:20:371:20:375 | self | @@ -436,11 +371,7 @@ | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [false] ( ... ) | | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [true] ( ... ) | | UseUseExplosion.rb:20:358:20:359 | 84 | UseUseExplosion.rb:20:350:20:359 | ... > ... | -| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | -| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | | UseUseExplosion.rb:20:362:20:3428 | then ... | UseUseExplosion.rb:20:346:20:3444 | if ... | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:367:20:3428 | if ... | UseUseExplosion.rb:20:362:20:3428 | then ... | | UseUseExplosion.rb:20:371:20:375 | @prop | UseUseExplosion.rb:20:371:20:380 | ... > ... | | UseUseExplosion.rb:20:371:20:375 | [post] self | UseUseExplosion.rb:20:392:20:396 | self | @@ -450,11 +381,7 @@ | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [false] ( ... ) | | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [true] ( ... ) | | UseUseExplosion.rb:20:379:20:380 | 83 | UseUseExplosion.rb:20:371:20:380 | ... > ... | -| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | -| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | | UseUseExplosion.rb:20:383:20:3412 | then ... | UseUseExplosion.rb:20:367:20:3428 | if ... | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:388:20:3412 | if ... | UseUseExplosion.rb:20:383:20:3412 | then ... | | UseUseExplosion.rb:20:392:20:396 | @prop | UseUseExplosion.rb:20:392:20:401 | ... > ... | | UseUseExplosion.rb:20:392:20:396 | [post] self | UseUseExplosion.rb:20:413:20:417 | self | @@ -464,11 +391,7 @@ | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [false] ( ... ) | | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [true] ( ... ) | | UseUseExplosion.rb:20:400:20:401 | 82 | UseUseExplosion.rb:20:392:20:401 | ... > ... | -| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | -| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | | UseUseExplosion.rb:20:404:20:3396 | then ... | UseUseExplosion.rb:20:388:20:3412 | if ... | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:409:20:3396 | if ... | UseUseExplosion.rb:20:404:20:3396 | then ... | | UseUseExplosion.rb:20:413:20:417 | @prop | UseUseExplosion.rb:20:413:20:422 | ... > ... | | UseUseExplosion.rb:20:413:20:417 | [post] self | UseUseExplosion.rb:20:434:20:438 | self | @@ -478,11 +401,7 @@ | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [false] ( ... ) | | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [true] ( ... ) | | UseUseExplosion.rb:20:421:20:422 | 81 | UseUseExplosion.rb:20:413:20:422 | ... > ... | -| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | -| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | | UseUseExplosion.rb:20:425:20:3380 | then ... | UseUseExplosion.rb:20:409:20:3396 | if ... | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:430:20:3380 | if ... | UseUseExplosion.rb:20:425:20:3380 | then ... | | UseUseExplosion.rb:20:434:20:438 | @prop | UseUseExplosion.rb:20:434:20:443 | ... > ... | | UseUseExplosion.rb:20:434:20:438 | [post] self | UseUseExplosion.rb:20:455:20:459 | self | @@ -492,11 +411,7 @@ | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [false] ( ... ) | | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [true] ( ... ) | | UseUseExplosion.rb:20:442:20:443 | 80 | UseUseExplosion.rb:20:434:20:443 | ... > ... | -| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | -| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | | UseUseExplosion.rb:20:446:20:3364 | then ... | UseUseExplosion.rb:20:430:20:3380 | if ... | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:451:20:3364 | if ... | UseUseExplosion.rb:20:446:20:3364 | then ... | | UseUseExplosion.rb:20:455:20:459 | @prop | UseUseExplosion.rb:20:455:20:464 | ... > ... | | UseUseExplosion.rb:20:455:20:459 | [post] self | UseUseExplosion.rb:20:476:20:480 | self | @@ -506,11 +421,7 @@ | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [false] ( ... ) | | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [true] ( ... ) | | UseUseExplosion.rb:20:463:20:464 | 79 | UseUseExplosion.rb:20:455:20:464 | ... > ... | -| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | -| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | | UseUseExplosion.rb:20:467:20:3348 | then ... | UseUseExplosion.rb:20:451:20:3364 | if ... | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:472:20:3348 | if ... | UseUseExplosion.rb:20:467:20:3348 | then ... | | UseUseExplosion.rb:20:476:20:480 | @prop | UseUseExplosion.rb:20:476:20:485 | ... > ... | | UseUseExplosion.rb:20:476:20:480 | [post] self | UseUseExplosion.rb:20:497:20:501 | self | @@ -520,11 +431,7 @@ | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [false] ( ... ) | | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [true] ( ... ) | | UseUseExplosion.rb:20:484:20:485 | 78 | UseUseExplosion.rb:20:476:20:485 | ... > ... | -| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | -| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | | UseUseExplosion.rb:20:488:20:3332 | then ... | UseUseExplosion.rb:20:472:20:3348 | if ... | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:493:20:3332 | if ... | UseUseExplosion.rb:20:488:20:3332 | then ... | | UseUseExplosion.rb:20:497:20:501 | @prop | UseUseExplosion.rb:20:497:20:506 | ... > ... | | UseUseExplosion.rb:20:497:20:501 | [post] self | UseUseExplosion.rb:20:518:20:522 | self | @@ -534,11 +441,7 @@ | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [false] ( ... ) | | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [true] ( ... ) | | UseUseExplosion.rb:20:505:20:506 | 77 | UseUseExplosion.rb:20:497:20:506 | ... > ... | -| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | -| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | | UseUseExplosion.rb:20:509:20:3316 | then ... | UseUseExplosion.rb:20:493:20:3332 | if ... | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:514:20:3316 | if ... | UseUseExplosion.rb:20:509:20:3316 | then ... | | UseUseExplosion.rb:20:518:20:522 | @prop | UseUseExplosion.rb:20:518:20:527 | ... > ... | | UseUseExplosion.rb:20:518:20:522 | [post] self | UseUseExplosion.rb:20:539:20:543 | self | @@ -548,11 +451,7 @@ | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [false] ( ... ) | | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [true] ( ... ) | | UseUseExplosion.rb:20:526:20:527 | 76 | UseUseExplosion.rb:20:518:20:527 | ... > ... | -| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | -| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | | UseUseExplosion.rb:20:530:20:3300 | then ... | UseUseExplosion.rb:20:514:20:3316 | if ... | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:535:20:3300 | if ... | UseUseExplosion.rb:20:530:20:3300 | then ... | | UseUseExplosion.rb:20:539:20:543 | @prop | UseUseExplosion.rb:20:539:20:548 | ... > ... | | UseUseExplosion.rb:20:539:20:543 | [post] self | UseUseExplosion.rb:20:560:20:564 | self | @@ -562,11 +461,7 @@ | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [false] ( ... ) | | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [true] ( ... ) | | UseUseExplosion.rb:20:547:20:548 | 75 | UseUseExplosion.rb:20:539:20:548 | ... > ... | -| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | -| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | | UseUseExplosion.rb:20:551:20:3284 | then ... | UseUseExplosion.rb:20:535:20:3300 | if ... | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:556:20:3284 | if ... | UseUseExplosion.rb:20:551:20:3284 | then ... | | UseUseExplosion.rb:20:560:20:564 | @prop | UseUseExplosion.rb:20:560:20:569 | ... > ... | | UseUseExplosion.rb:20:560:20:564 | [post] self | UseUseExplosion.rb:20:581:20:585 | self | @@ -576,11 +471,7 @@ | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [false] ( ... ) | | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [true] ( ... ) | | UseUseExplosion.rb:20:568:20:569 | 74 | UseUseExplosion.rb:20:560:20:569 | ... > ... | -| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | -| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | | UseUseExplosion.rb:20:572:20:3268 | then ... | UseUseExplosion.rb:20:556:20:3284 | if ... | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:577:20:3268 | if ... | UseUseExplosion.rb:20:572:20:3268 | then ... | | UseUseExplosion.rb:20:581:20:585 | @prop | UseUseExplosion.rb:20:581:20:590 | ... > ... | | UseUseExplosion.rb:20:581:20:585 | [post] self | UseUseExplosion.rb:20:602:20:606 | self | @@ -590,11 +481,7 @@ | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [false] ( ... ) | | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [true] ( ... ) | | UseUseExplosion.rb:20:589:20:590 | 73 | UseUseExplosion.rb:20:581:20:590 | ... > ... | -| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | -| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | | UseUseExplosion.rb:20:593:20:3252 | then ... | UseUseExplosion.rb:20:577:20:3268 | if ... | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:598:20:3252 | if ... | UseUseExplosion.rb:20:593:20:3252 | then ... | | UseUseExplosion.rb:20:602:20:606 | @prop | UseUseExplosion.rb:20:602:20:611 | ... > ... | | UseUseExplosion.rb:20:602:20:606 | [post] self | UseUseExplosion.rb:20:623:20:627 | self | @@ -604,11 +491,7 @@ | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [false] ( ... ) | | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [true] ( ... ) | | UseUseExplosion.rb:20:610:20:611 | 72 | UseUseExplosion.rb:20:602:20:611 | ... > ... | -| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | -| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | | UseUseExplosion.rb:20:614:20:3236 | then ... | UseUseExplosion.rb:20:598:20:3252 | if ... | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:619:20:3236 | if ... | UseUseExplosion.rb:20:614:20:3236 | then ... | | UseUseExplosion.rb:20:623:20:627 | @prop | UseUseExplosion.rb:20:623:20:632 | ... > ... | | UseUseExplosion.rb:20:623:20:627 | [post] self | UseUseExplosion.rb:20:644:20:648 | self | @@ -618,11 +501,7 @@ | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [false] ( ... ) | | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [true] ( ... ) | | UseUseExplosion.rb:20:631:20:632 | 71 | UseUseExplosion.rb:20:623:20:632 | ... > ... | -| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | -| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | | UseUseExplosion.rb:20:635:20:3220 | then ... | UseUseExplosion.rb:20:619:20:3236 | if ... | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:640:20:3220 | if ... | UseUseExplosion.rb:20:635:20:3220 | then ... | | UseUseExplosion.rb:20:644:20:648 | @prop | UseUseExplosion.rb:20:644:20:653 | ... > ... | | UseUseExplosion.rb:20:644:20:648 | [post] self | UseUseExplosion.rb:20:665:20:669 | self | @@ -632,11 +511,7 @@ | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [false] ( ... ) | | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [true] ( ... ) | | UseUseExplosion.rb:20:652:20:653 | 70 | UseUseExplosion.rb:20:644:20:653 | ... > ... | -| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | -| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | | UseUseExplosion.rb:20:656:20:3204 | then ... | UseUseExplosion.rb:20:640:20:3220 | if ... | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:661:20:3204 | if ... | UseUseExplosion.rb:20:656:20:3204 | then ... | | UseUseExplosion.rb:20:665:20:669 | @prop | UseUseExplosion.rb:20:665:20:674 | ... > ... | | UseUseExplosion.rb:20:665:20:669 | [post] self | UseUseExplosion.rb:20:686:20:690 | self | @@ -646,11 +521,7 @@ | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [false] ( ... ) | | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [true] ( ... ) | | UseUseExplosion.rb:20:673:20:674 | 69 | UseUseExplosion.rb:20:665:20:674 | ... > ... | -| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | -| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | | UseUseExplosion.rb:20:677:20:3188 | then ... | UseUseExplosion.rb:20:661:20:3204 | if ... | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:682:20:3188 | if ... | UseUseExplosion.rb:20:677:20:3188 | then ... | | UseUseExplosion.rb:20:686:20:690 | @prop | UseUseExplosion.rb:20:686:20:695 | ... > ... | | UseUseExplosion.rb:20:686:20:690 | [post] self | UseUseExplosion.rb:20:707:20:711 | self | @@ -660,11 +531,7 @@ | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [false] ( ... ) | | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [true] ( ... ) | | UseUseExplosion.rb:20:694:20:695 | 68 | UseUseExplosion.rb:20:686:20:695 | ... > ... | -| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | -| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | | UseUseExplosion.rb:20:698:20:3172 | then ... | UseUseExplosion.rb:20:682:20:3188 | if ... | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:703:20:3172 | if ... | UseUseExplosion.rb:20:698:20:3172 | then ... | | UseUseExplosion.rb:20:707:20:711 | @prop | UseUseExplosion.rb:20:707:20:716 | ... > ... | | UseUseExplosion.rb:20:707:20:711 | [post] self | UseUseExplosion.rb:20:728:20:732 | self | @@ -674,11 +541,7 @@ | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [false] ( ... ) | | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [true] ( ... ) | | UseUseExplosion.rb:20:715:20:716 | 67 | UseUseExplosion.rb:20:707:20:716 | ... > ... | -| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | -| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | | UseUseExplosion.rb:20:719:20:3156 | then ... | UseUseExplosion.rb:20:703:20:3172 | if ... | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:724:20:3156 | if ... | UseUseExplosion.rb:20:719:20:3156 | then ... | | UseUseExplosion.rb:20:728:20:732 | @prop | UseUseExplosion.rb:20:728:20:737 | ... > ... | | UseUseExplosion.rb:20:728:20:732 | [post] self | UseUseExplosion.rb:20:749:20:753 | self | @@ -688,11 +551,7 @@ | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [false] ( ... ) | | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [true] ( ... ) | | UseUseExplosion.rb:20:736:20:737 | 66 | UseUseExplosion.rb:20:728:20:737 | ... > ... | -| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | -| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | | UseUseExplosion.rb:20:740:20:3140 | then ... | UseUseExplosion.rb:20:724:20:3156 | if ... | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:745:20:3140 | if ... | UseUseExplosion.rb:20:740:20:3140 | then ... | | UseUseExplosion.rb:20:749:20:753 | @prop | UseUseExplosion.rb:20:749:20:758 | ... > ... | | UseUseExplosion.rb:20:749:20:753 | [post] self | UseUseExplosion.rb:20:770:20:774 | self | @@ -702,11 +561,7 @@ | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [false] ( ... ) | | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [true] ( ... ) | | UseUseExplosion.rb:20:757:20:758 | 65 | UseUseExplosion.rb:20:749:20:758 | ... > ... | -| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | -| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | | UseUseExplosion.rb:20:761:20:3124 | then ... | UseUseExplosion.rb:20:745:20:3140 | if ... | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:766:20:3124 | if ... | UseUseExplosion.rb:20:761:20:3124 | then ... | | UseUseExplosion.rb:20:770:20:774 | @prop | UseUseExplosion.rb:20:770:20:779 | ... > ... | | UseUseExplosion.rb:20:770:20:774 | [post] self | UseUseExplosion.rb:20:791:20:795 | self | @@ -716,11 +571,7 @@ | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [false] ( ... ) | | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [true] ( ... ) | | UseUseExplosion.rb:20:778:20:779 | 64 | UseUseExplosion.rb:20:770:20:779 | ... > ... | -| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | -| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | | UseUseExplosion.rb:20:782:20:3108 | then ... | UseUseExplosion.rb:20:766:20:3124 | if ... | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:787:20:3108 | if ... | UseUseExplosion.rb:20:782:20:3108 | then ... | | UseUseExplosion.rb:20:791:20:795 | @prop | UseUseExplosion.rb:20:791:20:800 | ... > ... | | UseUseExplosion.rb:20:791:20:795 | [post] self | UseUseExplosion.rb:20:812:20:816 | self | @@ -730,11 +581,7 @@ | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [false] ( ... ) | | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [true] ( ... ) | | UseUseExplosion.rb:20:799:20:800 | 63 | UseUseExplosion.rb:20:791:20:800 | ... > ... | -| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | -| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | | UseUseExplosion.rb:20:803:20:3092 | then ... | UseUseExplosion.rb:20:787:20:3108 | if ... | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:808:20:3092 | if ... | UseUseExplosion.rb:20:803:20:3092 | then ... | | UseUseExplosion.rb:20:812:20:816 | @prop | UseUseExplosion.rb:20:812:20:821 | ... > ... | | UseUseExplosion.rb:20:812:20:816 | [post] self | UseUseExplosion.rb:20:833:20:837 | self | @@ -744,11 +591,7 @@ | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [false] ( ... ) | | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [true] ( ... ) | | UseUseExplosion.rb:20:820:20:821 | 62 | UseUseExplosion.rb:20:812:20:821 | ... > ... | -| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | -| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | | UseUseExplosion.rb:20:824:20:3076 | then ... | UseUseExplosion.rb:20:808:20:3092 | if ... | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:829:20:3076 | if ... | UseUseExplosion.rb:20:824:20:3076 | then ... | | UseUseExplosion.rb:20:833:20:837 | @prop | UseUseExplosion.rb:20:833:20:842 | ... > ... | | UseUseExplosion.rb:20:833:20:837 | [post] self | UseUseExplosion.rb:20:854:20:858 | self | @@ -758,11 +601,7 @@ | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [false] ( ... ) | | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [true] ( ... ) | | UseUseExplosion.rb:20:841:20:842 | 61 | UseUseExplosion.rb:20:833:20:842 | ... > ... | -| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | -| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | | UseUseExplosion.rb:20:845:20:3060 | then ... | UseUseExplosion.rb:20:829:20:3076 | if ... | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:850:20:3060 | if ... | UseUseExplosion.rb:20:845:20:3060 | then ... | | UseUseExplosion.rb:20:854:20:858 | @prop | UseUseExplosion.rb:20:854:20:863 | ... > ... | | UseUseExplosion.rb:20:854:20:858 | [post] self | UseUseExplosion.rb:20:875:20:879 | self | @@ -772,11 +611,7 @@ | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [false] ( ... ) | | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [true] ( ... ) | | UseUseExplosion.rb:20:862:20:863 | 60 | UseUseExplosion.rb:20:854:20:863 | ... > ... | -| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | -| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | | UseUseExplosion.rb:20:866:20:3044 | then ... | UseUseExplosion.rb:20:850:20:3060 | if ... | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:871:20:3044 | if ... | UseUseExplosion.rb:20:866:20:3044 | then ... | | UseUseExplosion.rb:20:875:20:879 | @prop | UseUseExplosion.rb:20:875:20:884 | ... > ... | | UseUseExplosion.rb:20:875:20:879 | [post] self | UseUseExplosion.rb:20:896:20:900 | self | @@ -786,11 +621,7 @@ | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [false] ( ... ) | | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [true] ( ... ) | | UseUseExplosion.rb:20:883:20:884 | 59 | UseUseExplosion.rb:20:875:20:884 | ... > ... | -| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | -| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | | UseUseExplosion.rb:20:887:20:3028 | then ... | UseUseExplosion.rb:20:871:20:3044 | if ... | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:892:20:3028 | if ... | UseUseExplosion.rb:20:887:20:3028 | then ... | | UseUseExplosion.rb:20:896:20:900 | @prop | UseUseExplosion.rb:20:896:20:905 | ... > ... | | UseUseExplosion.rb:20:896:20:900 | [post] self | UseUseExplosion.rb:20:917:20:921 | self | @@ -800,11 +631,7 @@ | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [false] ( ... ) | | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [true] ( ... ) | | UseUseExplosion.rb:20:904:20:905 | 58 | UseUseExplosion.rb:20:896:20:905 | ... > ... | -| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | -| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | | UseUseExplosion.rb:20:908:20:3012 | then ... | UseUseExplosion.rb:20:892:20:3028 | if ... | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:913:20:3012 | if ... | UseUseExplosion.rb:20:908:20:3012 | then ... | | UseUseExplosion.rb:20:917:20:921 | @prop | UseUseExplosion.rb:20:917:20:926 | ... > ... | | UseUseExplosion.rb:20:917:20:921 | [post] self | UseUseExplosion.rb:20:938:20:942 | self | @@ -814,11 +641,7 @@ | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [false] ( ... ) | | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [true] ( ... ) | | UseUseExplosion.rb:20:925:20:926 | 57 | UseUseExplosion.rb:20:917:20:926 | ... > ... | -| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | -| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | | UseUseExplosion.rb:20:929:20:2996 | then ... | UseUseExplosion.rb:20:913:20:3012 | if ... | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:934:20:2996 | if ... | UseUseExplosion.rb:20:929:20:2996 | then ... | | UseUseExplosion.rb:20:938:20:942 | @prop | UseUseExplosion.rb:20:938:20:947 | ... > ... | | UseUseExplosion.rb:20:938:20:942 | [post] self | UseUseExplosion.rb:20:959:20:963 | self | @@ -828,11 +651,7 @@ | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [false] ( ... ) | | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [true] ( ... ) | | UseUseExplosion.rb:20:946:20:947 | 56 | UseUseExplosion.rb:20:938:20:947 | ... > ... | -| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | -| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | | UseUseExplosion.rb:20:950:20:2980 | then ... | UseUseExplosion.rb:20:934:20:2996 | if ... | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:955:20:2980 | if ... | UseUseExplosion.rb:20:950:20:2980 | then ... | | UseUseExplosion.rb:20:959:20:963 | @prop | UseUseExplosion.rb:20:959:20:968 | ... > ... | | UseUseExplosion.rb:20:959:20:963 | [post] self | UseUseExplosion.rb:20:980:20:984 | self | @@ -842,11 +661,7 @@ | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [false] ( ... ) | | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [true] ( ... ) | | UseUseExplosion.rb:20:967:20:968 | 55 | UseUseExplosion.rb:20:959:20:968 | ... > ... | -| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | -| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | | UseUseExplosion.rb:20:971:20:2964 | then ... | UseUseExplosion.rb:20:955:20:2980 | if ... | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:976:20:2964 | if ... | UseUseExplosion.rb:20:971:20:2964 | then ... | | UseUseExplosion.rb:20:980:20:984 | @prop | UseUseExplosion.rb:20:980:20:989 | ... > ... | | UseUseExplosion.rb:20:980:20:984 | [post] self | UseUseExplosion.rb:20:1001:20:1005 | self | @@ -856,11 +671,7 @@ | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [false] ( ... ) | | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [true] ( ... ) | | UseUseExplosion.rb:20:988:20:989 | 54 | UseUseExplosion.rb:20:980:20:989 | ... > ... | -| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | -| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | | UseUseExplosion.rb:20:992:20:2948 | then ... | UseUseExplosion.rb:20:976:20:2964 | if ... | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:997:20:2948 | if ... | UseUseExplosion.rb:20:992:20:2948 | then ... | | UseUseExplosion.rb:20:1001:20:1005 | @prop | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | | UseUseExplosion.rb:20:1001:20:1005 | [post] self | UseUseExplosion.rb:20:1022:20:1026 | self | @@ -870,11 +681,7 @@ | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [false] ( ... ) | | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [true] ( ... ) | | UseUseExplosion.rb:20:1009:20:1010 | 53 | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | -| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | -| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | | UseUseExplosion.rb:20:1013:20:2932 | then ... | UseUseExplosion.rb:20:997:20:2948 | if ... | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1018:20:2932 | if ... | UseUseExplosion.rb:20:1013:20:2932 | then ... | | UseUseExplosion.rb:20:1022:20:1026 | @prop | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | | UseUseExplosion.rb:20:1022:20:1026 | [post] self | UseUseExplosion.rb:20:1043:20:1047 | self | @@ -884,11 +691,7 @@ | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [false] ( ... ) | | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [true] ( ... ) | | UseUseExplosion.rb:20:1030:20:1031 | 52 | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | -| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | -| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | | UseUseExplosion.rb:20:1034:20:2916 | then ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1039:20:2916 | if ... | UseUseExplosion.rb:20:1034:20:2916 | then ... | | UseUseExplosion.rb:20:1043:20:1047 | @prop | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | | UseUseExplosion.rb:20:1043:20:1047 | [post] self | UseUseExplosion.rb:20:1064:20:1068 | self | @@ -898,11 +701,7 @@ | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [false] ( ... ) | | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [true] ( ... ) | | UseUseExplosion.rb:20:1051:20:1052 | 51 | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | -| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | -| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | | UseUseExplosion.rb:20:1055:20:2900 | then ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1060:20:2900 | if ... | UseUseExplosion.rb:20:1055:20:2900 | then ... | | UseUseExplosion.rb:20:1064:20:1068 | @prop | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | | UseUseExplosion.rb:20:1064:20:1068 | [post] self | UseUseExplosion.rb:20:1085:20:1089 | self | @@ -912,11 +711,7 @@ | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [false] ( ... ) | | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [true] ( ... ) | | UseUseExplosion.rb:20:1072:20:1073 | 50 | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | -| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | -| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | | UseUseExplosion.rb:20:1076:20:2884 | then ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1081:20:2884 | if ... | UseUseExplosion.rb:20:1076:20:2884 | then ... | | UseUseExplosion.rb:20:1085:20:1089 | @prop | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | | UseUseExplosion.rb:20:1085:20:1089 | [post] self | UseUseExplosion.rb:20:1106:20:1110 | self | @@ -926,11 +721,7 @@ | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [false] ( ... ) | | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [true] ( ... ) | | UseUseExplosion.rb:20:1093:20:1094 | 49 | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | -| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | -| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | | UseUseExplosion.rb:20:1097:20:2868 | then ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1102:20:2868 | if ... | UseUseExplosion.rb:20:1097:20:2868 | then ... | | UseUseExplosion.rb:20:1106:20:1110 | @prop | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | | UseUseExplosion.rb:20:1106:20:1110 | [post] self | UseUseExplosion.rb:20:1127:20:1131 | self | @@ -940,11 +731,7 @@ | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [false] ( ... ) | | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [true] ( ... ) | | UseUseExplosion.rb:20:1114:20:1115 | 48 | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | -| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | -| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | | UseUseExplosion.rb:20:1118:20:2852 | then ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1123:20:2852 | if ... | UseUseExplosion.rb:20:1118:20:2852 | then ... | | UseUseExplosion.rb:20:1127:20:1131 | @prop | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | | UseUseExplosion.rb:20:1127:20:1131 | [post] self | UseUseExplosion.rb:20:1148:20:1152 | self | @@ -954,11 +741,7 @@ | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [false] ( ... ) | | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [true] ( ... ) | | UseUseExplosion.rb:20:1135:20:1136 | 47 | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | -| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | -| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | | UseUseExplosion.rb:20:1139:20:2836 | then ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1144:20:2836 | if ... | UseUseExplosion.rb:20:1139:20:2836 | then ... | | UseUseExplosion.rb:20:1148:20:1152 | @prop | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | | UseUseExplosion.rb:20:1148:20:1152 | [post] self | UseUseExplosion.rb:20:1169:20:1173 | self | @@ -968,11 +751,7 @@ | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [false] ( ... ) | | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [true] ( ... ) | | UseUseExplosion.rb:20:1156:20:1157 | 46 | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | -| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | -| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | | UseUseExplosion.rb:20:1160:20:2820 | then ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1165:20:2820 | if ... | UseUseExplosion.rb:20:1160:20:2820 | then ... | | UseUseExplosion.rb:20:1169:20:1173 | @prop | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | | UseUseExplosion.rb:20:1169:20:1173 | [post] self | UseUseExplosion.rb:20:1190:20:1194 | self | @@ -982,11 +761,7 @@ | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [false] ( ... ) | | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [true] ( ... ) | | UseUseExplosion.rb:20:1177:20:1178 | 45 | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | -| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | -| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | | UseUseExplosion.rb:20:1181:20:2804 | then ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1186:20:2804 | if ... | UseUseExplosion.rb:20:1181:20:2804 | then ... | | UseUseExplosion.rb:20:1190:20:1194 | @prop | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | | UseUseExplosion.rb:20:1190:20:1194 | [post] self | UseUseExplosion.rb:20:1211:20:1215 | self | @@ -996,11 +771,7 @@ | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [false] ( ... ) | | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [true] ( ... ) | | UseUseExplosion.rb:20:1198:20:1199 | 44 | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | -| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | -| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | | UseUseExplosion.rb:20:1202:20:2788 | then ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1207:20:2788 | if ... | UseUseExplosion.rb:20:1202:20:2788 | then ... | | UseUseExplosion.rb:20:1211:20:1215 | @prop | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | | UseUseExplosion.rb:20:1211:20:1215 | [post] self | UseUseExplosion.rb:20:1232:20:1236 | self | @@ -1010,11 +781,7 @@ | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [false] ( ... ) | | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [true] ( ... ) | | UseUseExplosion.rb:20:1219:20:1220 | 43 | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | -| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | -| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | | UseUseExplosion.rb:20:1223:20:2772 | then ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1228:20:2772 | if ... | UseUseExplosion.rb:20:1223:20:2772 | then ... | | UseUseExplosion.rb:20:1232:20:1236 | @prop | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | | UseUseExplosion.rb:20:1232:20:1236 | [post] self | UseUseExplosion.rb:20:1253:20:1257 | self | @@ -1024,11 +791,7 @@ | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [false] ( ... ) | | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [true] ( ... ) | | UseUseExplosion.rb:20:1240:20:1241 | 42 | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | -| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | -| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | | UseUseExplosion.rb:20:1244:20:2756 | then ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1249:20:2756 | if ... | UseUseExplosion.rb:20:1244:20:2756 | then ... | | UseUseExplosion.rb:20:1253:20:1257 | @prop | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | | UseUseExplosion.rb:20:1253:20:1257 | [post] self | UseUseExplosion.rb:20:1274:20:1278 | self | @@ -1038,11 +801,7 @@ | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [false] ( ... ) | | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [true] ( ... ) | | UseUseExplosion.rb:20:1261:20:1262 | 41 | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | -| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | -| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | | UseUseExplosion.rb:20:1265:20:2740 | then ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1270:20:2740 | if ... | UseUseExplosion.rb:20:1265:20:2740 | then ... | | UseUseExplosion.rb:20:1274:20:1278 | @prop | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | | UseUseExplosion.rb:20:1274:20:1278 | [post] self | UseUseExplosion.rb:20:1295:20:1299 | self | @@ -1052,11 +811,7 @@ | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [false] ( ... ) | | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [true] ( ... ) | | UseUseExplosion.rb:20:1282:20:1283 | 40 | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | -| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | -| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | | UseUseExplosion.rb:20:1286:20:2724 | then ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1291:20:2724 | if ... | UseUseExplosion.rb:20:1286:20:2724 | then ... | | UseUseExplosion.rb:20:1295:20:1299 | @prop | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | | UseUseExplosion.rb:20:1295:20:1299 | [post] self | UseUseExplosion.rb:20:1316:20:1320 | self | @@ -1066,11 +821,7 @@ | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [false] ( ... ) | | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [true] ( ... ) | | UseUseExplosion.rb:20:1303:20:1304 | 39 | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | -| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | -| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | | UseUseExplosion.rb:20:1307:20:2708 | then ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1312:20:2708 | if ... | UseUseExplosion.rb:20:1307:20:2708 | then ... | | UseUseExplosion.rb:20:1316:20:1320 | @prop | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | | UseUseExplosion.rb:20:1316:20:1320 | [post] self | UseUseExplosion.rb:20:1337:20:1341 | self | @@ -1080,11 +831,7 @@ | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [false] ( ... ) | | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [true] ( ... ) | | UseUseExplosion.rb:20:1324:20:1325 | 38 | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | -| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | -| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | | UseUseExplosion.rb:20:1328:20:2692 | then ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1333:20:2692 | if ... | UseUseExplosion.rb:20:1328:20:2692 | then ... | | UseUseExplosion.rb:20:1337:20:1341 | @prop | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | | UseUseExplosion.rb:20:1337:20:1341 | [post] self | UseUseExplosion.rb:20:1358:20:1362 | self | @@ -1094,11 +841,7 @@ | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [false] ( ... ) | | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [true] ( ... ) | | UseUseExplosion.rb:20:1345:20:1346 | 37 | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | -| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | -| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | | UseUseExplosion.rb:20:1349:20:2676 | then ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1354:20:2676 | if ... | UseUseExplosion.rb:20:1349:20:2676 | then ... | | UseUseExplosion.rb:20:1358:20:1362 | @prop | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | | UseUseExplosion.rb:20:1358:20:1362 | [post] self | UseUseExplosion.rb:20:1379:20:1383 | self | @@ -1108,11 +851,7 @@ | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [false] ( ... ) | | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [true] ( ... ) | | UseUseExplosion.rb:20:1366:20:1367 | 36 | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | -| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | -| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | | UseUseExplosion.rb:20:1370:20:2660 | then ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1375:20:2660 | if ... | UseUseExplosion.rb:20:1370:20:2660 | then ... | | UseUseExplosion.rb:20:1379:20:1383 | @prop | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | | UseUseExplosion.rb:20:1379:20:1383 | [post] self | UseUseExplosion.rb:20:1400:20:1404 | self | @@ -1122,11 +861,7 @@ | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [false] ( ... ) | | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [true] ( ... ) | | UseUseExplosion.rb:20:1387:20:1388 | 35 | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | -| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | -| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | | UseUseExplosion.rb:20:1391:20:2644 | then ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1396:20:2644 | if ... | UseUseExplosion.rb:20:1391:20:2644 | then ... | | UseUseExplosion.rb:20:1400:20:1404 | @prop | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | | UseUseExplosion.rb:20:1400:20:1404 | [post] self | UseUseExplosion.rb:20:1421:20:1425 | self | @@ -1136,11 +871,7 @@ | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [false] ( ... ) | | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [true] ( ... ) | | UseUseExplosion.rb:20:1408:20:1409 | 34 | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | -| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | -| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | | UseUseExplosion.rb:20:1412:20:2628 | then ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1417:20:2628 | if ... | UseUseExplosion.rb:20:1412:20:2628 | then ... | | UseUseExplosion.rb:20:1421:20:1425 | @prop | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | | UseUseExplosion.rb:20:1421:20:1425 | [post] self | UseUseExplosion.rb:20:1442:20:1446 | self | @@ -1150,11 +881,7 @@ | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [false] ( ... ) | | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [true] ( ... ) | | UseUseExplosion.rb:20:1429:20:1430 | 33 | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | -| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | -| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | | UseUseExplosion.rb:20:1433:20:2612 | then ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1438:20:2612 | if ... | UseUseExplosion.rb:20:1433:20:2612 | then ... | | UseUseExplosion.rb:20:1442:20:1446 | @prop | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | | UseUseExplosion.rb:20:1442:20:1446 | [post] self | UseUseExplosion.rb:20:1463:20:1467 | self | @@ -1164,11 +891,7 @@ | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [false] ( ... ) | | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [true] ( ... ) | | UseUseExplosion.rb:20:1450:20:1451 | 32 | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | -| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | -| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | | UseUseExplosion.rb:20:1454:20:2596 | then ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1459:20:2596 | if ... | UseUseExplosion.rb:20:1454:20:2596 | then ... | | UseUseExplosion.rb:20:1463:20:1467 | @prop | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | | UseUseExplosion.rb:20:1463:20:1467 | [post] self | UseUseExplosion.rb:20:1484:20:1488 | self | @@ -1178,11 +901,7 @@ | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [false] ( ... ) | | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [true] ( ... ) | | UseUseExplosion.rb:20:1471:20:1472 | 31 | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | -| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | -| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | | UseUseExplosion.rb:20:1475:20:2580 | then ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1480:20:2580 | if ... | UseUseExplosion.rb:20:1475:20:2580 | then ... | | UseUseExplosion.rb:20:1484:20:1488 | @prop | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | | UseUseExplosion.rb:20:1484:20:1488 | [post] self | UseUseExplosion.rb:20:1505:20:1509 | self | @@ -1192,11 +911,7 @@ | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [false] ( ... ) | | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [true] ( ... ) | | UseUseExplosion.rb:20:1492:20:1493 | 30 | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | -| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | -| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | | UseUseExplosion.rb:20:1496:20:2564 | then ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1501:20:2564 | if ... | UseUseExplosion.rb:20:1496:20:2564 | then ... | | UseUseExplosion.rb:20:1505:20:1509 | @prop | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | | UseUseExplosion.rb:20:1505:20:1509 | [post] self | UseUseExplosion.rb:20:1526:20:1530 | self | @@ -1206,11 +921,7 @@ | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [false] ( ... ) | | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [true] ( ... ) | | UseUseExplosion.rb:20:1513:20:1514 | 29 | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | -| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | -| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | | UseUseExplosion.rb:20:1517:20:2548 | then ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1522:20:2548 | if ... | UseUseExplosion.rb:20:1517:20:2548 | then ... | | UseUseExplosion.rb:20:1526:20:1530 | @prop | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | | UseUseExplosion.rb:20:1526:20:1530 | [post] self | UseUseExplosion.rb:20:1547:20:1551 | self | @@ -1220,11 +931,7 @@ | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [false] ( ... ) | | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [true] ( ... ) | | UseUseExplosion.rb:20:1534:20:1535 | 28 | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | -| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | -| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | | UseUseExplosion.rb:20:1538:20:2532 | then ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1543:20:2532 | if ... | UseUseExplosion.rb:20:1538:20:2532 | then ... | | UseUseExplosion.rb:20:1547:20:1551 | @prop | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | | UseUseExplosion.rb:20:1547:20:1551 | [post] self | UseUseExplosion.rb:20:1568:20:1572 | self | @@ -1234,11 +941,7 @@ | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [false] ( ... ) | | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [true] ( ... ) | | UseUseExplosion.rb:20:1555:20:1556 | 27 | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | -| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | -| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | | UseUseExplosion.rb:20:1559:20:2516 | then ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1564:20:2516 | if ... | UseUseExplosion.rb:20:1559:20:2516 | then ... | | UseUseExplosion.rb:20:1568:20:1572 | @prop | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | | UseUseExplosion.rb:20:1568:20:1572 | [post] self | UseUseExplosion.rb:20:1589:20:1593 | self | @@ -1248,11 +951,7 @@ | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [false] ( ... ) | | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [true] ( ... ) | | UseUseExplosion.rb:20:1576:20:1577 | 26 | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | -| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | -| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | | UseUseExplosion.rb:20:1580:20:2500 | then ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1585:20:2500 | if ... | UseUseExplosion.rb:20:1580:20:2500 | then ... | | UseUseExplosion.rb:20:1589:20:1593 | @prop | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | | UseUseExplosion.rb:20:1589:20:1593 | [post] self | UseUseExplosion.rb:20:1610:20:1614 | self | @@ -1262,11 +961,7 @@ | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [false] ( ... ) | | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [true] ( ... ) | | UseUseExplosion.rb:20:1597:20:1598 | 25 | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | -| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | -| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | | UseUseExplosion.rb:20:1601:20:2484 | then ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1606:20:2484 | if ... | UseUseExplosion.rb:20:1601:20:2484 | then ... | | UseUseExplosion.rb:20:1610:20:1614 | @prop | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | | UseUseExplosion.rb:20:1610:20:1614 | [post] self | UseUseExplosion.rb:20:1631:20:1635 | self | @@ -1276,11 +971,7 @@ | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [false] ( ... ) | | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [true] ( ... ) | | UseUseExplosion.rb:20:1618:20:1619 | 24 | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | -| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | -| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | | UseUseExplosion.rb:20:1622:20:2468 | then ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1627:20:2468 | if ... | UseUseExplosion.rb:20:1622:20:2468 | then ... | | UseUseExplosion.rb:20:1631:20:1635 | @prop | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | | UseUseExplosion.rb:20:1631:20:1635 | [post] self | UseUseExplosion.rb:20:1652:20:1656 | self | @@ -1290,11 +981,7 @@ | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [false] ( ... ) | | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [true] ( ... ) | | UseUseExplosion.rb:20:1639:20:1640 | 23 | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | -| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | -| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | | UseUseExplosion.rb:20:1643:20:2452 | then ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1648:20:2452 | if ... | UseUseExplosion.rb:20:1643:20:2452 | then ... | | UseUseExplosion.rb:20:1652:20:1656 | @prop | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | | UseUseExplosion.rb:20:1652:20:1656 | [post] self | UseUseExplosion.rb:20:1673:20:1677 | self | @@ -1304,11 +991,7 @@ | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [false] ( ... ) | | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [true] ( ... ) | | UseUseExplosion.rb:20:1660:20:1661 | 22 | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | -| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | -| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | | UseUseExplosion.rb:20:1664:20:2436 | then ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1669:20:2436 | if ... | UseUseExplosion.rb:20:1664:20:2436 | then ... | | UseUseExplosion.rb:20:1673:20:1677 | @prop | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | | UseUseExplosion.rb:20:1673:20:1677 | [post] self | UseUseExplosion.rb:20:1694:20:1698 | self | @@ -1318,11 +1001,7 @@ | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [false] ( ... ) | | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [true] ( ... ) | | UseUseExplosion.rb:20:1681:20:1682 | 21 | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | -| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | -| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | | UseUseExplosion.rb:20:1685:20:2420 | then ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1690:20:2420 | if ... | UseUseExplosion.rb:20:1685:20:2420 | then ... | | UseUseExplosion.rb:20:1694:20:1698 | @prop | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | | UseUseExplosion.rb:20:1694:20:1698 | [post] self | UseUseExplosion.rb:20:1715:20:1719 | self | @@ -1332,11 +1011,7 @@ | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [false] ( ... ) | | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [true] ( ... ) | | UseUseExplosion.rb:20:1702:20:1703 | 20 | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | -| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | -| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | | UseUseExplosion.rb:20:1706:20:2404 | then ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1711:20:2404 | if ... | UseUseExplosion.rb:20:1706:20:2404 | then ... | | UseUseExplosion.rb:20:1715:20:1719 | @prop | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | | UseUseExplosion.rb:20:1715:20:1719 | [post] self | UseUseExplosion.rb:20:1736:20:1740 | self | @@ -1346,11 +1021,7 @@ | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [false] ( ... ) | | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [true] ( ... ) | | UseUseExplosion.rb:20:1723:20:1724 | 19 | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | -| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | -| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | | UseUseExplosion.rb:20:1727:20:2388 | then ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1732:20:2388 | if ... | UseUseExplosion.rb:20:1727:20:2388 | then ... | | UseUseExplosion.rb:20:1736:20:1740 | @prop | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | | UseUseExplosion.rb:20:1736:20:1740 | [post] self | UseUseExplosion.rb:20:1757:20:1761 | self | @@ -1360,11 +1031,7 @@ | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [false] ( ... ) | | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [true] ( ... ) | | UseUseExplosion.rb:20:1744:20:1745 | 18 | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | -| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | -| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | | UseUseExplosion.rb:20:1748:20:2372 | then ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1753:20:2372 | if ... | UseUseExplosion.rb:20:1748:20:2372 | then ... | | UseUseExplosion.rb:20:1757:20:1761 | @prop | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | | UseUseExplosion.rb:20:1757:20:1761 | [post] self | UseUseExplosion.rb:20:1778:20:1782 | self | @@ -1374,11 +1041,7 @@ | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [false] ( ... ) | | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [true] ( ... ) | | UseUseExplosion.rb:20:1765:20:1766 | 17 | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | -| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | -| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | | UseUseExplosion.rb:20:1769:20:2356 | then ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1774:20:2356 | if ... | UseUseExplosion.rb:20:1769:20:2356 | then ... | | UseUseExplosion.rb:20:1778:20:1782 | @prop | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | | UseUseExplosion.rb:20:1778:20:1782 | [post] self | UseUseExplosion.rb:20:1799:20:1803 | self | @@ -1388,11 +1051,7 @@ | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [false] ( ... ) | | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [true] ( ... ) | | UseUseExplosion.rb:20:1786:20:1787 | 16 | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | -| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | -| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | | UseUseExplosion.rb:20:1790:20:2340 | then ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1795:20:2340 | if ... | UseUseExplosion.rb:20:1790:20:2340 | then ... | | UseUseExplosion.rb:20:1799:20:1803 | @prop | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | | UseUseExplosion.rb:20:1799:20:1803 | [post] self | UseUseExplosion.rb:20:1820:20:1824 | self | @@ -1402,11 +1061,7 @@ | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [false] ( ... ) | | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [true] ( ... ) | | UseUseExplosion.rb:20:1807:20:1808 | 15 | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | -| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | -| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | | UseUseExplosion.rb:20:1811:20:2324 | then ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1816:20:2324 | if ... | UseUseExplosion.rb:20:1811:20:2324 | then ... | | UseUseExplosion.rb:20:1820:20:1824 | @prop | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | | UseUseExplosion.rb:20:1820:20:1824 | [post] self | UseUseExplosion.rb:20:1841:20:1845 | self | @@ -1416,11 +1071,7 @@ | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [false] ( ... ) | | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [true] ( ... ) | | UseUseExplosion.rb:20:1828:20:1829 | 14 | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | -| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | -| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | | UseUseExplosion.rb:20:1832:20:2308 | then ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1837:20:2308 | if ... | UseUseExplosion.rb:20:1832:20:2308 | then ... | | UseUseExplosion.rb:20:1841:20:1845 | @prop | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | | UseUseExplosion.rb:20:1841:20:1845 | [post] self | UseUseExplosion.rb:20:1862:20:1866 | self | @@ -1430,11 +1081,7 @@ | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [false] ( ... ) | | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [true] ( ... ) | | UseUseExplosion.rb:20:1849:20:1850 | 13 | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | -| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | -| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | | UseUseExplosion.rb:20:1853:20:2292 | then ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1858:20:2292 | if ... | UseUseExplosion.rb:20:1853:20:2292 | then ... | | UseUseExplosion.rb:20:1862:20:1866 | @prop | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | | UseUseExplosion.rb:20:1862:20:1866 | [post] self | UseUseExplosion.rb:20:1883:20:1887 | self | @@ -1444,11 +1091,7 @@ | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [false] ( ... ) | | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [true] ( ... ) | | UseUseExplosion.rb:20:1870:20:1871 | 12 | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | -| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | -| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | | UseUseExplosion.rb:20:1874:20:2276 | then ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1879:20:2276 | if ... | UseUseExplosion.rb:20:1874:20:2276 | then ... | | UseUseExplosion.rb:20:1883:20:1887 | @prop | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | | UseUseExplosion.rb:20:1883:20:1887 | [post] self | UseUseExplosion.rb:20:1904:20:1908 | self | @@ -1458,11 +1101,7 @@ | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [false] ( ... ) | | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [true] ( ... ) | | UseUseExplosion.rb:20:1891:20:1892 | 11 | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | -| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | -| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | | UseUseExplosion.rb:20:1895:20:2260 | then ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1900:20:2260 | if ... | UseUseExplosion.rb:20:1895:20:2260 | then ... | | UseUseExplosion.rb:20:1904:20:1908 | @prop | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | | UseUseExplosion.rb:20:1904:20:1908 | [post] self | UseUseExplosion.rb:20:1925:20:1929 | self | @@ -1472,11 +1111,7 @@ | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [false] ( ... ) | | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [true] ( ... ) | | UseUseExplosion.rb:20:1912:20:1913 | 10 | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | -| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | -| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | | UseUseExplosion.rb:20:1916:20:2244 | then ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1921:20:2244 | if ... | UseUseExplosion.rb:20:1916:20:2244 | then ... | | UseUseExplosion.rb:20:1925:20:1929 | @prop | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | | UseUseExplosion.rb:20:1925:20:1929 | [post] self | UseUseExplosion.rb:20:1945:20:1949 | self | @@ -1486,11 +1121,7 @@ | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [false] ( ... ) | | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [true] ( ... ) | | UseUseExplosion.rb:20:1933:20:1933 | 9 | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | -| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | -| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | | UseUseExplosion.rb:20:1936:20:2228 | then ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1941:20:2228 | if ... | UseUseExplosion.rb:20:1936:20:2228 | then ... | | UseUseExplosion.rb:20:1945:20:1949 | @prop | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | | UseUseExplosion.rb:20:1945:20:1949 | [post] self | UseUseExplosion.rb:20:1965:20:1969 | self | @@ -1500,11 +1131,7 @@ | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [false] ( ... ) | | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [true] ( ... ) | | UseUseExplosion.rb:20:1953:20:1953 | 8 | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | -| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | -| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | | UseUseExplosion.rb:20:1956:20:2212 | then ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1961:20:2212 | if ... | UseUseExplosion.rb:20:1956:20:2212 | then ... | | UseUseExplosion.rb:20:1965:20:1969 | @prop | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | | UseUseExplosion.rb:20:1965:20:1969 | [post] self | UseUseExplosion.rb:20:1985:20:1989 | self | @@ -1514,11 +1141,7 @@ | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [false] ( ... ) | | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [true] ( ... ) | | UseUseExplosion.rb:20:1973:20:1973 | 7 | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | -| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | -| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | | UseUseExplosion.rb:20:1976:20:2196 | then ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1981:20:2196 | if ... | UseUseExplosion.rb:20:1976:20:2196 | then ... | | UseUseExplosion.rb:20:1985:20:1989 | @prop | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | | UseUseExplosion.rb:20:1985:20:1989 | [post] self | UseUseExplosion.rb:20:2005:20:2009 | self | @@ -1528,11 +1151,7 @@ | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [false] ( ... ) | | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [true] ( ... ) | | UseUseExplosion.rb:20:1993:20:1993 | 6 | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | -| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | -| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | | UseUseExplosion.rb:20:1996:20:2180 | then ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2001:20:2180 | if ... | UseUseExplosion.rb:20:1996:20:2180 | then ... | | UseUseExplosion.rb:20:2005:20:2009 | @prop | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | | UseUseExplosion.rb:20:2005:20:2009 | [post] self | UseUseExplosion.rb:20:2025:20:2029 | self | @@ -1542,11 +1161,7 @@ | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [false] ( ... ) | | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [true] ( ... ) | | UseUseExplosion.rb:20:2013:20:2013 | 5 | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | -| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | -| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | | UseUseExplosion.rb:20:2016:20:2164 | then ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2021:20:2164 | if ... | UseUseExplosion.rb:20:2016:20:2164 | then ... | | UseUseExplosion.rb:20:2025:20:2029 | @prop | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | | UseUseExplosion.rb:20:2025:20:2029 | [post] self | UseUseExplosion.rb:20:2045:20:2049 | self | @@ -1556,11 +1171,7 @@ | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [false] ( ... ) | | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [true] ( ... ) | | UseUseExplosion.rb:20:2033:20:2033 | 4 | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | -| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | -| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | | UseUseExplosion.rb:20:2036:20:2148 | then ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2041:20:2148 | if ... | UseUseExplosion.rb:20:2036:20:2148 | then ... | | UseUseExplosion.rb:20:2045:20:2049 | @prop | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | | UseUseExplosion.rb:20:2045:20:2049 | [post] self | UseUseExplosion.rb:20:2065:20:2069 | self | @@ -1570,11 +1181,7 @@ | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [false] ( ... ) | | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [true] ( ... ) | | UseUseExplosion.rb:20:2053:20:2053 | 3 | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | -| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | -| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | | UseUseExplosion.rb:20:2056:20:2132 | then ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2061:20:2132 | if ... | UseUseExplosion.rb:20:2056:20:2132 | then ... | | UseUseExplosion.rb:20:2065:20:2069 | @prop | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | | UseUseExplosion.rb:20:2065:20:2069 | [post] self | UseUseExplosion.rb:20:2085:20:2089 | self | @@ -1584,11 +1191,7 @@ | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [false] ( ... ) | | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [true] ( ... ) | | UseUseExplosion.rb:20:2073:20:2073 | 2 | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | -| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | -| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | | UseUseExplosion.rb:20:2076:20:2116 | then ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2081:20:2116 | if ... | UseUseExplosion.rb:20:2076:20:2116 | then ... | | UseUseExplosion.rb:20:2085:20:2089 | @prop | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | | UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | @@ -1598,709 +1201,509 @@ | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [false] ( ... ) | | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [true] ( ... ) | | UseUseExplosion.rb:20:2093:20:2093 | 1 | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | -| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | -| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2096:20:2099 | then ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | -| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | -| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | | UseUseExplosion.rb:20:2102:20:2112 | else ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | -| UseUseExplosion.rb:20:2107:20:2112 | [post] self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2107:20:2112 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2107:20:2112 | call to use | UseUseExplosion.rb:20:2102:20:2112 | else ... | -| UseUseExplosion.rb:20:2107:20:2112 | self | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2111:20:2111 | x | UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | -| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | +| UseUseExplosion.rb:20:2107:20:2112 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2111:20:2111 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2118:20:2128 | else ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | -| UseUseExplosion.rb:20:2123:20:2128 | [post] self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2123:20:2128 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2123:20:2128 | call to use | UseUseExplosion.rb:20:2118:20:2128 | else ... | -| UseUseExplosion.rb:20:2123:20:2128 | self | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2127:20:2127 | x | UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | -| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | +| UseUseExplosion.rb:20:2123:20:2128 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2127:20:2127 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2134:20:2144 | else ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | -| UseUseExplosion.rb:20:2139:20:2144 | [post] self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2139:20:2144 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2139:20:2144 | call to use | UseUseExplosion.rb:20:2134:20:2144 | else ... | -| UseUseExplosion.rb:20:2139:20:2144 | self | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2143:20:2143 | x | UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | -| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | +| UseUseExplosion.rb:20:2139:20:2144 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2143:20:2143 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2150:20:2160 | else ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | -| UseUseExplosion.rb:20:2155:20:2160 | [post] self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2155:20:2160 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2155:20:2160 | call to use | UseUseExplosion.rb:20:2150:20:2160 | else ... | -| UseUseExplosion.rb:20:2155:20:2160 | self | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2159:20:2159 | x | UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | -| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | +| UseUseExplosion.rb:20:2155:20:2160 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2159:20:2159 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2166:20:2176 | else ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | -| UseUseExplosion.rb:20:2171:20:2176 | [post] self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2171:20:2176 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2171:20:2176 | call to use | UseUseExplosion.rb:20:2166:20:2176 | else ... | -| UseUseExplosion.rb:20:2171:20:2176 | self | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2175:20:2175 | x | UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | -| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | +| UseUseExplosion.rb:20:2171:20:2176 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2175:20:2175 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2182:20:2192 | else ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | -| UseUseExplosion.rb:20:2187:20:2192 | [post] self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2187:20:2192 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2187:20:2192 | call to use | UseUseExplosion.rb:20:2182:20:2192 | else ... | -| UseUseExplosion.rb:20:2187:20:2192 | self | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2191:20:2191 | x | UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | -| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | +| UseUseExplosion.rb:20:2187:20:2192 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2191:20:2191 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2198:20:2208 | else ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | -| UseUseExplosion.rb:20:2203:20:2208 | [post] self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2203:20:2208 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2203:20:2208 | call to use | UseUseExplosion.rb:20:2198:20:2208 | else ... | -| UseUseExplosion.rb:20:2203:20:2208 | self | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2207:20:2207 | x | UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | -| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | +| UseUseExplosion.rb:20:2203:20:2208 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2207:20:2207 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2214:20:2224 | else ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | -| UseUseExplosion.rb:20:2219:20:2224 | [post] self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2219:20:2224 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2219:20:2224 | call to use | UseUseExplosion.rb:20:2214:20:2224 | else ... | -| UseUseExplosion.rb:20:2219:20:2224 | self | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2223:20:2223 | x | UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | -| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | +| UseUseExplosion.rb:20:2219:20:2224 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2223:20:2223 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2230:20:2240 | else ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | -| UseUseExplosion.rb:20:2235:20:2240 | [post] self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2235:20:2240 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2235:20:2240 | call to use | UseUseExplosion.rb:20:2230:20:2240 | else ... | -| UseUseExplosion.rb:20:2235:20:2240 | self | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2239:20:2239 | x | UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | -| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | +| UseUseExplosion.rb:20:2235:20:2240 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2239:20:2239 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2246:20:2256 | else ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | -| UseUseExplosion.rb:20:2251:20:2256 | [post] self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2251:20:2256 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2251:20:2256 | call to use | UseUseExplosion.rb:20:2246:20:2256 | else ... | -| UseUseExplosion.rb:20:2251:20:2256 | self | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2255:20:2255 | x | UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | -| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | +| UseUseExplosion.rb:20:2251:20:2256 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2255:20:2255 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2262:20:2272 | else ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | -| UseUseExplosion.rb:20:2267:20:2272 | [post] self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2267:20:2272 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2267:20:2272 | call to use | UseUseExplosion.rb:20:2262:20:2272 | else ... | -| UseUseExplosion.rb:20:2267:20:2272 | self | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2271:20:2271 | x | UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | -| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | +| UseUseExplosion.rb:20:2267:20:2272 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2271:20:2271 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2278:20:2288 | else ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | -| UseUseExplosion.rb:20:2283:20:2288 | [post] self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2283:20:2288 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2283:20:2288 | call to use | UseUseExplosion.rb:20:2278:20:2288 | else ... | -| UseUseExplosion.rb:20:2283:20:2288 | self | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2287:20:2287 | x | UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | -| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | +| UseUseExplosion.rb:20:2283:20:2288 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2287:20:2287 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2294:20:2304 | else ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | -| UseUseExplosion.rb:20:2299:20:2304 | [post] self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2299:20:2304 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2299:20:2304 | call to use | UseUseExplosion.rb:20:2294:20:2304 | else ... | -| UseUseExplosion.rb:20:2299:20:2304 | self | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2303:20:2303 | x | UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | -| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | +| UseUseExplosion.rb:20:2299:20:2304 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2303:20:2303 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2310:20:2320 | else ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | -| UseUseExplosion.rb:20:2315:20:2320 | [post] self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2315:20:2320 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2315:20:2320 | call to use | UseUseExplosion.rb:20:2310:20:2320 | else ... | -| UseUseExplosion.rb:20:2315:20:2320 | self | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2319:20:2319 | x | UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | -| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | +| UseUseExplosion.rb:20:2315:20:2320 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2319:20:2319 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2326:20:2336 | else ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | -| UseUseExplosion.rb:20:2331:20:2336 | [post] self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2331:20:2336 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2331:20:2336 | call to use | UseUseExplosion.rb:20:2326:20:2336 | else ... | -| UseUseExplosion.rb:20:2331:20:2336 | self | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2335:20:2335 | x | UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | -| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | +| UseUseExplosion.rb:20:2331:20:2336 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2335:20:2335 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2342:20:2352 | else ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | -| UseUseExplosion.rb:20:2347:20:2352 | [post] self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2347:20:2352 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2347:20:2352 | call to use | UseUseExplosion.rb:20:2342:20:2352 | else ... | -| UseUseExplosion.rb:20:2347:20:2352 | self | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2351:20:2351 | x | UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | -| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | +| UseUseExplosion.rb:20:2347:20:2352 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2351:20:2351 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2358:20:2368 | else ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | -| UseUseExplosion.rb:20:2363:20:2368 | [post] self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2363:20:2368 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2363:20:2368 | call to use | UseUseExplosion.rb:20:2358:20:2368 | else ... | -| UseUseExplosion.rb:20:2363:20:2368 | self | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2367:20:2367 | x | UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | -| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | +| UseUseExplosion.rb:20:2363:20:2368 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2367:20:2367 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2374:20:2384 | else ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | -| UseUseExplosion.rb:20:2379:20:2384 | [post] self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2379:20:2384 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2379:20:2384 | call to use | UseUseExplosion.rb:20:2374:20:2384 | else ... | -| UseUseExplosion.rb:20:2379:20:2384 | self | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2383:20:2383 | x | UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | -| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | +| UseUseExplosion.rb:20:2379:20:2384 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2383:20:2383 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2390:20:2400 | else ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | -| UseUseExplosion.rb:20:2395:20:2400 | [post] self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2395:20:2400 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2395:20:2400 | call to use | UseUseExplosion.rb:20:2390:20:2400 | else ... | -| UseUseExplosion.rb:20:2395:20:2400 | self | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2399:20:2399 | x | UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | -| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | +| UseUseExplosion.rb:20:2395:20:2400 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2399:20:2399 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2406:20:2416 | else ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | -| UseUseExplosion.rb:20:2411:20:2416 | [post] self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2411:20:2416 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2411:20:2416 | call to use | UseUseExplosion.rb:20:2406:20:2416 | else ... | -| UseUseExplosion.rb:20:2411:20:2416 | self | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2415:20:2415 | x | UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | -| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | +| UseUseExplosion.rb:20:2411:20:2416 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2415:20:2415 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2422:20:2432 | else ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | -| UseUseExplosion.rb:20:2427:20:2432 | [post] self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2427:20:2432 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2427:20:2432 | call to use | UseUseExplosion.rb:20:2422:20:2432 | else ... | -| UseUseExplosion.rb:20:2427:20:2432 | self | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2431:20:2431 | x | UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | -| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | +| UseUseExplosion.rb:20:2427:20:2432 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2431:20:2431 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2438:20:2448 | else ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | -| UseUseExplosion.rb:20:2443:20:2448 | [post] self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2443:20:2448 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2443:20:2448 | call to use | UseUseExplosion.rb:20:2438:20:2448 | else ... | -| UseUseExplosion.rb:20:2443:20:2448 | self | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2447:20:2447 | x | UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | -| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | +| UseUseExplosion.rb:20:2443:20:2448 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2447:20:2447 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2454:20:2464 | else ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | -| UseUseExplosion.rb:20:2459:20:2464 | [post] self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2459:20:2464 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2459:20:2464 | call to use | UseUseExplosion.rb:20:2454:20:2464 | else ... | -| UseUseExplosion.rb:20:2459:20:2464 | self | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2463:20:2463 | x | UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | -| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | +| UseUseExplosion.rb:20:2459:20:2464 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2463:20:2463 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2470:20:2480 | else ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | -| UseUseExplosion.rb:20:2475:20:2480 | [post] self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2475:20:2480 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2475:20:2480 | call to use | UseUseExplosion.rb:20:2470:20:2480 | else ... | -| UseUseExplosion.rb:20:2475:20:2480 | self | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2479:20:2479 | x | UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | -| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | +| UseUseExplosion.rb:20:2475:20:2480 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2479:20:2479 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2486:20:2496 | else ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | -| UseUseExplosion.rb:20:2491:20:2496 | [post] self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2491:20:2496 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2491:20:2496 | call to use | UseUseExplosion.rb:20:2486:20:2496 | else ... | -| UseUseExplosion.rb:20:2491:20:2496 | self | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2495:20:2495 | x | UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | -| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | +| UseUseExplosion.rb:20:2491:20:2496 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2495:20:2495 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2502:20:2512 | else ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | -| UseUseExplosion.rb:20:2507:20:2512 | [post] self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2507:20:2512 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2507:20:2512 | call to use | UseUseExplosion.rb:20:2502:20:2512 | else ... | -| UseUseExplosion.rb:20:2507:20:2512 | self | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2511:20:2511 | x | UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | -| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | +| UseUseExplosion.rb:20:2507:20:2512 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2511:20:2511 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2518:20:2528 | else ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | -| UseUseExplosion.rb:20:2523:20:2528 | [post] self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2523:20:2528 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2523:20:2528 | call to use | UseUseExplosion.rb:20:2518:20:2528 | else ... | -| UseUseExplosion.rb:20:2523:20:2528 | self | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2527:20:2527 | x | UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | -| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | +| UseUseExplosion.rb:20:2523:20:2528 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2527:20:2527 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2534:20:2544 | else ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | -| UseUseExplosion.rb:20:2539:20:2544 | [post] self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2539:20:2544 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2539:20:2544 | call to use | UseUseExplosion.rb:20:2534:20:2544 | else ... | -| UseUseExplosion.rb:20:2539:20:2544 | self | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2543:20:2543 | x | UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | -| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | +| UseUseExplosion.rb:20:2539:20:2544 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2543:20:2543 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2550:20:2560 | else ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | -| UseUseExplosion.rb:20:2555:20:2560 | [post] self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2555:20:2560 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2555:20:2560 | call to use | UseUseExplosion.rb:20:2550:20:2560 | else ... | -| UseUseExplosion.rb:20:2555:20:2560 | self | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2559:20:2559 | x | UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | -| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | +| UseUseExplosion.rb:20:2555:20:2560 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2559:20:2559 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2566:20:2576 | else ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | -| UseUseExplosion.rb:20:2571:20:2576 | [post] self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2571:20:2576 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2571:20:2576 | call to use | UseUseExplosion.rb:20:2566:20:2576 | else ... | -| UseUseExplosion.rb:20:2571:20:2576 | self | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2575:20:2575 | x | UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | -| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | +| UseUseExplosion.rb:20:2571:20:2576 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2575:20:2575 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2582:20:2592 | else ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | -| UseUseExplosion.rb:20:2587:20:2592 | [post] self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2587:20:2592 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2587:20:2592 | call to use | UseUseExplosion.rb:20:2582:20:2592 | else ... | -| UseUseExplosion.rb:20:2587:20:2592 | self | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2591:20:2591 | x | UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | -| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | +| UseUseExplosion.rb:20:2587:20:2592 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2591:20:2591 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2598:20:2608 | else ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | -| UseUseExplosion.rb:20:2603:20:2608 | [post] self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2603:20:2608 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2603:20:2608 | call to use | UseUseExplosion.rb:20:2598:20:2608 | else ... | -| UseUseExplosion.rb:20:2603:20:2608 | self | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2607:20:2607 | x | UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | -| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | +| UseUseExplosion.rb:20:2603:20:2608 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2607:20:2607 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2614:20:2624 | else ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | -| UseUseExplosion.rb:20:2619:20:2624 | [post] self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2619:20:2624 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2619:20:2624 | call to use | UseUseExplosion.rb:20:2614:20:2624 | else ... | -| UseUseExplosion.rb:20:2619:20:2624 | self | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2623:20:2623 | x | UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | -| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | +| UseUseExplosion.rb:20:2619:20:2624 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2623:20:2623 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2630:20:2640 | else ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | -| UseUseExplosion.rb:20:2635:20:2640 | [post] self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2635:20:2640 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2635:20:2640 | call to use | UseUseExplosion.rb:20:2630:20:2640 | else ... | -| UseUseExplosion.rb:20:2635:20:2640 | self | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2639:20:2639 | x | UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | -| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | +| UseUseExplosion.rb:20:2635:20:2640 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2639:20:2639 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2646:20:2656 | else ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | -| UseUseExplosion.rb:20:2651:20:2656 | [post] self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2651:20:2656 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2651:20:2656 | call to use | UseUseExplosion.rb:20:2646:20:2656 | else ... | -| UseUseExplosion.rb:20:2651:20:2656 | self | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2655:20:2655 | x | UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | -| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | +| UseUseExplosion.rb:20:2651:20:2656 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2655:20:2655 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2662:20:2672 | else ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | -| UseUseExplosion.rb:20:2667:20:2672 | [post] self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2667:20:2672 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2667:20:2672 | call to use | UseUseExplosion.rb:20:2662:20:2672 | else ... | -| UseUseExplosion.rb:20:2667:20:2672 | self | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2671:20:2671 | x | UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | -| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | +| UseUseExplosion.rb:20:2667:20:2672 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2671:20:2671 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2678:20:2688 | else ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | -| UseUseExplosion.rb:20:2683:20:2688 | [post] self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2683:20:2688 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2683:20:2688 | call to use | UseUseExplosion.rb:20:2678:20:2688 | else ... | -| UseUseExplosion.rb:20:2683:20:2688 | self | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2687:20:2687 | x | UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | -| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | +| UseUseExplosion.rb:20:2683:20:2688 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2687:20:2687 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2694:20:2704 | else ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | -| UseUseExplosion.rb:20:2699:20:2704 | [post] self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2699:20:2704 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2699:20:2704 | call to use | UseUseExplosion.rb:20:2694:20:2704 | else ... | -| UseUseExplosion.rb:20:2699:20:2704 | self | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2703:20:2703 | x | UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | -| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | +| UseUseExplosion.rb:20:2699:20:2704 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2703:20:2703 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2710:20:2720 | else ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | -| UseUseExplosion.rb:20:2715:20:2720 | [post] self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2715:20:2720 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2715:20:2720 | call to use | UseUseExplosion.rb:20:2710:20:2720 | else ... | -| UseUseExplosion.rb:20:2715:20:2720 | self | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2719:20:2719 | x | UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | -| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | +| UseUseExplosion.rb:20:2715:20:2720 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2719:20:2719 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2726:20:2736 | else ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | -| UseUseExplosion.rb:20:2731:20:2736 | [post] self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2731:20:2736 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2731:20:2736 | call to use | UseUseExplosion.rb:20:2726:20:2736 | else ... | -| UseUseExplosion.rb:20:2731:20:2736 | self | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2735:20:2735 | x | UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | -| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | +| UseUseExplosion.rb:20:2731:20:2736 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2735:20:2735 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2742:20:2752 | else ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | -| UseUseExplosion.rb:20:2747:20:2752 | [post] self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2747:20:2752 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2747:20:2752 | call to use | UseUseExplosion.rb:20:2742:20:2752 | else ... | -| UseUseExplosion.rb:20:2747:20:2752 | self | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2751:20:2751 | x | UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | -| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | +| UseUseExplosion.rb:20:2747:20:2752 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2751:20:2751 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2758:20:2768 | else ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | -| UseUseExplosion.rb:20:2763:20:2768 | [post] self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2763:20:2768 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2763:20:2768 | call to use | UseUseExplosion.rb:20:2758:20:2768 | else ... | -| UseUseExplosion.rb:20:2763:20:2768 | self | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2767:20:2767 | x | UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | -| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | +| UseUseExplosion.rb:20:2763:20:2768 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2767:20:2767 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2774:20:2784 | else ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | -| UseUseExplosion.rb:20:2779:20:2784 | [post] self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2779:20:2784 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2779:20:2784 | call to use | UseUseExplosion.rb:20:2774:20:2784 | else ... | -| UseUseExplosion.rb:20:2779:20:2784 | self | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2783:20:2783 | x | UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | -| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | +| UseUseExplosion.rb:20:2779:20:2784 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2783:20:2783 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2790:20:2800 | else ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | -| UseUseExplosion.rb:20:2795:20:2800 | [post] self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2795:20:2800 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2795:20:2800 | call to use | UseUseExplosion.rb:20:2790:20:2800 | else ... | -| UseUseExplosion.rb:20:2795:20:2800 | self | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2799:20:2799 | x | UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | -| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | +| UseUseExplosion.rb:20:2795:20:2800 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2799:20:2799 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2806:20:2816 | else ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | -| UseUseExplosion.rb:20:2811:20:2816 | [post] self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2811:20:2816 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2811:20:2816 | call to use | UseUseExplosion.rb:20:2806:20:2816 | else ... | -| UseUseExplosion.rb:20:2811:20:2816 | self | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2815:20:2815 | x | UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | -| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | +| UseUseExplosion.rb:20:2811:20:2816 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2815:20:2815 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2822:20:2832 | else ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | -| UseUseExplosion.rb:20:2827:20:2832 | [post] self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2827:20:2832 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2827:20:2832 | call to use | UseUseExplosion.rb:20:2822:20:2832 | else ... | -| UseUseExplosion.rb:20:2827:20:2832 | self | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2831:20:2831 | x | UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | -| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | +| UseUseExplosion.rb:20:2827:20:2832 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2831:20:2831 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2838:20:2848 | else ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | -| UseUseExplosion.rb:20:2843:20:2848 | [post] self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2843:20:2848 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2843:20:2848 | call to use | UseUseExplosion.rb:20:2838:20:2848 | else ... | -| UseUseExplosion.rb:20:2843:20:2848 | self | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2847:20:2847 | x | UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | -| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | +| UseUseExplosion.rb:20:2843:20:2848 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2847:20:2847 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2854:20:2864 | else ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | -| UseUseExplosion.rb:20:2859:20:2864 | [post] self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2859:20:2864 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2859:20:2864 | call to use | UseUseExplosion.rb:20:2854:20:2864 | else ... | -| UseUseExplosion.rb:20:2859:20:2864 | self | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2863:20:2863 | x | UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | -| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | +| UseUseExplosion.rb:20:2859:20:2864 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2863:20:2863 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2870:20:2880 | else ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | -| UseUseExplosion.rb:20:2875:20:2880 | [post] self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2875:20:2880 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2875:20:2880 | call to use | UseUseExplosion.rb:20:2870:20:2880 | else ... | -| UseUseExplosion.rb:20:2875:20:2880 | self | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2879:20:2879 | x | UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | -| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | +| UseUseExplosion.rb:20:2875:20:2880 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2879:20:2879 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2886:20:2896 | else ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | -| UseUseExplosion.rb:20:2891:20:2896 | [post] self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2891:20:2896 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2891:20:2896 | call to use | UseUseExplosion.rb:20:2886:20:2896 | else ... | -| UseUseExplosion.rb:20:2891:20:2896 | self | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2895:20:2895 | x | UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | -| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | +| UseUseExplosion.rb:20:2891:20:2896 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2895:20:2895 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2902:20:2912 | else ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | -| UseUseExplosion.rb:20:2907:20:2912 | [post] self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2907:20:2912 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2907:20:2912 | call to use | UseUseExplosion.rb:20:2902:20:2912 | else ... | -| UseUseExplosion.rb:20:2907:20:2912 | self | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2911:20:2911 | x | UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | -| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | +| UseUseExplosion.rb:20:2907:20:2912 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2911:20:2911 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2918:20:2928 | else ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | -| UseUseExplosion.rb:20:2923:20:2928 | [post] self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2923:20:2928 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2923:20:2928 | call to use | UseUseExplosion.rb:20:2918:20:2928 | else ... | -| UseUseExplosion.rb:20:2923:20:2928 | self | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2927:20:2927 | x | UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | -| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | +| UseUseExplosion.rb:20:2923:20:2928 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2927:20:2927 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2934:20:2944 | else ... | UseUseExplosion.rb:20:997:20:2948 | if ... | -| UseUseExplosion.rb:20:2939:20:2944 | [post] self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2939:20:2944 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2939:20:2944 | call to use | UseUseExplosion.rb:20:2934:20:2944 | else ... | -| UseUseExplosion.rb:20:2939:20:2944 | self | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2943:20:2943 | x | UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | -| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | +| UseUseExplosion.rb:20:2939:20:2944 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2943:20:2943 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2950:20:2960 | else ... | UseUseExplosion.rb:20:976:20:2964 | if ... | -| UseUseExplosion.rb:20:2955:20:2960 | [post] self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2955:20:2960 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2955:20:2960 | call to use | UseUseExplosion.rb:20:2950:20:2960 | else ... | -| UseUseExplosion.rb:20:2955:20:2960 | self | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2959:20:2959 | x | UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | -| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | +| UseUseExplosion.rb:20:2955:20:2960 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2959:20:2959 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2966:20:2976 | else ... | UseUseExplosion.rb:20:955:20:2980 | if ... | -| UseUseExplosion.rb:20:2971:20:2976 | [post] self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2971:20:2976 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2971:20:2976 | call to use | UseUseExplosion.rb:20:2966:20:2976 | else ... | -| UseUseExplosion.rb:20:2971:20:2976 | self | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2975:20:2975 | x | UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | -| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | +| UseUseExplosion.rb:20:2971:20:2976 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2975:20:2975 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2982:20:2992 | else ... | UseUseExplosion.rb:20:934:20:2996 | if ... | -| UseUseExplosion.rb:20:2987:20:2992 | [post] self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2987:20:2992 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:2987:20:2992 | call to use | UseUseExplosion.rb:20:2982:20:2992 | else ... | -| UseUseExplosion.rb:20:2987:20:2992 | self | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:2991:20:2991 | x | UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | -| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | +| UseUseExplosion.rb:20:2987:20:2992 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:2991:20:2991 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:2998:20:3008 | else ... | UseUseExplosion.rb:20:913:20:3012 | if ... | -| UseUseExplosion.rb:20:3003:20:3008 | [post] self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3003:20:3008 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3003:20:3008 | call to use | UseUseExplosion.rb:20:2998:20:3008 | else ... | -| UseUseExplosion.rb:20:3003:20:3008 | self | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3007:20:3007 | x | UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | -| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | +| UseUseExplosion.rb:20:3003:20:3008 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3007:20:3007 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3014:20:3024 | else ... | UseUseExplosion.rb:20:892:20:3028 | if ... | -| UseUseExplosion.rb:20:3019:20:3024 | [post] self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3019:20:3024 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3019:20:3024 | call to use | UseUseExplosion.rb:20:3014:20:3024 | else ... | -| UseUseExplosion.rb:20:3019:20:3024 | self | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3023:20:3023 | x | UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | -| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | +| UseUseExplosion.rb:20:3019:20:3024 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3023:20:3023 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3030:20:3040 | else ... | UseUseExplosion.rb:20:871:20:3044 | if ... | -| UseUseExplosion.rb:20:3035:20:3040 | [post] self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3035:20:3040 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3035:20:3040 | call to use | UseUseExplosion.rb:20:3030:20:3040 | else ... | -| UseUseExplosion.rb:20:3035:20:3040 | self | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3039:20:3039 | x | UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | -| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | +| UseUseExplosion.rb:20:3035:20:3040 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3039:20:3039 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3046:20:3056 | else ... | UseUseExplosion.rb:20:850:20:3060 | if ... | -| UseUseExplosion.rb:20:3051:20:3056 | [post] self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3051:20:3056 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3051:20:3056 | call to use | UseUseExplosion.rb:20:3046:20:3056 | else ... | -| UseUseExplosion.rb:20:3051:20:3056 | self | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3055:20:3055 | x | UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | -| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | +| UseUseExplosion.rb:20:3051:20:3056 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3055:20:3055 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3062:20:3072 | else ... | UseUseExplosion.rb:20:829:20:3076 | if ... | -| UseUseExplosion.rb:20:3067:20:3072 | [post] self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3067:20:3072 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3067:20:3072 | call to use | UseUseExplosion.rb:20:3062:20:3072 | else ... | -| UseUseExplosion.rb:20:3067:20:3072 | self | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3071:20:3071 | x | UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | -| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | +| UseUseExplosion.rb:20:3067:20:3072 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3071:20:3071 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3078:20:3088 | else ... | UseUseExplosion.rb:20:808:20:3092 | if ... | -| UseUseExplosion.rb:20:3083:20:3088 | [post] self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3083:20:3088 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3083:20:3088 | call to use | UseUseExplosion.rb:20:3078:20:3088 | else ... | -| UseUseExplosion.rb:20:3083:20:3088 | self | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3087:20:3087 | x | UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | -| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | +| UseUseExplosion.rb:20:3083:20:3088 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3087:20:3087 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3094:20:3104 | else ... | UseUseExplosion.rb:20:787:20:3108 | if ... | -| UseUseExplosion.rb:20:3099:20:3104 | [post] self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3099:20:3104 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3099:20:3104 | call to use | UseUseExplosion.rb:20:3094:20:3104 | else ... | -| UseUseExplosion.rb:20:3099:20:3104 | self | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3103:20:3103 | x | UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | -| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | +| UseUseExplosion.rb:20:3099:20:3104 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3103:20:3103 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3110:20:3120 | else ... | UseUseExplosion.rb:20:766:20:3124 | if ... | -| UseUseExplosion.rb:20:3115:20:3120 | [post] self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3115:20:3120 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3115:20:3120 | call to use | UseUseExplosion.rb:20:3110:20:3120 | else ... | -| UseUseExplosion.rb:20:3115:20:3120 | self | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3119:20:3119 | x | UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | -| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | +| UseUseExplosion.rb:20:3115:20:3120 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3119:20:3119 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3126:20:3136 | else ... | UseUseExplosion.rb:20:745:20:3140 | if ... | -| UseUseExplosion.rb:20:3131:20:3136 | [post] self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3131:20:3136 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3131:20:3136 | call to use | UseUseExplosion.rb:20:3126:20:3136 | else ... | -| UseUseExplosion.rb:20:3131:20:3136 | self | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3135:20:3135 | x | UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | -| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | +| UseUseExplosion.rb:20:3131:20:3136 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3135:20:3135 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3142:20:3152 | else ... | UseUseExplosion.rb:20:724:20:3156 | if ... | -| UseUseExplosion.rb:20:3147:20:3152 | [post] self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3147:20:3152 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3147:20:3152 | call to use | UseUseExplosion.rb:20:3142:20:3152 | else ... | -| UseUseExplosion.rb:20:3147:20:3152 | self | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3151:20:3151 | x | UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | -| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | +| UseUseExplosion.rb:20:3147:20:3152 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3151:20:3151 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3158:20:3168 | else ... | UseUseExplosion.rb:20:703:20:3172 | if ... | -| UseUseExplosion.rb:20:3163:20:3168 | [post] self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3163:20:3168 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3163:20:3168 | call to use | UseUseExplosion.rb:20:3158:20:3168 | else ... | -| UseUseExplosion.rb:20:3163:20:3168 | self | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3167:20:3167 | x | UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | -| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | +| UseUseExplosion.rb:20:3163:20:3168 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3167:20:3167 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3174:20:3184 | else ... | UseUseExplosion.rb:20:682:20:3188 | if ... | -| UseUseExplosion.rb:20:3179:20:3184 | [post] self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3179:20:3184 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3179:20:3184 | call to use | UseUseExplosion.rb:20:3174:20:3184 | else ... | -| UseUseExplosion.rb:20:3179:20:3184 | self | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3183:20:3183 | x | UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | -| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | +| UseUseExplosion.rb:20:3179:20:3184 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3183:20:3183 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3190:20:3200 | else ... | UseUseExplosion.rb:20:661:20:3204 | if ... | -| UseUseExplosion.rb:20:3195:20:3200 | [post] self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3195:20:3200 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3195:20:3200 | call to use | UseUseExplosion.rb:20:3190:20:3200 | else ... | -| UseUseExplosion.rb:20:3195:20:3200 | self | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3199:20:3199 | x | UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | -| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | +| UseUseExplosion.rb:20:3195:20:3200 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3199:20:3199 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3206:20:3216 | else ... | UseUseExplosion.rb:20:640:20:3220 | if ... | -| UseUseExplosion.rb:20:3211:20:3216 | [post] self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3211:20:3216 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3211:20:3216 | call to use | UseUseExplosion.rb:20:3206:20:3216 | else ... | -| UseUseExplosion.rb:20:3211:20:3216 | self | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3215:20:3215 | x | UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | -| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | +| UseUseExplosion.rb:20:3211:20:3216 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3215:20:3215 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3222:20:3232 | else ... | UseUseExplosion.rb:20:619:20:3236 | if ... | -| UseUseExplosion.rb:20:3227:20:3232 | [post] self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3227:20:3232 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3227:20:3232 | call to use | UseUseExplosion.rb:20:3222:20:3232 | else ... | -| UseUseExplosion.rb:20:3227:20:3232 | self | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3231:20:3231 | x | UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | -| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | +| UseUseExplosion.rb:20:3227:20:3232 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3231:20:3231 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3238:20:3248 | else ... | UseUseExplosion.rb:20:598:20:3252 | if ... | -| UseUseExplosion.rb:20:3243:20:3248 | [post] self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3243:20:3248 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3243:20:3248 | call to use | UseUseExplosion.rb:20:3238:20:3248 | else ... | -| UseUseExplosion.rb:20:3243:20:3248 | self | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3247:20:3247 | x | UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | -| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | +| UseUseExplosion.rb:20:3243:20:3248 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3247:20:3247 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3254:20:3264 | else ... | UseUseExplosion.rb:20:577:20:3268 | if ... | -| UseUseExplosion.rb:20:3259:20:3264 | [post] self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3259:20:3264 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3259:20:3264 | call to use | UseUseExplosion.rb:20:3254:20:3264 | else ... | -| UseUseExplosion.rb:20:3259:20:3264 | self | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3263:20:3263 | x | UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | -| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | +| UseUseExplosion.rb:20:3259:20:3264 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3263:20:3263 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3270:20:3280 | else ... | UseUseExplosion.rb:20:556:20:3284 | if ... | -| UseUseExplosion.rb:20:3275:20:3280 | [post] self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3275:20:3280 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3275:20:3280 | call to use | UseUseExplosion.rb:20:3270:20:3280 | else ... | -| UseUseExplosion.rb:20:3275:20:3280 | self | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3279:20:3279 | x | UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | -| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | +| UseUseExplosion.rb:20:3275:20:3280 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3279:20:3279 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3286:20:3296 | else ... | UseUseExplosion.rb:20:535:20:3300 | if ... | -| UseUseExplosion.rb:20:3291:20:3296 | [post] self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3291:20:3296 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3291:20:3296 | call to use | UseUseExplosion.rb:20:3286:20:3296 | else ... | -| UseUseExplosion.rb:20:3291:20:3296 | self | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3295:20:3295 | x | UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | -| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | +| UseUseExplosion.rb:20:3291:20:3296 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3295:20:3295 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3302:20:3312 | else ... | UseUseExplosion.rb:20:514:20:3316 | if ... | -| UseUseExplosion.rb:20:3307:20:3312 | [post] self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3307:20:3312 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3307:20:3312 | call to use | UseUseExplosion.rb:20:3302:20:3312 | else ... | -| UseUseExplosion.rb:20:3307:20:3312 | self | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3311:20:3311 | x | UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | -| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | +| UseUseExplosion.rb:20:3307:20:3312 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3311:20:3311 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3318:20:3328 | else ... | UseUseExplosion.rb:20:493:20:3332 | if ... | -| UseUseExplosion.rb:20:3323:20:3328 | [post] self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3323:20:3328 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3323:20:3328 | call to use | UseUseExplosion.rb:20:3318:20:3328 | else ... | -| UseUseExplosion.rb:20:3323:20:3328 | self | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3327:20:3327 | x | UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | -| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | +| UseUseExplosion.rb:20:3323:20:3328 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3327:20:3327 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3334:20:3344 | else ... | UseUseExplosion.rb:20:472:20:3348 | if ... | -| UseUseExplosion.rb:20:3339:20:3344 | [post] self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3339:20:3344 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3339:20:3344 | call to use | UseUseExplosion.rb:20:3334:20:3344 | else ... | -| UseUseExplosion.rb:20:3339:20:3344 | self | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3343:20:3343 | x | UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | -| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | +| UseUseExplosion.rb:20:3339:20:3344 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3343:20:3343 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3350:20:3360 | else ... | UseUseExplosion.rb:20:451:20:3364 | if ... | -| UseUseExplosion.rb:20:3355:20:3360 | [post] self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3355:20:3360 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3355:20:3360 | call to use | UseUseExplosion.rb:20:3350:20:3360 | else ... | -| UseUseExplosion.rb:20:3355:20:3360 | self | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3359:20:3359 | x | UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | -| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | +| UseUseExplosion.rb:20:3355:20:3360 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3359:20:3359 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3366:20:3376 | else ... | UseUseExplosion.rb:20:430:20:3380 | if ... | -| UseUseExplosion.rb:20:3371:20:3376 | [post] self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3371:20:3376 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3371:20:3376 | call to use | UseUseExplosion.rb:20:3366:20:3376 | else ... | -| UseUseExplosion.rb:20:3371:20:3376 | self | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3375:20:3375 | x | UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | -| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | +| UseUseExplosion.rb:20:3371:20:3376 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3375:20:3375 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3382:20:3392 | else ... | UseUseExplosion.rb:20:409:20:3396 | if ... | -| UseUseExplosion.rb:20:3387:20:3392 | [post] self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3387:20:3392 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3387:20:3392 | call to use | UseUseExplosion.rb:20:3382:20:3392 | else ... | -| UseUseExplosion.rb:20:3387:20:3392 | self | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3391:20:3391 | x | UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | -| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | +| UseUseExplosion.rb:20:3387:20:3392 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3391:20:3391 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3398:20:3408 | else ... | UseUseExplosion.rb:20:388:20:3412 | if ... | -| UseUseExplosion.rb:20:3403:20:3408 | [post] self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3403:20:3408 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3403:20:3408 | call to use | UseUseExplosion.rb:20:3398:20:3408 | else ... | -| UseUseExplosion.rb:20:3403:20:3408 | self | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3407:20:3407 | x | UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | -| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | +| UseUseExplosion.rb:20:3403:20:3408 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3407:20:3407 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3414:20:3424 | else ... | UseUseExplosion.rb:20:367:20:3428 | if ... | -| UseUseExplosion.rb:20:3419:20:3424 | [post] self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3419:20:3424 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3419:20:3424 | call to use | UseUseExplosion.rb:20:3414:20:3424 | else ... | -| UseUseExplosion.rb:20:3419:20:3424 | self | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3423:20:3423 | x | UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | -| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | +| UseUseExplosion.rb:20:3419:20:3424 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3423:20:3423 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3430:20:3440 | else ... | UseUseExplosion.rb:20:346:20:3444 | if ... | -| UseUseExplosion.rb:20:3435:20:3440 | [post] self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3435:20:3440 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3435:20:3440 | call to use | UseUseExplosion.rb:20:3430:20:3440 | else ... | -| UseUseExplosion.rb:20:3435:20:3440 | self | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3439:20:3439 | x | UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | -| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | +| UseUseExplosion.rb:20:3435:20:3440 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3439:20:3439 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3446:20:3456 | else ... | UseUseExplosion.rb:20:325:20:3460 | if ... | -| UseUseExplosion.rb:20:3451:20:3456 | [post] self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3451:20:3456 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3451:20:3456 | call to use | UseUseExplosion.rb:20:3446:20:3456 | else ... | -| UseUseExplosion.rb:20:3451:20:3456 | self | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3455:20:3455 | x | UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | -| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | +| UseUseExplosion.rb:20:3451:20:3456 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3455:20:3455 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3462:20:3472 | else ... | UseUseExplosion.rb:20:304:20:3476 | if ... | -| UseUseExplosion.rb:20:3467:20:3472 | [post] self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3467:20:3472 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3467:20:3472 | call to use | UseUseExplosion.rb:20:3462:20:3472 | else ... | -| UseUseExplosion.rb:20:3467:20:3472 | self | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3471:20:3471 | x | UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | -| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | +| UseUseExplosion.rb:20:3467:20:3472 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3471:20:3471 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3478:20:3488 | else ... | UseUseExplosion.rb:20:283:20:3492 | if ... | -| UseUseExplosion.rb:20:3483:20:3488 | [post] self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3483:20:3488 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3483:20:3488 | call to use | UseUseExplosion.rb:20:3478:20:3488 | else ... | -| UseUseExplosion.rb:20:3483:20:3488 | self | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3487:20:3487 | x | UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | -| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | +| UseUseExplosion.rb:20:3483:20:3488 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3487:20:3487 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3494:20:3504 | else ... | UseUseExplosion.rb:20:262:20:3508 | if ... | -| UseUseExplosion.rb:20:3499:20:3504 | [post] self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3499:20:3504 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3499:20:3504 | call to use | UseUseExplosion.rb:20:3494:20:3504 | else ... | -| UseUseExplosion.rb:20:3499:20:3504 | self | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3503:20:3503 | x | UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | -| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | +| UseUseExplosion.rb:20:3499:20:3504 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3503:20:3503 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3510:20:3520 | else ... | UseUseExplosion.rb:20:241:20:3524 | if ... | -| UseUseExplosion.rb:20:3515:20:3520 | [post] self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3515:20:3520 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3515:20:3520 | call to use | UseUseExplosion.rb:20:3510:20:3520 | else ... | -| UseUseExplosion.rb:20:3515:20:3520 | self | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3519:20:3519 | x | UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | -| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | +| UseUseExplosion.rb:20:3515:20:3520 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3519:20:3519 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3526:20:3536 | else ... | UseUseExplosion.rb:20:220:20:3540 | if ... | -| UseUseExplosion.rb:20:3531:20:3536 | [post] self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3531:20:3536 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3531:20:3536 | call to use | UseUseExplosion.rb:20:3526:20:3536 | else ... | -| UseUseExplosion.rb:20:3531:20:3536 | self | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3535:20:3535 | x | UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | -| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | +| UseUseExplosion.rb:20:3531:20:3536 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3535:20:3535 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3542:20:3552 | else ... | UseUseExplosion.rb:20:199:20:3556 | if ... | -| UseUseExplosion.rb:20:3547:20:3552 | [post] self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3547:20:3552 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3547:20:3552 | call to use | UseUseExplosion.rb:20:3542:20:3552 | else ... | -| UseUseExplosion.rb:20:3547:20:3552 | self | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3551:20:3551 | x | UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | -| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | +| UseUseExplosion.rb:20:3547:20:3552 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3551:20:3551 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3558:20:3568 | else ... | UseUseExplosion.rb:20:178:20:3572 | if ... | -| UseUseExplosion.rb:20:3563:20:3568 | [post] self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3563:20:3568 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3563:20:3568 | call to use | UseUseExplosion.rb:20:3558:20:3568 | else ... | -| UseUseExplosion.rb:20:3563:20:3568 | self | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3567:20:3567 | x | UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | -| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | +| UseUseExplosion.rb:20:3563:20:3568 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3567:20:3567 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3574:20:3584 | else ... | UseUseExplosion.rb:20:157:20:3588 | if ... | -| UseUseExplosion.rb:20:3579:20:3584 | [post] self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3579:20:3584 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3579:20:3584 | call to use | UseUseExplosion.rb:20:3574:20:3584 | else ... | -| UseUseExplosion.rb:20:3579:20:3584 | self | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3583:20:3583 | x | UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | -| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | +| UseUseExplosion.rb:20:3579:20:3584 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3583:20:3583 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3590:20:3600 | else ... | UseUseExplosion.rb:20:136:20:3604 | if ... | -| UseUseExplosion.rb:20:3595:20:3600 | [post] self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3595:20:3600 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3595:20:3600 | call to use | UseUseExplosion.rb:20:3590:20:3600 | else ... | -| UseUseExplosion.rb:20:3595:20:3600 | self | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3599:20:3599 | x | UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | -| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | +| UseUseExplosion.rb:20:3595:20:3600 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3599:20:3599 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3606:20:3616 | else ... | UseUseExplosion.rb:20:115:20:3620 | if ... | -| UseUseExplosion.rb:20:3611:20:3616 | [post] self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3611:20:3616 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3611:20:3616 | call to use | UseUseExplosion.rb:20:3606:20:3616 | else ... | -| UseUseExplosion.rb:20:3611:20:3616 | self | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3615:20:3615 | x | UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | -| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | +| UseUseExplosion.rb:20:3611:20:3616 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3615:20:3615 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3622:20:3632 | else ... | UseUseExplosion.rb:20:94:20:3636 | if ... | -| UseUseExplosion.rb:20:3627:20:3632 | [post] self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3627:20:3632 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3627:20:3632 | call to use | UseUseExplosion.rb:20:3622:20:3632 | else ... | -| UseUseExplosion.rb:20:3627:20:3632 | self | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3631:20:3631 | x | UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | -| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | +| UseUseExplosion.rb:20:3627:20:3632 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3631:20:3631 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3638:20:3648 | else ... | UseUseExplosion.rb:20:73:20:3652 | if ... | -| UseUseExplosion.rb:20:3643:20:3648 | [post] self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3643:20:3648 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3643:20:3648 | call to use | UseUseExplosion.rb:20:3638:20:3648 | else ... | -| UseUseExplosion.rb:20:3643:20:3648 | self | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3647:20:3647 | x | UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | -| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | +| UseUseExplosion.rb:20:3643:20:3648 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3647:20:3647 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3654:20:3664 | else ... | UseUseExplosion.rb:20:52:20:3668 | if ... | -| UseUseExplosion.rb:20:3659:20:3664 | [post] self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3659:20:3664 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3659:20:3664 | call to use | UseUseExplosion.rb:20:3654:20:3664 | else ... | -| UseUseExplosion.rb:20:3659:20:3664 | self | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3663:20:3663 | x | UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | -| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | +| UseUseExplosion.rb:20:3659:20:3664 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3663:20:3663 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3670:20:3680 | else ... | UseUseExplosion.rb:20:31:20:3684 | if ... | -| UseUseExplosion.rb:20:3675:20:3680 | [post] self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3675:20:3680 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3675:20:3680 | call to use | UseUseExplosion.rb:20:3670:20:3680 | else ... | -| UseUseExplosion.rb:20:3675:20:3680 | self | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3679:20:3679 | x | UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | -| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | -| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | +| UseUseExplosion.rb:20:3675:20:3680 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3679:20:3679 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3686:20:3696 | else ... | UseUseExplosion.rb:20:9:20:3700 | if ... | -| UseUseExplosion.rb:20:3691:20:3696 | [post] self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:3691:20:3696 | [post] self | UseUseExplosion.rb:21:13:21:17 | self | | UseUseExplosion.rb:20:3691:20:3696 | call to use | UseUseExplosion.rb:20:3686:20:3696 | else ... | -| UseUseExplosion.rb:20:3691:20:3696 | self | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | -| UseUseExplosion.rb:20:3695:20:3695 | x | UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | +| UseUseExplosion.rb:20:3691:20:3696 | self | UseUseExplosion.rb:21:13:21:17 | self | +| UseUseExplosion.rb:20:3695:20:3695 | x | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:21:13:21:17 | @prop | UseUseExplosion.rb:21:13:21:23 | ... > ... | | UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:35:21:39 | self | | UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:3691:21:3696 | self | @@ -3592,15 +2995,14 @@ | local_dataflow.rb:10:5:13:3 | synthetic splat parameter | local_dataflow.rb:10:5:13:3 | __synth__0__1 | | local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... | | local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | -| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | | local_dataflow.rb:10:9:10:9 | [post] x | local_dataflow.rb:10:9:10:9 | [input] phi | | local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [false] ! ... | | local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [true] ! ... | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | ... = ... | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | x | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] phi | -| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] phi | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | defined? ... | +| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | phi | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x | | local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array | | local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array | @@ -3615,15 +3017,14 @@ | local_dataflow.rb:15:1:17:3 | synthetic splat parameter | local_dataflow.rb:15:1:17:3 | __synth__0__1 | | local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... | | local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | -| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | | local_dataflow.rb:15:5:15:5 | [post] x | local_dataflow.rb:15:5:15:5 | [input] phi | | local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [false] ! ... | | local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [true] ! ... | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | ... = ... | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | x | | local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] phi | -| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] phi | | local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | defined? ... | +| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | phi | | local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break | @@ -3635,15 +3036,14 @@ | local_dataflow.rb:19:1:21:3 | synthetic splat parameter | local_dataflow.rb:19:1:21:3 | __synth__0__1 | | local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... | | local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | -| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | | local_dataflow.rb:19:5:19:5 | [post] x | local_dataflow.rb:19:5:19:5 | [input] phi | | local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [false] ! ... | | local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [true] ! ... | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | ... = ... | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | x | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] phi | -| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] phi | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | defined? ... | +| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | phi | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x | | local_dataflow.rb:20:6:20:6 | x | local_dataflow.rb:20:6:20:10 | ... > ... | | local_dataflow.rb:20:10:20:10 | 1 | local_dataflow.rb:20:6:20:10 | ... > ... | @@ -3687,27 +3087,23 @@ | local_dataflow.rb:60:1:90:3 | synthetic splat parameter | local_dataflow.rb:60:15:60:15 | x | | local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:60:15:60:15 | x | | local_dataflow.rb:60:15:60:15 | x | local_dataflow.rb:61:12:61:12 | x | -| local_dataflow.rb:61:7:68:5 | SSA phi read(x) | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:61:7:68:5 | case ... | local_dataflow.rb:61:3:68:5 | ... = ... | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:63:15:63:15 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:65:6:65:6 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:67:5:67:5 | x | -| local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | +| local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:62:10:62:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:62:15:62:15 | 3 | local_dataflow.rb:62:10:62:15 | then ... | -| local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:63:10:63:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | -| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | | local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | then ... | -| local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | +| local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:64:9:65:6 | then ... | local_dataflow.rb:61:7:68:5 | case ... | -| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | | local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | then ... | -| local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | +| local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:66:3:67:5 | else ... | local_dataflow.rb:61:7:68:5 | case ... | -| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | | local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | else ... | +| local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:69:12:69:12 | x | | local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... | | local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:71:13:71:13 | x | | local_dataflow.rb:69:12:69:12 | x | local_dataflow.rb:73:7:73:7 | x | @@ -3721,7 +3117,6 @@ | local_dataflow.rb:74:3:75:6 | else ... | local_dataflow.rb:69:7:76:5 | case ... | | local_dataflow.rb:75:6:75:6 | x | local_dataflow.rb:74:3:75:6 | else ... | | local_dataflow.rb:78:3:78:3 | z | local_dataflow.rb:89:8:89:8 | z | -| local_dataflow.rb:78:7:88:5 | SSA phi read(self) | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:78:7:88:5 | case ... | local_dataflow.rb:78:3:78:3 | z | | local_dataflow.rb:78:7:88:5 | case ... | local_dataflow.rb:78:3:88:5 | ... = ... | | local_dataflow.rb:78:12:78:20 | [post] self | local_dataflow.rb:79:20:79:26 | self | @@ -3745,25 +3140,22 @@ | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:86:28:86:34 | self | | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:87:20:87:26 | self | | local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b | -| local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:79:15:79:45 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:79:20:79:26 | [post] self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | +| local_dataflow.rb:79:20:79:26 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:79:20:79:26 | call to sink | local_dataflow.rb:79:15:79:45 | then ... | -| local_dataflow.rb:79:20:79:26 | self | local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | +| local_dataflow.rb:79:20:79:26 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:13:80:13 | a | | local_dataflow.rb:80:13:80:13 | [post] a | local_dataflow.rb:80:29:80:29 | a | | local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:13:80:17 | ... > ... | | local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:29:80:29 | a | | local_dataflow.rb:80:17:80:17 | 0 | local_dataflow.rb:80:13:80:17 | ... > ... | -| local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:80:19:80:49 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:80:24:80:30 | [post] self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | +| local_dataflow.rb:80:24:80:30 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:80:24:80:30 | call to sink | local_dataflow.rb:80:19:80:49 | then ... | -| local_dataflow.rb:80:24:80:30 | self | local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | +| local_dataflow.rb:80:24:80:30 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c | | local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d | | local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e | -| local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:81:20:84:33 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:81:25:84:14 | Array | local_dataflow.rb:81:25:84:14 | call to [] | | local_dataflow.rb:81:25:84:14 | call to [] | local_dataflow.rb:81:20:84:33 | then ... | @@ -3772,32 +3164,29 @@ | local_dataflow.rb:82:7:82:13 | self | local_dataflow.rb:83:7:83:13 | self | | local_dataflow.rb:83:7:83:13 | [post] self | local_dataflow.rb:84:7:84:13 | self | | local_dataflow.rb:83:7:83:13 | self | local_dataflow.rb:84:7:84:13 | self | -| local_dataflow.rb:84:7:84:13 | [post] self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | -| local_dataflow.rb:84:7:84:13 | self | local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | +| local_dataflow.rb:84:7:84:13 | [post] self | local_dataflow.rb:89:3:89:9 | self | +| local_dataflow.rb:84:7:84:13 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f | -| local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:85:17:85:47 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:85:22:85:28 | [post] self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | +| local_dataflow.rb:85:22:85:28 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:85:22:85:28 | call to sink | local_dataflow.rb:85:17:85:47 | then ... | -| local_dataflow.rb:85:22:85:28 | self | local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | +| local_dataflow.rb:85:22:85:28 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g | -| local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:86:23:86:53 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:86:28:86:34 | [post] self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | +| local_dataflow.rb:86:28:86:34 | [post] self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:86:28:86:34 | call to sink | local_dataflow.rb:86:23:86:53 | then ... | -| local_dataflow.rb:86:28:86:34 | self | local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | +| local_dataflow.rb:86:28:86:34 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x | -| local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:87:15:87:48 | then ... | local_dataflow.rb:78:7:88:5 | case ... | -| local_dataflow.rb:87:20:87:26 | [post] self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | -| local_dataflow.rb:87:20:87:26 | self | local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | +| local_dataflow.rb:87:20:87:26 | [post] self | local_dataflow.rb:89:3:89:9 | self | +| local_dataflow.rb:87:20:87:26 | self | local_dataflow.rb:89:3:89:9 | self | | local_dataflow.rb:87:25:87:25 | [post] x | local_dataflow.rb:87:29:87:29 | x | | local_dataflow.rb:87:25:87:25 | x | local_dataflow.rb:87:29:87:29 | x | | local_dataflow.rb:87:29:87:29 | x | local_dataflow.rb:87:15:87:48 | then ... | | local_dataflow.rb:92:1:109:3 | self (and_or) | local_dataflow.rb:93:7:93:15 | self | | local_dataflow.rb:92:1:109:3 | self in and_or | local_dataflow.rb:92:1:109:3 | self (and_or) | | local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a | -| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | +| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self | | local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | | local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | @@ -3805,59 +3194,51 @@ | local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:3 | a | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:28 | ... = ... | -| local_dataflow.rb:93:7:93:28 | SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self | -| local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | -| local_dataflow.rb:93:20:93:28 | [post] self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | +| local_dataflow.rb:93:20:93:28 | [post] self | local_dataflow.rb:94:3:94:9 | self | | local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | -| local_dataflow.rb:93:20:93:28 | self | local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | +| local_dataflow.rb:93:20:93:28 | self | local_dataflow.rb:94:3:94:9 | self | | local_dataflow.rb:94:3:94:9 | [post] self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:94:3:94:9 | self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:3 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:30 | ... = ... | -| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | +| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self | | local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | | local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | | local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | | local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:29 | ... or ... | local_dataflow.rb:95:7:95:30 | ( ... ) | -| local_dataflow.rb:95:8:95:29 | SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self | -| local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | -| local_dataflow.rb:95:21:95:29 | [post] self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | +| local_dataflow.rb:95:21:95:29 | [post] self | local_dataflow.rb:96:3:96:9 | self | | local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | -| local_dataflow.rb:95:21:95:29 | self | local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | +| local_dataflow.rb:95:21:95:29 | self | local_dataflow.rb:96:3:96:9 | self | | local_dataflow.rb:96:3:96:9 | [post] self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:96:3:96:9 | self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a | -| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | +| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self | | local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | | local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | | local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:3 | a | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:28 | ... = ... | -| local_dataflow.rb:98:7:98:28 | SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self | -| local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | -| local_dataflow.rb:98:20:98:28 | [post] self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | +| local_dataflow.rb:98:20:98:28 | [post] self | local_dataflow.rb:99:3:99:9 | self | | local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:7:98:28 | ... && ... | -| local_dataflow.rb:98:20:98:28 | self | local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | +| local_dataflow.rb:98:20:98:28 | self | local_dataflow.rb:99:3:99:9 | self | | local_dataflow.rb:99:3:99:9 | [post] self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:99:3:99:9 | self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:3 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:31 | ... = ... | -| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | +| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self | | local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | | local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | | local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:30 | ... and ... | local_dataflow.rb:100:7:100:31 | ( ... ) | -| local_dataflow.rb:100:8:100:30 | SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self | -| local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | -| local_dataflow.rb:100:22:100:30 | [post] self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | +| local_dataflow.rb:100:22:100:30 | [post] self | local_dataflow.rb:101:3:101:9 | self | | local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:8:100:30 | ... and ... | -| local_dataflow.rb:100:22:100:30 | self | local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | +| local_dataflow.rb:100:22:100:30 | self | local_dataflow.rb:101:3:101:9 | self | | local_dataflow.rb:101:3:101:9 | [post] self | local_dataflow.rb:103:7:103:15 | self | | local_dataflow.rb:101:3:101:9 | self | local_dataflow.rb:103:7:103:15 | self | | local_dataflow.rb:103:3:103:3 | a | local_dataflow.rb:104:3:104:3 | a | @@ -3867,16 +3248,14 @@ | local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:15 | ... = ... | | local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | | local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:9:104:17 | self | -| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | +| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:104:5:104:7 | ... \|\| ... | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:105:8:105:8 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:3 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:17 | ... = ... | -| local_dataflow.rb:104:5:104:7 | SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self | -| local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | -| local_dataflow.rb:104:9:104:17 | [post] self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | +| local_dataflow.rb:104:9:104:17 | [post] self | local_dataflow.rb:105:3:105:9 | self | | local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:5:104:7 | ... \|\| ... | -| local_dataflow.rb:104:9:104:17 | self | local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | +| local_dataflow.rb:104:9:104:17 | self | local_dataflow.rb:105:3:105:9 | self | | local_dataflow.rb:105:3:105:9 | [post] self | local_dataflow.rb:106:7:106:15 | self | | local_dataflow.rb:105:3:105:9 | self | local_dataflow.rb:106:7:106:15 | self | | local_dataflow.rb:106:3:106:3 | b | local_dataflow.rb:107:3:107:3 | b | @@ -3886,15 +3265,13 @@ | local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:15 | ... = ... | | local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | | local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:9:107:17 | self | -| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | +| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self | | local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:3 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:17 | ... = ... | -| local_dataflow.rb:107:5:107:7 | SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self | -| local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | -| local_dataflow.rb:107:9:107:17 | [post] self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | +| local_dataflow.rb:107:9:107:17 | [post] self | local_dataflow.rb:108:3:108:9 | self | | local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:5:107:7 | ... && ... | -| local_dataflow.rb:107:9:107:17 | self | local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | +| local_dataflow.rb:107:9:107:17 | self | local_dataflow.rb:108:3:108:9 | self | | local_dataflow.rb:111:1:114:3 | self (object_dup) | local_dataflow.rb:112:3:112:21 | self | | local_dataflow.rb:111:1:114:3 | self in object_dup | local_dataflow.rb:111:1:114:3 | self (object_dup) | | local_dataflow.rb:112:3:112:21 | [post] self | local_dataflow.rb:112:8:112:16 | self | @@ -3946,24 +3323,20 @@ | local_dataflow.rb:132:10:132:10 | [post] x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:10:132:10 | x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:12:148:10 | then ... | local_dataflow.rb:132:3:149:5 | if ... | -| local_dataflow.rb:133:5:139:7 | SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | -| local_dataflow.rb:133:5:139:7 | SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | -| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | -| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | | local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:18:133:23 | self | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | | local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | | local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:18:133:23 | self | -| local_dataflow.rb:133:8:133:23 | SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | -| local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | | local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x | -| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | -| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | @@ -3974,43 +3347,35 @@ | local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x | -| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | -| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | | local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... | -| local_dataflow.rb:134:7:134:12 | [post] self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | +| local_dataflow.rb:134:7:134:12 | [post] self | local_dataflow.rb:141:9:141:14 | self | | local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... | -| local_dataflow.rb:134:7:134:12 | self | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | -| local_dataflow.rb:134:11:134:11 | [post] x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | -| local_dataflow.rb:134:11:134:11 | x | local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | -| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | -| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | +| local_dataflow.rb:134:7:134:12 | self | local_dataflow.rb:141:9:141:14 | self | +| local_dataflow.rb:134:11:134:11 | [post] x | local_dataflow.rb:141:13:141:13 | x | +| local_dataflow.rb:134:11:134:11 | x | local_dataflow.rb:141:13:141:13 | x | | local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:136:7:136:12 | [post] self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:7:136:12 | self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:11:136:11 | [post] x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:136:11:136:11 | x | local_dataflow.rb:137:14:137:14 | x | -| local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | -| local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | | local_dataflow.rb:137:7:138:9 | if ... | local_dataflow.rb:135:5:138:9 | else ... | -| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | | local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:21:137:26 | self | | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self | -| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | -| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | | local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | | local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... | -| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | -| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... | | local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | | local_dataflow.rb:137:21:137:26 | [post] self | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | @@ -4022,15 +3387,11 @@ | local_dataflow.rb:137:25:137:25 | [post] x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | | local_dataflow.rb:137:25:137:25 | x | local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | -| local_dataflow.rb:141:5:145:7 | SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self | -| local_dataflow.rb:141:5:145:7 | SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | -| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:8:141:14 | [true] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | -| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | | local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:20:141:25 | self | | local_dataflow.rb:141:9:141:14 | call to use | local_dataflow.rb:141:8:141:14 | [false] ! ... | @@ -4042,17 +3403,15 @@ | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | -| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | -| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | -| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | | local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:31:141:36 | self | | local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | | local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:31:141:36 | self | -| local_dataflow.rb:141:20:141:36 | SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | -| local_dataflow.rb:141:20:141:36 | SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:20:141:36 | [false] ... && ... | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | | local_dataflow.rb:141:20:141:36 | [true] ... && ... | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | | local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | @@ -4060,8 +3419,8 @@ | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... | -| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | -| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... | | local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | | local_dataflow.rb:141:31:141:36 | [post] self | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | @@ -4073,33 +3432,27 @@ | local_dataflow.rb:141:35:141:35 | [post] x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | | local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | | local_dataflow.rb:141:35:141:35 | x | local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | -| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:141:38:142:9 | then ... | local_dataflow.rb:141:5:145:7 | if ... | | local_dataflow.rb:142:7:142:9 | nil | local_dataflow.rb:141:38:142:9 | then ... | -| local_dataflow.rb:143:5:144:16 | SSA phi read(self) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | -| local_dataflow.rb:143:5:144:16 | SSA phi read(x) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | -| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | | local_dataflow.rb:143:5:144:16 | elsif ... | local_dataflow.rb:141:5:145:7 | if ... | -| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | -| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | | local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | | local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self | -| local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | -| local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | -| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | -| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | | local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x | -| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | -| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | | local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | | local_dataflow.rb:143:21:143:26 | [post] self | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | @@ -4110,14 +3463,12 @@ | local_dataflow.rb:143:25:143:25 | [post] x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | | local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | | local_dataflow.rb:143:25:143:25 | x | local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | -| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | -| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | | local_dataflow.rb:143:27:144:16 | then ... | local_dataflow.rb:143:5:144:16 | elsif ... | -| local_dataflow.rb:144:11:144:16 | [post] self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | +| local_dataflow.rb:144:11:144:16 | [post] self | local_dataflow.rb:147:5:147:10 | self | | local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... | -| local_dataflow.rb:144:11:144:16 | self | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | -| local_dataflow.rb:144:15:144:15 | [post] x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | -| local_dataflow.rb:144:15:144:15 | x | local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | +| local_dataflow.rb:144:11:144:16 | self | local_dataflow.rb:147:5:147:10 | self | +| local_dataflow.rb:144:15:144:15 | [post] x | local_dataflow.rb:147:9:147:9 | x | +| local_dataflow.rb:144:15:144:15 | x | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self | | local_dataflow.rb:147:5:147:10 | self | local_dataflow.rb:148:5:148:10 | self | | local_dataflow.rb:147:9:147:9 | [post] x | local_dataflow.rb:148:9:148:9 | x | diff --git a/rust/ast-generator/.gitignore b/rust/ast-generator/.gitignore index 16daba3cfbd..ad69d72902d 100644 --- a/rust/ast-generator/.gitignore +++ b/rust/ast-generator/.gitignore @@ -2,3 +2,4 @@ /.idea /src/codegen/grammar.rs /src/codegen/grammar/ +/rust.ungram diff --git a/rust/ast-generator/BUILD.bazel b/rust/ast-generator/BUILD.bazel index b1b7af2ec5f..7d0105ac456 100644 --- a/rust/ast-generator/BUILD.bazel +++ b/rust/ast-generator/BUILD.bazel @@ -11,7 +11,7 @@ load("//misc/bazel/3rdparty/tree_sitter_extractors_deps:defs.bzl", "aliases", "a ra_ap_syntax_workspace, _, _ = str(ra_ap_syntax_label).partition("//") alias( - name = "ungram", + name = "rust.ungram", actual = "%s//:rust.ungram" % ra_ap_syntax_workspace, visibility = ["//rust/codegen:__pkg__"], ) @@ -45,9 +45,9 @@ codeql_rust_binary( exclude = ["src/codegen/**"], ) + [":codegen"], aliases = aliases(), - args = ["$(rlocationpath :ungram)"], + args = ["$(rlocationpath :rust.ungram)"], compile_data = glob(["src/templates/*.mustache"]), - data = [":ungram"], + data = [":rust.ungram"], proc_macro_deps = all_crate_deps( proc_macro = True, ), @@ -69,7 +69,10 @@ write_file( # using cat instead of cp to honor default umask # (also, macOS does not support `cp --no-preserve=mode`) 'cat "$(rlocation "$%s")" > "$DST_DIR/%s"' % item - for item in enumerate(_codegen_outs, 2) + for item in enumerate( + ["rust.ungram"] + _codegen_outs, + 2, + ) ], is_executable = True, ) @@ -77,8 +80,14 @@ write_file( sh_binary( name = "inject-sources", srcs = [":update"], - args = ["$(rlocationpath Cargo.toml)"] + ["$(rlocationpath %s)" % f for f in _codegen_outs], - data = ["Cargo.toml"] + _codegen_outs, + args = ["$(rlocationpath %s)" % f for f in [ + "Cargo.toml", + ":rust.ungram", + ] + _codegen_outs], + data = [ + "Cargo.toml", + ":rust.ungram", + ] + _codegen_outs, deps = ["//misc/bazel:sh_runfiles"], ) diff --git a/rust/ast-generator/Cargo.toml b/rust/ast-generator/Cargo.toml index 6e89b5d140c..23b2ab8cb15 100644 --- a/rust/ast-generator/Cargo.toml +++ b/rust/ast-generator/Cargo.toml @@ -7,11 +7,11 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] ungrammar = "1.16.1" -proc-macro2 = "1.0.93" -quote = "1.0.38" -either = "1.14.0" -stdx = {package = "ra_ap_stdx", version = "0.0.266"} +proc-macro2 = "1.0.94" +quote = "1.0.40" +either = "1.15.0" +stdx = {package = "ra_ap_stdx", version = "0.0.270"} itertools = "0.14.0" mustache = "0.9.0" -serde = { version = "1.0.218", features = ["derive"] } -anyhow = "1.0.96" +serde = { version = "1.0.219", features = ["derive"] } +anyhow = "1.0.97" diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index 85df0ad214b..4b5cd6506cd 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -464,8 +464,12 @@ struct ExtractorInfo { nodes: Vec, } -fn enum_to_extractor_info(node: &AstEnumSrc) -> ExtractorEnumInfo { - ExtractorEnumInfo { +fn enum_to_extractor_info(node: &AstEnumSrc) -> Option { + if node.name == "VariantDef" { + // currently defined but unused + return None; + } + Some(ExtractorEnumInfo { name: class_name(&node.name), snake_case_name: to_lower_snake_case(&node.name), ast_name: node.name.clone(), @@ -477,7 +481,7 @@ fn enum_to_extractor_info(node: &AstEnumSrc) -> ExtractorEnumInfo { snake_case_name: to_lower_snake_case(v), }) .collect(), - } + }) } fn field_info_to_extractor_info(node: &AstNodeSrc, field: &FieldInfo) -> ExtractorNodeFieldInfo { @@ -527,7 +531,11 @@ fn node_to_extractor_info(node: &AstNodeSrc) -> ExtractorNodeInfo { fn write_extractor(grammar: &AstSrc) -> mustache::Result { let extractor_info = ExtractorInfo { - enums: grammar.enums.iter().map(enum_to_extractor_info).collect(), + enums: grammar + .enums + .iter() + .filter_map(enum_to_extractor_info) + .collect(), nodes: grammar.nodes.iter().map(node_to_extractor_info).collect(), }; let template = mustache::compile_str(include_str!("templates/extractor.mustache"))?; diff --git a/rust/codegen/BUILD.bazel b/rust/codegen/BUILD.bazel index 5bc26aeb14f..e1b51ca3661 100644 --- a/rust/codegen/BUILD.bazel +++ b/rust/codegen/BUILD.bazel @@ -3,7 +3,7 @@ load("@rules_shell//shell:sh_binary.bzl", "sh_binary") _args = [ "//rust/ast-generator", - "//rust/ast-generator:ungram", + "//rust/ast-generator:rust.ungram", "//rust/ast-generator:Cargo.toml", "//misc/codegen", "//rust:codegen-conf", diff --git a/rust/extractor/Cargo.toml b/rust/extractor/Cargo.toml index 186ac2b20e5..d4f6a177074 100644 --- a/rust/extractor/Cargo.toml +++ b/rust/extractor/Cargo.toml @@ -6,26 +6,26 @@ license = "MIT" # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] -anyhow = "1.0.96" -clap = { version = "4.5.31", features = ["derive"] } +anyhow = "1.0.97" +clap = { version = "4.5.32", features = ["derive"] } figment = { version = "0.10.19", features = ["env", "yaml"] } num-traits = "0.2.19" -ra_ap_base_db = "0.0.266" -ra_ap_hir = "0.0.266" -ra_ap_hir_def = "0.0.266" -ra_ap_ide_db = "0.0.266" -ra_ap_hir_ty = "0.0.266" -ra_ap_hir_expand = "0.0.266" -ra_ap_load-cargo = "0.0.266" -ra_ap_paths = "0.0.266" -ra_ap_project_model = "0.0.266" -ra_ap_syntax = "0.0.266" -ra_ap_vfs = "0.0.266" -ra_ap_parser = "0.0.266" -ra_ap_span = "0.0.266" -ra_ap_cfg = "0.0.266" -ra_ap_intern = "0.0.266" -serde = "1.0.218" +ra_ap_base_db = "0.0.270" +ra_ap_hir = "0.0.270" +ra_ap_hir_def = "0.0.270" +ra_ap_ide_db = "0.0.270" +ra_ap_hir_ty = "0.0.270" +ra_ap_hir_expand = "0.0.270" +ra_ap_load-cargo = "0.0.270" +ra_ap_paths = "0.0.270" +ra_ap_project_model = "0.0.270" +ra_ap_syntax = "0.0.270" +ra_ap_vfs = "0.0.270" +ra_ap_parser = "0.0.270" +ra_ap_span = "0.0.270" +ra_ap_cfg = "0.0.270" +ra_ap_intern = "0.0.270" +serde = "1.0.219" serde_with = "3.12.0" triomphe = "0.1.14" argfile = "0.2.1" @@ -33,11 +33,11 @@ codeql-extractor = { path = "../../shared/tree-sitter-extractor" } rust-extractor-macros = { path = "macros" } itertools = "0.14.0" glob = "0.3.2" -chrono = { version = "0.4.39", features = ["serde"] } -serde_json = "1.0.139" +chrono = { version = "0.4.40", features = ["serde"] } +serde_json = "1.0.140" dunce = "1.0.5" toml = "0.8.20" tracing = "0.1.41" tracing-flame = "0.2.0" tracing-subscriber = "0.3.19" -chalk-ir = "0.99.0" +chalk-ir = "0.100.0" diff --git a/rust/extractor/macros/Cargo.toml b/rust/extractor/macros/Cargo.toml index 06c1a6c4308..c088e98ea76 100644 --- a/rust/extractor/macros/Cargo.toml +++ b/rust/extractor/macros/Cargo.toml @@ -9,5 +9,5 @@ proc-macro = true # When updating these dependencies, run `rust/update_cargo_deps.sh` [dependencies] -quote = "1.0.38" -syn = { version = "2.0.98", features = ["full"] } +quote = "1.0.40" +syn = { version = "2.0.100", features = ["full"] } diff --git a/rust/extractor/src/config.rs b/rust/extractor/src/config.rs index f6e3b877f35..e66d54807be 100644 --- a/rust/extractor/src/config.rs +++ b/rust/extractor/src/config.rs @@ -213,8 +213,7 @@ fn to_cfg_overrides(specs: &Vec) -> CfgOverrides { } let enabled_cfgs = enabled_cfgs.into_iter().collect(); let disabled_cfgs = disabled_cfgs.into_iter().collect(); - let global = CfgDiff::new(enabled_cfgs, disabled_cfgs) - .expect("There should be no duplicate cfgs by construction"); + let global = CfgDiff::new(enabled_cfgs, disabled_cfgs); CfgOverrides { global, ..Default::default() diff --git a/rust/extractor/src/crate_graph.rs b/rust/extractor/src/crate_graph.rs index c1d7e54c3c5..4b6288fb61e 100644 --- a/rust/extractor/src/crate_graph.rs +++ b/rust/extractor/src/crate_graph.rs @@ -7,9 +7,7 @@ use chalk_ir::Scalar; use chalk_ir::UintTy; use chalk_ir::{FloatTy, Safety}; use itertools::Itertools; -use ra_ap_base_db::CrateGraph; -use ra_ap_base_db::CrateId; -use ra_ap_base_db::SourceDatabase; +use ra_ap_base_db::{Crate, RootQueryDb}; use ra_ap_cfg::CfgAtom; use ra_ap_hir::{DefMap, ModuleDefId, db::HirDatabase}; use ra_ap_hir::{VariantId, Visibility, db::DefDatabase}; @@ -30,7 +28,7 @@ use std::{hash::Hash, vec}; use tracing::{debug, error}; pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootDatabase, vfs: &Vfs) { - let crate_graph = db.crate_graph(); + let crate_graph = db.all_crates(); // According to the documentation of `CrateGraph`: // Each crate is defined by the `FileId` of its root module, the set of enabled @@ -39,18 +37,17 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData // First compute a hash map with for each crate ID, the path to its root module and a hash of all // its `cfg` flags and dependencies hashes. Iterate in topological order to ensure hashes of dependencies // are present in the map. - let mut crate_id_map = HashMap::::new(); - for krate_id in crate_graph.crates_in_topological_order() { - let krate = &crate_graph[krate_id]; + let mut crate_id_map = HashMap::::new(); + for krate_id in crate_graph.as_ref().iter() { + let krate = krate_id.data(db); let root_module_file: &VfsPath = vfs.file_path(krate.root_file_id); if let Some(root_module_file) = root_module_file .as_path() .map(|p| std::fs::canonicalize(p).unwrap_or(p.into())) { let mut hasher = std::hash::DefaultHasher::new(); - krate - .cfg_options - .as_ref() + krate_id + .cfg_options(db) .into_iter() .sorted_by(cmp_flag) .for_each(|x| format!("{x}").hash(&mut hasher)); @@ -62,12 +59,12 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData .sorted() .for_each(|x| x.hash(&mut hasher)); let hash = hasher.finish(); - crate_id_map.insert(krate_id, (root_module_file, hash)); + crate_id_map.insert(*krate_id, (root_module_file, hash)); } } // Extract each crate - for krate_id in crate_graph.iter() { - if let Some((root_module_file, hash)) = crate_id_map.get(&krate_id) { + for krate_id in crate_graph.as_ref().iter() { + if let Some((root_module_file, hash)) = crate_id_map.get(krate_id) { let path = root_module_file.join(format!("{hash:0>16x}")); let mut trap = trap_provider.create("crates", path.as_path()); // If the trap file already exists, then skip extraction because we have already extracted @@ -76,11 +73,10 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData if trap.path.exists() { continue; } - let krate = &crate_graph[krate_id]; + let krate = krate_id.data(db); let root_module = emit_module( - &crate_graph, db, - db.crate_def_map(krate_id).as_ref(), + db.crate_def_map(*krate_id).as_ref(), "crate", DefMap::ROOT, &mut trap, @@ -99,17 +95,17 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData }) .collect(); + let krate_extra = krate_id.extra_data(db); let element = generated::Crate { id: trap::TrapId::Key(format!("{}:{hash}", root_module_file.display())), - name: krate + name: krate_extra .display_name .as_ref() .map(|x| x.canonical_name().to_string()), - version: krate.version.to_owned(), + version: krate_extra.version.to_owned(), module: Some(root_module), - cfg_options: krate - .cfg_options - .as_ref() + cfg_options: krate_id + .cfg_options(db) .into_iter() .map(|x| format!("{x}")) .collect(), @@ -131,7 +127,6 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData } fn emit_module( - crate_graph: &CrateGraph, db: &dyn HirDatabase, map: &DefMap, name: &str, @@ -140,9 +135,9 @@ fn emit_module( ) -> trap::Label { let module = &map.modules[module]; let mut items = Vec::new(); - items.extend(emit_module_children(crate_graph, db, map, module, trap)); - items.extend(emit_module_items(crate_graph, db, module, trap)); - items.extend(emit_module_impls(crate_graph, db, module, trap)); + items.extend(emit_module_children(db, map, module, trap)); + items.extend(emit_module_items(db, module, trap)); + items.extend(emit_module_impls(db, module, trap)); let name = trap.emit(generated::Name { id: trap::TrapId::Star, @@ -153,7 +148,7 @@ fn emit_module( attrs: vec![], items, }); - let visibility = emit_visibility(crate_graph, db, trap, module.visibility); + let visibility = emit_visibility(db, trap, module.visibility); trap.emit(generated::Module { id: trap::TrapId::Star, name: Some(name), @@ -164,7 +159,6 @@ fn emit_module( } fn emit_module_children( - crate_graph: &CrateGraph, db: &dyn HirDatabase, map: &DefMap, module: &ModuleData, @@ -174,12 +168,11 @@ fn emit_module_children( .children .iter() .sorted_by(|a, b| Ord::cmp(&a.0, &b.0)) - .map(|(name, child)| emit_module(crate_graph, db, map, name.as_str(), *child, trap).into()) + .map(|(name, child)| emit_module(db, map, name.as_str(), *child, trap).into()) .collect() } fn emit_module_items( - crate_graph: &CrateGraph, db: &dyn HirDatabase, module: &ModuleData, trap: &mut TrapFile, @@ -196,37 +189,16 @@ fn emit_module_items( { match value { ModuleDefId::FunctionId(function) => { - items.extend(emit_function( - crate_graph, - db, - name.as_str(), - trap, - function, - vis, - )); + items.extend(emit_function(db, name.as_str(), trap, function, vis)); } ModuleDefId::ConstId(konst) => { - items.extend(emit_const(crate_graph, db, name.as_str(), trap, konst, vis)); + items.extend(emit_const(db, name.as_str(), trap, konst, vis)); } ModuleDefId::StaticId(statik) => { - items.extend(emit_static( - crate_graph, - db, - name.as_str(), - trap, - statik, - vis, - )); + items.extend(emit_static(db, name.as_str(), trap, statik, vis)); } ModuleDefId::EnumVariantId(variant_id) => { - items.extend(emit_enum_variant( - crate_graph, - db, - name.as_str(), - trap, - variant_id, - vis, - )); + items.extend(emit_enum_variant(db, name.as_str(), trap, variant_id, vis)); } _ => (), } @@ -239,17 +211,10 @@ fn emit_module_items( { match type_id { ModuleDefId::AdtId(adt_id) => { - items.extend(emit_adt(crate_graph, db, name.as_str(), trap, adt_id, vis)); + items.extend(emit_adt(db, name.as_str(), trap, adt_id, vis)); } ModuleDefId::TraitId(trait_id) => { - items.extend(emit_trait( - crate_graph, - db, - name.as_str(), - trap, - trait_id, - vis, - )); + items.extend(emit_trait(db, name.as_str(), trap, trait_id, vis)); } _ => (), } @@ -259,7 +224,6 @@ fn emit_module_items( } fn emit_function( - crate_graph: &CrateGraph, db: &dyn HirDatabase, name: &str, trap: &mut TrapFile, @@ -268,20 +232,12 @@ fn emit_function( ) -> Vec> { let mut items = Vec::new(); if let Some(type_) = db.value_ty(function.into()) { - items.push(const_or_function( - crate_graph, - db, - name, - trap, - type_, - visibility, - )); + items.push(const_or_function(db, name, trap, type_, visibility)); } items } fn emit_const( - crate_graph: &CrateGraph, db: &dyn HirDatabase, name: &str, trap: &mut TrapFile, @@ -290,14 +246,13 @@ fn emit_const( ) -> Vec> { let mut items = Vec::new(); let type_ = db.value_ty(konst.into()); - let type_repr = - type_.and_then(|type_| emit_hir_ty(trap, crate_graph, db, type_.skip_binders())); + let type_repr = type_.and_then(|type_| emit_hir_ty(trap, db, type_.skip_binders())); let name = Some(trap.emit(generated::Name { id: trap::TrapId::Star, text: Some(name.to_owned()), })); let konst = db.const_data(konst); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let visibility = emit_visibility(db, trap, visibility); items.push( trap.emit(generated::Const { id: trap::TrapId::Star, @@ -315,7 +270,6 @@ fn emit_const( } fn emit_static( - crate_graph: &CrateGraph, db: &dyn HirDatabase, name: &str, trap: &mut TrapFile, @@ -324,14 +278,13 @@ fn emit_static( ) -> Vec> { let mut items = Vec::new(); let type_ = db.value_ty(statik.into()); - let type_repr = - type_.and_then(|type_| emit_hir_ty(trap, crate_graph, db, type_.skip_binders())); + let type_repr = type_.and_then(|type_| emit_hir_ty(trap, db, type_.skip_binders())); let name = Some(trap.emit(generated::Name { id: trap::TrapId::Star, text: Some(name.to_owned()), })); let statik = db.static_data(statik); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let visibility = emit_visibility(db, trap, visibility); items.push( trap.emit(generated::Static { id: trap::TrapId::Star, @@ -350,7 +303,6 @@ fn emit_static( } fn emit_enum_variant( - crate_graph: &CrateGraph, db: &dyn HirDatabase, name: &str, trap: &mut TrapFile, @@ -359,20 +311,12 @@ fn emit_enum_variant( ) -> Vec> { let mut items = Vec::new(); if let Some(type_) = db.value_ty(variant_id.into()) { - items.push(const_or_function( - crate_graph, - db, - name, - trap, - type_, - visibility, - )); + items.push(const_or_function(db, name, trap, type_, visibility)); } items } fn emit_adt( - crate_graph: &CrateGraph, db: &dyn HirDatabase, name: &str, trap: &mut TrapFile, @@ -386,8 +330,8 @@ fn emit_adt( id: trap::TrapId::Star, text: Some(name.to_owned()), })); - let field_list = emit_variant_data(trap, crate_graph, db, struct_id.into()).into(); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let field_list = emit_variant_data(trap, db, struct_id.into()).into(); + let visibility = emit_visibility(db, trap, visibility); items.push( trap.emit(generated::Struct { id: trap::TrapId::Star, @@ -402,7 +346,7 @@ fn emit_adt( ); } ra_ap_hir_def::AdtId::EnumId(enum_id) => { - let data = db.enum_data(enum_id); + let data = db.enum_variants(enum_id); let variants = data .variants .iter() @@ -411,8 +355,7 @@ fn emit_adt( id: trap::TrapId::Star, text: Some(name.as_str().to_owned()), })); - let field_list = - emit_variant_data(trap, crate_graph, db, (*enum_id).into()).into(); + let field_list = emit_variant_data(trap, db, (*enum_id).into()).into(); let visibility = None; trap.emit(generated::Variant { id: trap::TrapId::Star, @@ -432,7 +375,7 @@ fn emit_adt( id: trap::TrapId::Star, text: Some(name.to_owned()), })); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let visibility = emit_visibility(db, trap, visibility); items.push( trap.emit(generated::Enum { id: trap::TrapId::Star, @@ -451,9 +394,8 @@ fn emit_adt( id: trap::TrapId::Star, text: Some(name.to_owned()), })); - let struct_field_list = - emit_variant_data(trap, crate_graph, db, union_id.into()).into(); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let struct_field_list = emit_variant_data(trap, db, union_id.into()).into(); + let visibility = emit_visibility(db, trap, visibility); items.push( trap.emit(generated::Union { id: trap::TrapId::Star, @@ -472,7 +414,6 @@ fn emit_adt( } fn emit_trait( - crate_graph: &CrateGraph, db: &dyn HirDatabase, name: &str, trap: &mut TrapFile, @@ -480,7 +421,7 @@ fn emit_trait( visibility: Visibility, ) -> Vec> { let mut items = Vec::new(); - let data = db.trait_data(trait_id); + let data = db.trait_items(trait_id); let assoc_items: Vec> = data .items .iter() @@ -492,7 +433,7 @@ fn emit_trait( .params() .iter() .map(|p| { - let type_repr = emit_hir_ty(trap, crate_graph, db, p); + let type_repr = emit_hir_ty(trap, db, p); trap.emit(generated::Param { id: trap::TrapId::Star, attrs: vec![], @@ -502,7 +443,7 @@ fn emit_trait( }) .collect(); - let ret_type = emit_hir_ty(trap, crate_graph, db, sig.ret()); + let ret_type = emit_hir_ty(trap, db, sig.ret()); let param_list = trap.emit(generated::ParamList { id: trap::TrapId::Star, params, @@ -518,7 +459,7 @@ fn emit_trait( id: trap::TrapId::Star, text: Some(name.as_str().to_owned()), })); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let visibility = emit_visibility(db, trap, visibility); Some( trap.emit(generated::Function { id: trap::TrapId::Star, @@ -553,7 +494,7 @@ fn emit_trait( id: trap::TrapId::Star, text: Some(name.to_owned()), })); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let visibility = emit_visibility(db, trap, visibility); items.push( trap.emit(generated::Trait { id: trap::TrapId::Star, @@ -573,7 +514,6 @@ fn emit_trait( } fn emit_module_impls( - crate_graph: &CrateGraph, db: &dyn HirDatabase, module: &ModuleData, trap: &mut TrapFile, @@ -581,12 +521,12 @@ fn emit_module_impls( let mut items = Vec::new(); module.scope.impls().for_each(|imp| { let self_ty = db.impl_self_ty(imp); - let self_ty = emit_hir_ty(trap, crate_graph, db, self_ty.skip_binders()); - let imp = db.impl_data(imp); - let trait_ = imp + let self_ty = emit_hir_ty(trap, db, self_ty.skip_binders()); + let imp_data = db.impl_data(imp); + let trait_ = imp_data .target_trait .as_ref() - .and_then(|t| make_qualified_path(trap, emit_hir_path(&imp.types_map[t.path]))); + .and_then(|t| make_qualified_path(trap, emit_hir_path(&imp_data.types_map[t.path]))); let trait_ = trait_.map(|trait_| { trap.emit(generated::PathTypeRepr { id: trap::TrapId::Star, @@ -594,7 +534,8 @@ fn emit_module_impls( }) .into() }); - let assoc_items = imp + let imp_items = db.impl_items(imp); + let assoc_items = imp_items .items .iter() .flat_map(|item| { @@ -605,7 +546,7 @@ fn emit_module_impls( .params() .iter() .map(|p| { - let type_repr = emit_hir_ty(trap, crate_graph, db, p); + let type_repr = emit_hir_ty(trap, db, p); trap.emit(generated::Param { id: trap::TrapId::Star, attrs: vec![], @@ -615,7 +556,7 @@ fn emit_module_impls( }) .collect(); - let ret_type = emit_hir_ty(trap, crate_graph, db, sig.ret()); + let ret_type = emit_hir_ty(trap, db, sig.ret()); let param_list = trap.emit(generated::ParamList { id: trap::TrapId::Star, params, @@ -633,7 +574,6 @@ fn emit_module_impls( })); let data = db.function_data(*function); let visibility = emit_visibility( - crate_graph, db, trap, data.visibility @@ -691,14 +631,13 @@ fn emit_module_impls( } fn emit_visibility( - crate_graph: &CrateGraph, db: &dyn HirDatabase, trap: &mut TrapFile, visibility: Visibility, ) -> Option> { let path = match visibility { Visibility::Module(module_id, VisibilityExplicitness::Explicit) => { - Some(make_path_mod(crate_graph, db.upcast(), module_id)) + Some(make_path_mod(db.upcast(), module_id)) } Visibility::Public => Some(vec![]), Visibility::Module(_, VisibilityExplicitness::Implicit) => None, @@ -712,7 +651,6 @@ fn emit_visibility( }) } fn const_or_function( - crate_graph: &CrateGraph, db: &dyn HirDatabase, name: &str, trap: &mut TrapFile, @@ -729,7 +667,7 @@ fn const_or_function( .params() .iter() .map(|p| { - let type_repr = emit_hir_ty(trap, crate_graph, db, p); + let type_repr = emit_hir_ty(trap, db, p); trap.emit(generated::Param { id: trap::TrapId::Star, attrs: vec![], @@ -739,7 +677,7 @@ fn const_or_function( }) .collect(); - let ret_type = emit_hir_ty(trap, crate_graph, db, sig.ret()); + let ret_type = emit_hir_ty(trap, db, sig.ret()); let param_list = trap.emit(generated::ParamList { id: trap::TrapId::Star, params, @@ -755,7 +693,7 @@ fn const_or_function( id: trap::TrapId::Star, text: Some(name.to_owned()), })); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let visibility = emit_visibility(db, trap, visibility); trap.emit(generated::Function { id: trap::TrapId::Star, name, @@ -776,12 +714,12 @@ fn const_or_function( .into() } _ => { - let type_repr = emit_hir_ty(trap, crate_graph, db, type_); + let type_repr = emit_hir_ty(trap, db, type_); let name = Some(trap.emit(generated::Name { id: trap::TrapId::Star, text: Some(name.to_owned()), })); - let visibility = emit_visibility(crate_graph, db, trap, visibility); + let visibility = emit_visibility(db, trap, visibility); trap.emit(generated::Const { id: trap::TrapId::Star, name, @@ -797,14 +735,13 @@ fn const_or_function( } } fn emit_hir_type_bound( - crate_graph: &CrateGraph, db: &dyn HirDatabase, trap: &mut TrapFile, type_bound: &Binders>, ) -> Option> { match type_bound.skip_binders() { WhereClause::Implemented(trait_ref) => { - let mut path = make_path(crate_graph, db, trait_ref.hir_trait_id()); + let mut path = make_path(db, trait_ref.hir_trait_id()); path.push( db.trait_data(trait_ref.hir_trait_id()) .name @@ -841,7 +778,7 @@ fn emit_hir_path(path: &ra_ap_hir_def::path::Path) -> Vec { fn emit_hir_fn_ptr( trap: &mut TrapFile, - crate_graph: &CrateGraph, + db: &dyn HirDatabase, function: &FnPointer, ) -> trap::Label { @@ -849,7 +786,7 @@ fn emit_hir_fn_ptr( let (ret_type, params) = parameters.split_last().unwrap(); - let ret_type = emit_hir_ty(trap, crate_graph, db, ret_type); + let ret_type = emit_hir_ty(trap, db, ret_type); let ret_type = Some(trap.emit(generated::RetTypeRepr { id: trap::TrapId::Star, type_repr: ret_type, @@ -857,7 +794,7 @@ fn emit_hir_fn_ptr( let params = params .iter() .map(|t| { - let type_repr = emit_hir_ty(trap, crate_graph, db, t); + let type_repr = emit_hir_ty(trap, db, t); trap.emit(generated::Param { id: trap::TrapId::Star, attrs: vec![], @@ -906,13 +843,13 @@ fn scalar_to_str(scalar: &Scalar) -> &'static str { } } -fn make_path(crate_graph: &CrateGraph, db: &dyn HirDatabase, item: impl HasModule) -> Vec { +fn make_path(db: &dyn HirDatabase, item: impl HasModule) -> Vec { let db = db.upcast(); let module = item.module(db); - make_path_mod(crate_graph, db, module) + make_path_mod(db, module) } -fn make_path_mod(crate_graph: &CrateGraph, db: &dyn DefDatabase, module: ModuleId) -> Vec { +fn make_path_mod(db: &dyn DefDatabase, module: ModuleId) -> Vec { let mut path = Vec::new(); let mut module = module; loop { @@ -920,7 +857,7 @@ fn make_path_mod(crate_graph: &CrateGraph, db: &dyn DefDatabase, module: ModuleI path.push("".to_owned()); } else if let Some(name) = module.name(db).map(|x| x.as_str().to_owned()).or_else(|| { module.as_crate_root().and_then(|k| { - let krate = &crate_graph[k.krate()]; + let krate = k.krate().extra_data(db); krate .display_name .as_ref() @@ -972,7 +909,7 @@ fn make_qualified_path( } fn emit_hir_ty( trap: &mut TrapFile, - crate_graph: &CrateGraph, + db: &dyn HirDatabase, ty: &Ty, ) -> Option> { @@ -994,7 +931,7 @@ fn emit_hir_ty( chalk_ir::TyKind::Tuple(_size, substitution) => { let fields = substitution.type_parameters(ra_ap_hir_ty::Interner); let fields = fields - .flat_map(|field| emit_hir_ty(trap, crate_graph, db, &field)) + .flat_map(|field| emit_hir_ty(trap, db, &field)) .collect(); Some( @@ -1006,7 +943,7 @@ fn emit_hir_ty( ) } chalk_ir::TyKind::Raw(mutability, ty) => { - let type_repr = emit_hir_ty(trap, crate_graph, db, ty); + let type_repr = emit_hir_ty(trap, db, ty); Some( trap.emit(generated::PtrTypeRepr { @@ -1019,7 +956,7 @@ fn emit_hir_ty( ) } chalk_ir::TyKind::Ref(mutability, _lifetime, ty) => { - let type_repr = emit_hir_ty(trap, crate_graph, db, ty); + let type_repr = emit_hir_ty(trap, db, ty); let lifetime = None; //TODO: ? Some( trap.emit(generated::RefTypeRepr { @@ -1032,7 +969,7 @@ fn emit_hir_ty( ) } chalk_ir::TyKind::Array(ty, _konst) => { - let element_type_repr = emit_hir_ty(trap, crate_graph, db, ty); + let element_type_repr = emit_hir_ty(trap, db, ty); // TODO: handle array size constant Some( trap.emit(generated::ArrayTypeRepr { @@ -1044,7 +981,7 @@ fn emit_hir_ty( ) } chalk_ir::TyKind::Slice(ty) => { - let type_repr = emit_hir_ty(trap, crate_graph, db, ty); + let type_repr = emit_hir_ty(trap, db, ty); Some( trap.emit(generated::SliceTypeRepr { id: trap::TrapId::Star, @@ -1055,7 +992,7 @@ fn emit_hir_ty( } chalk_ir::TyKind::Adt(adt_id, _substitution) => { - let mut path = make_path(crate_graph, db, adt_id.0); + let mut path = make_path(db, adt_id.0); let name = match adt_id.0 { ra_ap_hir_def::AdtId::StructId(struct_id) => { db.struct_data(struct_id).name.as_str().to_owned() @@ -1098,7 +1035,7 @@ fn emit_hir_ty( ) } chalk_ir::TyKind::Function(fn_pointer) => { - Some(emit_hir_fn_ptr(trap, crate_graph, db, fn_pointer).into()) + Some(emit_hir_fn_ptr(trap, db, fn_pointer).into()) } chalk_ir::TyKind::OpaqueType(_, _) | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Opaque(_)) => { @@ -1106,7 +1043,7 @@ fn emit_hir_ty( .impl_trait_bounds(db) .iter() .flatten() - .flat_map(|t| emit_hir_type_bound(crate_graph, db, trap, t)) + .flat_map(|t| emit_hir_type_bound(db, trap, t)) .collect(); let type_bound_list = Some(trap.emit(generated::TypeBoundList { id: trap::TrapId::Star, @@ -1125,7 +1062,7 @@ fn emit_hir_ty( .bounds .skip_binders() .iter(ra_ap_hir_ty::Interner) - .flat_map(|t| emit_hir_type_bound(crate_graph, db, trap, t)) + .flat_map(|t| emit_hir_type_bound(db, trap, t)) .collect(); let type_bound_list = Some(trap.emit(generated::TypeBoundList { id: trap::TrapId::Star, @@ -1141,7 +1078,7 @@ fn emit_hir_ty( } chalk_ir::TyKind::FnDef(fn_def_id, parameters) => { let sig = ra_ap_hir_ty::CallableSig::from_def(db, *fn_def_id, parameters); - Some(emit_hir_fn_ptr(trap, crate_graph, db, &sig.to_fn_ptr()).into()) + Some(emit_hir_fn_ptr(trap, db, &sig.to_fn_ptr()).into()) } chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Projection(ProjectionTy { @@ -1161,7 +1098,7 @@ fn emit_hir_ty( trait_id: assoc_ty_data.trait_id, substitution: assoc_ty_data.binders.identity_substitution(Interner), }; - let mut trait_path = make_path(crate_graph, db, trait_ref.hir_trait_id()); + let mut trait_path = make_path(db, trait_ref.hir_trait_id()); trait_path.push( db.trait_data(trait_ref.hir_trait_id()) .name @@ -1225,12 +1162,7 @@ impl From for Option> { } } -fn emit_variant_data( - trap: &mut TrapFile, - crate_graph: &CrateGraph, - db: &dyn HirDatabase, - variant_id: VariantId, -) -> Variant { +fn emit_variant_data(trap: &mut TrapFile, db: &dyn HirDatabase, variant_id: VariantId) -> Variant { let variant = variant_id.variant_data(db.upcast()); match variant.as_ref() { VariantData::Record { @@ -1245,9 +1177,8 @@ fn emit_variant_data( id: trap::TrapId::Star, text: Some(field_data[field_id].name.as_str().to_owned()), })); - let type_repr = emit_hir_ty(trap, crate_graph, db, ty.skip_binders()); + let type_repr = emit_hir_ty(trap, db, ty.skip_binders()); let visibility = emit_visibility( - crate_graph, db, trap, field_data[field_id] @@ -1276,9 +1207,8 @@ fn emit_variant_data( let fields = field_types .iter() .map(|(field_id, ty)| { - let type_repr = emit_hir_ty(trap, crate_graph, db, ty.skip_binders()); + let type_repr = emit_hir_ty(trap, db, ty.skip_binders()); let visibility = emit_visibility( - crate_graph, db, trap, field_data[field_id] diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index a28f641d89e..3c520983a6c 100644 --- a/rust/extractor/src/generated/.generated.list +++ b/rust/extractor/src/generated/.generated.list @@ -1,2 +1,2 @@ mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 -top.rs 4e8e5b1e16bb2f4b157b987c86c7b5cdb1d48a4586eafd08a92dcb989c94820e 4e8e5b1e16bb2f4b157b987c86c7b5cdb1d48a4586eafd08a92dcb989c94820e +top.rs 49e4f3abb137d6eed5a7c5202b3a31c9cafa1f565ee63dd5960e971950fafaa1 49e4f3abb137d6eed5a7c5202b3a31c9cafa1f565ee63dd5960e971950fafaa1 diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index c607dddfe3e..a49cae61ade 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -3275,6 +3275,42 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct VariantDef { + _unused: () +} + +impl trap::TrapClass for VariantDef { + fn class_name() -> &'static str { "VariantDef" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme VariantDef is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme VariantDef is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme VariantDef is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct VariantList { pub id: trap::TrapId, @@ -8588,9 +8624,9 @@ impl trap::TrapClass for Variant { fn class_name() -> &'static str { "Variant" } } -impl From> for trap::Label { +impl From> for trap::Label { fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme Variant is a subclass of Addressable + // SAFETY: this is safe because in the dbscheme Variant is a subclass of VariantDef unsafe { Self::from_untyped(value.as_untyped()) } @@ -8624,6 +8660,15 @@ impl From> for trap::Label { } } +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Variant is a subclass of Addressable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct WildcardPat { pub id: trap::TrapId, @@ -10540,6 +10585,15 @@ impl From> for trap::Label { } } +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Struct is a subclass of VariantDef + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct StructExpr { pub id: trap::TrapId, @@ -11209,6 +11263,15 @@ impl From> for trap::Label { } } +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme Union is a subclass of VariantDef + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct Use { pub id: trap::TrapId, diff --git a/rust/extractor/src/rust_analyzer.rs b/rust/extractor/src/rust_analyzer.rs index ee509c6fae7..1947dcbe09f 100644 --- a/rust/extractor/src/rust_analyzer.rs +++ b/rust/extractor/src/rust_analyzer.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use ra_ap_base_db::SourceDatabase; +use ra_ap_base_db::{EditionedFileId, RootQueryDb, SourceDatabase}; use ra_ap_hir::Semantics; use ra_ap_ide_db::RootDatabase; use ra_ap_load_cargo::{LoadCargoConfig, load_workspace_at}; @@ -7,7 +7,7 @@ use ra_ap_paths::{AbsPath, Utf8PathBuf}; use ra_ap_project_model::ProjectManifest; use ra_ap_project_model::{CargoConfig, ManifestPath}; use ra_ap_span::Edition; -use ra_ap_span::EditionedFileId; +use ra_ap_span::EditionedFileId as SpanEditionedFileId; use ra_ap_span::TextRange; use ra_ap_span::TextSize; use ra_ap_syntax::SourceFile; @@ -73,7 +73,10 @@ impl<'a> RustAnalyzer<'a> { if let Some(file_id) = path_to_file_id(path, vfs) { if let Ok(input) = std::panic::catch_unwind(|| semantics.db.file_text(file_id)) { - let file_id = EditionedFileId::current_edition(file_id); + let file_id = EditionedFileId::new( + semantics.db, + SpanEditionedFileId::current_edition(file_id), + ); let source_file = semantics.parse(file_id); let errors = semantics .db @@ -84,7 +87,7 @@ impl<'a> RustAnalyzer<'a> { return ParseResult { ast: source_file, - text: input, + text: input.text(semantics.db), errors, semantics_info: Ok(FileSemanticInformation { file_id, semantics }), }; diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index e0e3946da48..584d1d0be5c 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -4,8 +4,7 @@ use crate::rust_analyzer::FileSemanticInformation; use crate::trap::{DiagnosticSeverity, TrapFile, TrapId}; use crate::trap::{Label, TrapClass}; use itertools::Either; -use ra_ap_base_db::CrateOrigin; -use ra_ap_base_db::ra_salsa::InternKey; +use ra_ap_base_db::{CrateOrigin, EditionedFileId}; use ra_ap_hir::db::ExpandDatabase; use ra_ap_hir::{ Adt, Crate, ItemContainer, Module, ModuleDef, PathResolution, Semantics, Type, Variant, @@ -16,7 +15,7 @@ use ra_ap_hir_expand::ExpandTo; use ra_ap_ide_db::RootDatabase; use ra_ap_ide_db::line_index::{LineCol, LineIndex}; use ra_ap_parser::SyntaxKind; -use ra_ap_span::{EditionedFileId, TextSize}; +use ra_ap_span::TextSize; use ra_ap_syntax::ast::HasName; use ra_ap_syntax::{ AstNode, NodeOrToken, SyntaxElementChildren, SyntaxError, SyntaxNode, SyntaxToken, TextRange, @@ -148,7 +147,7 @@ impl<'a> Translator<'a> { if let Some(semantics) = self.semantics.as_ref() { let file_range = semantics.original_range(node.syntax()); let file_id = self.file_id?; - if file_id == file_range.file_id { + if file_id.file_id(semantics.db) == file_range.file_id { Some(file_range.range) } else { None @@ -399,9 +398,9 @@ impl<'a> Translator<'a> { } fn canonical_path_from_hir_module(&self, item: Module) -> Option { - if let Some(block_id) = ModuleId::from(item).containing_block() { - // this means this is a block module, i.e. a virtual module for a block scope - return Some(format!("{{{}}}", block_id.as_intern_id())); + if ModuleId::from(item).containing_block().is_some() { + // this means this is a block module, i.e. a virtual module for an anonymous block scope + return None; } if item.is_crate_root() { return Some("crate".into()); diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 691266a8a30..3b2527f6e9f 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -146,7 +146,7 @@ lib/codeql/rust/elements/SourceFile.qll 5916d550385d618bd3b3d4835fbd304048582222 lib/codeql/rust/elements/Static.qll 439550ae01b4975dc08867ecdc1f8a4da0127321af9511857a006e6bdf6400b0 e83252e8bc06045322bd2cbadd5a2c7deb82b8a11ddbc9809d3e199056f57bee lib/codeql/rust/elements/Stmt.qll 532b12973037301246daf7d8c0177f734202f43d9261c7a4ca6f5080eea8ca64 b838643c4f2b4623d2c816cddad0e68ca3e11f2879ab7beaece46f489ec4b1f3 lib/codeql/rust/elements/StmtList.qll 6f990782d5a5307d6d8a3256eb510aedfdaf7bd0e45f3dff35388842ab487b8c b412a27dea0c67307ab79104d45c5b4848c3191cc983e8b0d8dfa739a1b65d9c -lib/codeql/rust/elements/Struct.qll 96b7020c7670d5ea7effa6e390d3a163dba05ca5206cfdd1284f4a41e5664c6a 3fea0d13b8da0f210f3ad9004189efc3c56bcc90e67d6ef7817c6767f6aff273 +lib/codeql/rust/elements/Struct.qll a8e1184724f3862b2a532638214d4c87592ab475295e01c3dfa0f3ee1e4b0be7 10da81c04c0e4f42463f7d393e575769799fcb5b0211f59569ea89f252be96a7 lib/codeql/rust/elements/StructExpr.qll af9059c01a97755e94f1a8b60c66d9c7663ed0705b2845b086b8953f16019fab 2d33d86b035a15c1b31c3e07e0e74c4bbe57a71c5a55d60e720827814e73b7ba lib/codeql/rust/elements/StructExprField.qll 3eb9f17ecd1ad38679689eb4ecc169d3a0b5b7a3fc597ae5a957a7aea2f74e4f 8fcd26f266f203004899a60447ba16e7eae4e3a654fbec7f54e26857730ede93 lib/codeql/rust/elements/StructExprFieldList.qll 6f77363f93ce4e55d91cc93cef4451b93b9714a4aec91c5416d488191340a079 4da6b070125150f2d28028e29095df93e0bbdb5bc4bd4c672e060492f36367c4 @@ -174,13 +174,14 @@ lib/codeql/rust/elements/TypeRepr.qll ea41b05ef0aaac71da460f9a6a8331cf98166f2c38 lib/codeql/rust/elements/UnderscoreExpr.qll 233661b82b87c8cda16d8f2e17965658c3dc6b69efb23cb8eb9c4f50c68521e0 8edff8e80aac2ecf83a6b58f310cab688cbaeea0a0e68a298b644e565960cc74 lib/codeql/rust/elements/Unextracted.qll 12e60c79ef5b94d72b579b19970622e7b73822ebc13fbcfedfe953527ab1ac36 ec015db2eb12c3c82693ddc71d32d9ab9ef7a958e741e2510681bb707ceca23e lib/codeql/rust/elements/Unimplemented.qll bf624d28163e5c99accda16c0c99f938bec4a3b1b920a463e86fc8529ff5ff02 013bc7777298d250338f835cd494b5a8accea2d6a4f9561851f283ac129a446b -lib/codeql/rust/elements/Union.qll 92ffb1abc03889b9b71dae9491d4595e443c80b472474644f4e2d80215d4420a 8ad87a33f56583c3ebd19083d8e177da91dcc4dacd5e9140a48f01750c6b1cdb +lib/codeql/rust/elements/Union.qll e8e05763f7004c6a03d0bc4bcc153e12cc9150bb019d165b9ee84657a4c2dfe3 0db02f200220e0af54bf2ec21ccea1d8eba4f9225521d19ca8701786a807b552 lib/codeql/rust/elements/Use.qll e27d30ece0456a73732dfd867dfc5abdf48a50de56e7dafcab444b688610af72 7efe59c04dd2f10b4a25b8a17beb51362be0a93d73e5a9e1251cf133cf1227c3 lib/codeql/rust/elements/UseBoundGenericArg.qll f16903f8fff676d3700eaad5490804624391141472ecc3166ccb1f70c794c120 5efda98088d096b42f53ceccae78c05f15c6953525b514d849681cb2cf65b147 lib/codeql/rust/elements/UseBoundGenericArgs.qll 6d3b8bf8e59ef6d10d2f58c6d2eca61b113a524174f62d1f56b724c4179fda04 8fad6ed9e5bf159a2db01e7eb960cc55b940f7b92c4bb5c967120068e4fec80a lib/codeql/rust/elements/UseTree.qll 69d96e5985ecdedc421d3d5da16b738ccdbb28ea01ca4d510b98f2a3409b28e5 0188c2744e89e19aa077c802e89faa87d62ca306adb71be8c3b23617f69a5982 lib/codeql/rust/elements/UseTreeList.qll 768c4ec25e8807bba65619f566b22fa5c0946c36e96c88cfdee04c2875b44554 6433c8d9acd4e346cadd5fef01d79dd35bb6245115bdceb5322c0511106030b0 -lib/codeql/rust/elements/Variant.qll 328323ef59faf01dcf71e7d728fd10a60465a1bd24e1d3578289cdf6554e5b63 ba49c635790395d9df4398c3c0fec700c3c7761fcc6581623a45d381d23ac34d +lib/codeql/rust/elements/Variant.qll 8c8b419376d93f12a53d83cbdec04b0f9e3b0224774629c748fe32469589fa3e 438a12e8bf67d88df0e7740287f15431bc012362a6d6f370e088a3b60910ff0a +lib/codeql/rust/elements/VariantDef.qll fb14bf049aba1fc0b62d156e69b7965b6526d12c9150793f1d38b0f8fb8a0a8f 71453a80a3c60288242c5d86ab81ef4d027a3bc870ceffa62160864d32a7d7ad lib/codeql/rust/elements/VariantList.qll 07adfe5750b2d5b50c8629f36feba24edd84f75698a80339d4cee20f4e95829d 7d322e60c84ea45f8c8b509226da7ae3c0125bcda42a98a94e3e6a9855cab79e lib/codeql/rust/elements/Visibility.qll d2cf0727efaf8df6b3808cb4a6b2e26d18e42db766d92e97ad3ef046d91cb9e5 8947a1e2d48b532c6455ddf143fa5b1dff28c40da1f1c6a72769fc9db7ecbaf6 lib/codeql/rust/elements/WhereClause.qll da51212766700e40713fff968078a0172a4f73eebc5425d8e0d60b03c2fe59fa 0ec036aea729b8f4af0eb8118911dce715e2eb4640ae7b5e40a007a48da03899 @@ -445,6 +446,7 @@ lib/codeql/rust/elements/internal/UseTreeImpl.qll d478495a62e466fa4f443ffcf0d523 lib/codeql/rust/elements/internal/UseTreeListConstructor.qll 973577da5d7b58eb245f108bd1ae2fecc5645f2795421dedf7687b067a233003 f41e5e3ffcb2a387e5c37f56c0b271e8dc20428b6ff4c63e1ee42fcfa4e67d0a lib/codeql/rust/elements/internal/UseTreeListImpl.qll 6cac5242f1219df0fe9b3c139db8cc075a2fde618614ca56de2c856130a8ebaa d2ec917055a45f4d07d4ea6dff14298925ae323b165a5bcb6e906f7aad463f82 lib/codeql/rust/elements/internal/VariantConstructor.qll 0297d4a9a9b32448d6d6063d308c8d0e7a067d028b9ec97de10a1d659ee2cfdd 6a4bee28b340e97d06b262120fd39ab21717233a5bcc142ba542cb1b456eb952 +lib/codeql/rust/elements/internal/VariantDefImpl.qll 5530c04b8906d2947ec9c79fc17a05a2557b01a521dd4ca8a60518b78d13867b 3971558e1c907d8d2ef174b10f911e61b898916055a8173788e6f0b98869b144 lib/codeql/rust/elements/internal/VariantListConstructor.qll c841fb345eb46ea3978a0ed7a689f8955efc9178044b140b74d98a6bcd0c926a c9e52d112abdba2b60013fa01a944c8770766bf7368f9878e6b13daaa4eed446 lib/codeql/rust/elements/internal/VariantListImpl.qll 858f3668f53d8b6aacb2715a59509969fe9fd24c5a2ff0b5ceed8a2441cd9cf7 f2a57b6232247687f529be8e4d2d3d0d4d108221d8a6eb45a69a1bcc0cdc51de lib/codeql/rust/elements/internal/VisibilityConstructor.qll 1fd30663d87945f08d15cfaca54f586a658f26b7a98ea45ac73a35d36d4f65d0 6ddaf11742cc8fbbe03af2aa578394041ae077911e62d2fa6c885ae0543ba53a @@ -579,7 +581,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll c808c9d84dd7800573832b lib/codeql/rust/elements/internal/generated/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60 lib/codeql/rust/elements/internal/generated/ParenPat.qll 4f168ef5d5bb87a903251cc31b2e44a759b099ec69c90af31783fbb15778c940 0e34f94a45a13396fd57d94c245dc64d1adde2ab0e22b56946f7e94c04e297fc lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 40ab5c592e7699c621787793743e33988de71ff42ca27599f5ab3ddb70e3f7d8 12c0a6eed2202ee3e892f61da3b3ce77ac3190854cdf3097e8d2be98aa3cb91d -lib/codeql/rust/elements/internal/generated/ParentChild.qll 7ccb90039b06af54b13cbe4f7294c0201fbee4fd4b173396a5cad43f40f0e706 0d45f0be4cbcb54774281e163efc09b28d3135086dc01197d49eb7e314217eea +lib/codeql/rust/elements/internal/generated/ParentChild.qll d5cda732625e48dabe494d264d2b26df2d2e043ca0503052b551ee2cb1518ab7 9ff0d4634f7be4afada224f9eb3607041ea3461b389401a9f2998099037edffe lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll c5fa328ea60d3a3333d7c7bb3480969c1873166c7ac8ebb9d0afad7a8099d1a8 2dbbb6200d96f7db7dea4a55bdeab8d67b14d39a43e0bd54ada019f7e466f163 lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd @@ -594,7 +596,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 51d1e9e683fc79dddbff lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll 6eeb83e3a981a6c4dbc3d57cb770d8c5465d9df1b4394607ba16b4c393088529 c5f37dbccb98b7cde8830e86c2878feb586333ff97cd1afa0c71daee46ce7c7f +lib/codeql/rust/elements/internal/generated/Raw.qll 48bb632ea749504184ba9ed85f364806657a6de953eff9492d5c1c509c75b9b0 b5f8a05c79cbb36f95d830994946e58862583f3e16df80c947e8318aa8f17beb lib/codeql/rust/elements/internal/generated/RecordFieldList.qll 4a23b0d75a90671197246dbbb4e62706c180074abb8ebe60a96df11c47a917a2 09be127977651a24010b090d9681714d83ebd461098f9cf0e0d1973cafb1c782 lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 @@ -612,7 +614,7 @@ lib/codeql/rust/elements/internal/generated/SourceFile.qll 55d44c9f09c5ff28c4f71 lib/codeql/rust/elements/internal/generated/Static.qll 0b336767104d2b852b9acd234a6b15bd1bb21c2c081895127529325164892435 a2c69c8db65e4137b227980ea22a967ada0b32d0cd21f011e8ca8cdf7d3f1459 lib/codeql/rust/elements/internal/generated/Stmt.qll 8473ff532dd5cc9d7decaddcd174b94d610f6ca0aec8e473cc051dad9f3db917 6ef7d2b5237c2dbdcacbf7d8b39109d4dc100229f2b28b5c9e3e4fbf673ba72b lib/codeql/rust/elements/internal/generated/StmtList.qll a667193e32341e17400867c6e359878c4e645ef9f5f4d97676afc0283a33a026 a320ed678ee359302e2fc1b70a9476705cd616fcfa44a499d32f0c7715627f73 -lib/codeql/rust/elements/internal/generated/Struct.qll 4d57f0db12dc7ad3e31e750a24172ef1505406b4dab16386af0674bd18bf8f4b 1a73c83df926b996f629316f74c61ea775be04532ab61b56af904223354f033e +lib/codeql/rust/elements/internal/generated/Struct.qll b54a48c32d99345f22f189da87ff5a27f8b1e8ca78e740ba38d2b4766f280eaa c4bd85920ed3409c48eec9eed6e2e902f9694a3aa6e43222bbe5085f9663c22a lib/codeql/rust/elements/internal/generated/StructExpr.qll c6d861eaa0123b103fd9ffd2485423419ef9b7e0b4af9ed2a2090d8ec534f65d 50da99ee44771e1239ed8919f711991dd3ec98589fbe49b49b68c88074a07d74 lib/codeql/rust/elements/internal/generated/StructExprField.qll a6c1f744dbad034e6a3b173b8ff8037e2bfdea58316dedfe5508299afb770435 f7ed27ce27d14516e735a19a0509aa614d9c7637133efec8e6dc4145b5f3bee7 lib/codeql/rust/elements/internal/generated/StructExprFieldList.qll b19b6869a6828c7a39a7312539eb29fd21734ff47dfd02281de74194fd565d7e 3cadebffaa937e367a5e1da6741e4e9e5c9a9c7f7555e28cfa70639afd19db7c @@ -620,7 +622,7 @@ lib/codeql/rust/elements/internal/generated/StructField.qll d3eca4a20ae50c9396fd lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58 lib/codeql/rust/elements/internal/generated/StructPatField.qll 285530e9b73d51b3921984e344a9a944afc68c6d83fba7ee1d63345de455208f 17985cea91de1ed21e53e8c0fdb6382768cc57c5b79856dab3bc03cf1c323df9 lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll e34c003e660ba059ba81bb73b3c8d21bd2a47d0251569c46277dc9ccf2947b0a 85113f35ba5f6b9e01ad4072246a4de1ac0e4528348ac564868e96f34a3e09e2 -lib/codeql/rust/elements/internal/generated/Synth.qll 56643530ddd22deea0ee17ad47dc902d0accac41133e8f9263b7225853e0f0e2 b263a7d5f4815af6f7072a0b2d68f8fb358283a10e362d879d37c528379b6046 +lib/codeql/rust/elements/internal/generated/Synth.qll ae5702e53d576dccdffa398e2142a696361e70f2fca40c10a3c976f3e4ff1fff ab4d20c73b4668ea0e1103a8a54ba7f39030795df7b9ee010109f15d50999bd2 lib/codeql/rust/elements/internal/generated/SynthConstructors.qll e4298dc8e52d56672d91df093cc858105b5072be4ae5bed95105e0ffd80e7233 e4298dc8e52d56672d91df093cc858105b5072be4ae5bed95105e0ffd80e7233 lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b lib/codeql/rust/elements/internal/generated/TokenTree.qll 8577c2b097c1be2f0f7daa5acfcf146f78674a424d99563e08a84dd3e6d91b46 d2f30764e84dbfc0a6a5d3d8a5f935cd432413688cb32da9c94e420fbc10665c @@ -642,13 +644,14 @@ lib/codeql/rust/elements/internal/generated/TypeRepr.qll 1e7b9d2ddab86e35dad7c31 lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll b3780c99c5d57159bef4c6bd2fd8ec44ebd1854c892c1ca776c740f71249e58c 2fd451cbf0a779e8042e439882e7d9cadc19d1e596df3bbb086d16f2596407c7 lib/codeql/rust/elements/internal/generated/Unextracted.qll 01563dfd769d6dc3c6b8a40d9a4dc0d99a3b6a0c6725c180d2bf4d7633929a17 a93ce90f8c03f4305e59de9c63f089fc7935298fc9a73d091d76933cf63e790c lib/codeql/rust/elements/internal/generated/Unimplemented.qll a3eb304781991bff1227de1e4422b68bf91e7b344e4f6c9e874b324e82a35e60 6bc4839fda3850a56dc993b79ef9ba921008395c8432b184e14438fba4566f21 -lib/codeql/rust/elements/internal/generated/Union.qll 7f2a33166761d29299572681f1eb0b7efd647b3bd37b5a00c2d4661b06b1b04e 56da586702152f4507ae874f2e1cec9d963151a97bc279f2eed37fba921780a5 +lib/codeql/rust/elements/internal/generated/Union.qll d91aa6cd02bce27a28d1fba87fe80be3a33d1e560d3dd447c3035ff2738a0821 22343e17c08e53d237e834fb9fb9c97fbdebc95bfda4bab80a0c3274edebf7fd lib/codeql/rust/elements/internal/generated/Use.qll d42ccf3516a9f79ae8766f93ad5f09d3cdcd7b96844d4c9de64189b56018a7b4 70a9553a8f71f6cbfdd0f59a4b42292d13177613ceb0542436436e0ac2e1f8ee lib/codeql/rust/elements/internal/generated/UseBoundGenericArg.qll 69162794e871291545ea04f61259b2d000671a96f7ca129f7dd9ed6e984067c4 31de9ebc0634b38e2347e0608b4ea888892f1f2732a2892464078cd8a07b4ee8 lib/codeql/rust/elements/internal/generated/UseBoundGenericArgs.qll 05dca015d922935887856f3a0d577dbcf5b8f82bc384bdc9c8c2d0106419716d fcee14ed4f7a639b1ba721bd390fc0cdbfdc7c759e3092aa462d466fe390de45 lib/codeql/rust/elements/internal/generated/UseTree.qll 15b84e3a194959aef793cd0c16b3d2d21ee5822e2d26186b5d73f922325c2827 49c409a7b82c1099436fbe3bd041d35dcd23169d58d31fbd718f6deb96fb7318 lib/codeql/rust/elements/internal/generated/UseTreeList.qll 829441cf309f008a6a9d2e784aa414ab4c11880a658f8ee71aa4df385cd2b6a8 ced82df94fea7a191f414f7e6496d13791d2f535046844b6f712a390663ac3d0 -lib/codeql/rust/elements/internal/generated/Variant.qll e40dbb23e07c5b70adc577efdf7a064e773207f216cad8fe8905882b1da9f4a9 13f7be36d043afcfc156d2c01bb828de882df69aa732f284aa76c5f00b063544 +lib/codeql/rust/elements/internal/generated/Variant.qll b0be3cd76ac17655c683f384eafc9263e241068a85ca7e905675b2b7e9121b29 6f1b2ad719342bab0cb770d318e84c227de66e65838c33642aa5ac1a836883f8 +lib/codeql/rust/elements/internal/generated/VariantDef.qll 3a579b21a13bdd6be8cddaa43a6aa0028a27c4e513caa003a6304e160fc53846 1ca1c41ed27660b17fbfb44b67aa8db087ea655f01bac29b57bb19fa259d07a2 lib/codeql/rust/elements/internal/generated/VariantList.qll 4eb923ca341033c256ca9b8a8a5b4e14c7eac9d015be187fd97eeb25dfb1e18e e7865e975c35db49cd72cb8f9864797d3cfed16c3a675b5032b867ced2bbb405 lib/codeql/rust/elements/internal/generated/Visibility.qll aba81820f30bed0fd2cd06831f7256af15ae32525b2a437896420b4cc067ea38 d6aed90b27124b812daf2ddd14b4e181277cbe638b4ccaab74e27681ac30e4ab lib/codeql/rust/elements/internal/generated/WhereClause.qll d6c8f72bbec5d71c024f0d365c1c5e474f4d24ded0d34c56c1f66b1e4a384e9d ed14311d140eee00d3b26a4972f53e20d5af1bddf88fb5618e7e2d3ae1d816f3 @@ -657,7 +660,7 @@ lib/codeql/rust/elements/internal/generated/WhileExpr.qll 7edf1f23fbf953a2baabcd lib/codeql/rust/elements/internal/generated/WildcardPat.qll d74b70b57a0a66bfae017a329352a5b27a6b9e73dd5521d627f680e810c6c59e 4b913b548ba27ff3c82fcd32cf996ff329cb57d176d3bebd0fcef394486ea499 lib/codeql/rust/elements/internal/generated/YeetExpr.qll cac328200872a35337b4bcb15c851afb4743f82c080f9738d295571eb01d7392 94af734eea08129b587fed849b643e7572800e8330c0b57d727d41abda47930b lib/codeql/rust/elements/internal/generated/YieldExpr.qll 37e5f0c1e373a22bbc53d8b7f2c0e1f476e5be5080b8437c5e964f4e83fad79a 4a9a68643401637bf48e5c2b2f74a6bf0ddcb4ff76f6bffb61d436b685621e85 -lib/codeql/rust/elements.qll 0f225f1d1f386597d897dc0589e679d49ea8ea05408188d7e1ca5d0b03cb30fb 0f225f1d1f386597d897dc0589e679d49ea8ea05408188d7e1ca5d0b03cb30fb +lib/codeql/rust/elements.qll 5fbfcd83eeb4467d0a721e5b4faf61d0b31316d923e6a6f61d1724023ad91cae 5fbfcd83eeb4467d0a721e5b4faf61d0b31316d923e6a6f61d1724023ad91cae test/extractor-tests/generated/Abi/Abi.ql 7f6e7dc4af86eca3ebdc79b10373988cd0871bd78b51997d3cffd969105e5fdd 2f936b6ca005c6157c755121584410c03e4a3949c23bee302fbe05ee10ce118f test/extractor-tests/generated/Abi/Abi_getAbiString.ql a496762fcec5a0887b87023bbf93e9b650f02e20113e25c44d6e4281ae8f5335 14109c7ce11ba25e3cd6e7f1b3fcb4cb00622f2a4eac91bfe43145c5f366bc52 test/extractor-tests/generated/ArgList/ArgList.ql e412927756e72165d0e7c5c9bd3fca89d08197bbf760db8fb7683c64bb2229bc 043dba8506946fbb87753e22c387987d7eded6ddb963aa067f9e60ef9024d684 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index 58bae8de1e0..d11906da1ec 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -183,6 +183,7 @@ /lib/codeql/rust/elements/UseTree.qll linguist-generated /lib/codeql/rust/elements/UseTreeList.qll linguist-generated /lib/codeql/rust/elements/Variant.qll linguist-generated +/lib/codeql/rust/elements/VariantDef.qll linguist-generated /lib/codeql/rust/elements/VariantList.qll linguist-generated /lib/codeql/rust/elements/Visibility.qll linguist-generated /lib/codeql/rust/elements/WhereClause.qll linguist-generated @@ -447,6 +448,7 @@ /lib/codeql/rust/elements/internal/UseTreeListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UseTreeListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/VariantConstructor.qll linguist-generated +/lib/codeql/rust/elements/internal/VariantDefImpl.qll linguist-generated /lib/codeql/rust/elements/internal/VariantListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/VariantListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/VisibilityConstructor.qll linguist-generated @@ -651,6 +653,7 @@ /lib/codeql/rust/elements/internal/generated/UseTree.qll linguist-generated /lib/codeql/rust/elements/internal/generated/UseTreeList.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Variant.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/VariantDef.qll linguist-generated /lib/codeql/rust/elements/internal/generated/VariantList.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Visibility.qll linguist-generated /lib/codeql/rust/elements/internal/generated/WhereClause.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll index 7d3ccea4809..446a35ac68e 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll @@ -387,7 +387,7 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu } /** Holds if the guard `guard` controls block `bb` upon evaluating to `branch`. */ - predicate guardControlsBlock(Guard guard, SsaInput::BasicBlock bb, boolean branch) { + predicate guardDirectlyControlsBlock(Guard guard, SsaInput::BasicBlock bb, boolean branch) { exists(ConditionBasicBlock conditionBlock, ConditionalSuccessor s | guard = conditionBlock.getLastNode() and s.getValue() = branch and diff --git a/rust/ql/lib/codeql/rust/elements.qll b/rust/ql/lib/codeql/rust/elements.qll index 968c271b095..62705408baf 100644 --- a/rust/ql/lib/codeql/rust/elements.qll +++ b/rust/ql/lib/codeql/rust/elements.qll @@ -186,6 +186,7 @@ import codeql.rust.elements.UseBoundGenericArgs import codeql.rust.elements.UseTree import codeql.rust.elements.UseTreeList import codeql.rust.elements.Variant +import codeql.rust.elements.VariantDef import codeql.rust.elements.VariantList import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause diff --git a/rust/ql/lib/codeql/rust/elements/Struct.qll b/rust/ql/lib/codeql/rust/elements/Struct.qll index b01abf3e9a4..b78254d87dc 100644 --- a/rust/ql/lib/codeql/rust/elements/Struct.qll +++ b/rust/ql/lib/codeql/rust/elements/Struct.qll @@ -9,6 +9,7 @@ import codeql.rust.elements.FieldList import codeql.rust.elements.GenericParamList import codeql.rust.elements.Item import codeql.rust.elements.Name +import codeql.rust.elements.VariantDef import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause diff --git a/rust/ql/lib/codeql/rust/elements/Union.qll b/rust/ql/lib/codeql/rust/elements/Union.qll index 38a96aed38e..c5fd86be7e9 100644 --- a/rust/ql/lib/codeql/rust/elements/Union.qll +++ b/rust/ql/lib/codeql/rust/elements/Union.qll @@ -9,6 +9,7 @@ import codeql.rust.elements.GenericParamList import codeql.rust.elements.Item import codeql.rust.elements.Name import codeql.rust.elements.RecordFieldList +import codeql.rust.elements.VariantDef import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause diff --git a/rust/ql/lib/codeql/rust/elements/Variant.qll b/rust/ql/lib/codeql/rust/elements/Variant.qll index 658143dbfa2..ab9d391f44a 100644 --- a/rust/ql/lib/codeql/rust/elements/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/Variant.qll @@ -9,6 +9,7 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.FieldList import codeql.rust.elements.Name +import codeql.rust.elements.VariantDef import codeql.rust.elements.Visibility /** diff --git a/rust/ql/lib/codeql/rust/elements/VariantDef.qll b/rust/ql/lib/codeql/rust/elements/VariantDef.qll new file mode 100644 index 00000000000..bafb396c29d --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/VariantDef.qll @@ -0,0 +1,9 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `VariantDef`. + */ + +private import internal.VariantDefImpl +import codeql.rust.elements.AstNode + +final class VariantDef = Impl::VariantDef; diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariantDefImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariantDefImpl.qll new file mode 100644 index 00000000000..21ab1f20d4e --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/VariantDefImpl.qll @@ -0,0 +1,16 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `VariantDef`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.VariantDef + +/** + * INTERNAL: This module contains the customizable definition of `VariantDef` and should not + * be referenced directly. + */ +module Impl { + class VariantDef extends Generated::VariantDef { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index b6175f7491a..cd76b6846ce 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -1307,6 +1307,19 @@ private module Impl { ) } + private Element getImmediateChildOfVariantDef(VariantDef e, int index, string partialPredicateCall) { + exists(int b, int bAstNode, int n | + b = 0 and + bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and + n = bAstNode and + ( + none() + or + result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall) + ) + ) + } + private Element getImmediateChildOfVariantList( VariantList e, int index, string partialPredicateCall ) { @@ -3050,12 +3063,14 @@ private module Impl { private Element getImmediateChildOfVariant(Variant e, int index, string partialPredicateCall) { exists( - int b, int bAddressable, int n, int nAttr, int nExpr, int nFieldList, int nName, - int nVisibility + int b, int bVariantDef, int bAddressable, int n, int nAttr, int nExpr, int nFieldList, + int nName, int nVisibility | b = 0 and + bVariantDef = + b + 1 + max(int i | i = -1 or exists(getImmediateChildOfVariantDef(e, i, _)) | i) and bAddressable = - b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAddressable(e, i, _)) | i) and + bVariantDef + 1 + max(int i | i = -1 or exists(getImmediateChildOfAddressable(e, i, _)) | i) and n = bAddressable and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nExpr = nAttr + 1 and @@ -3065,7 +3080,9 @@ private module Impl { ( none() or - result = getImmediateChildOfAddressable(e, index - b, partialPredicateCall) + result = getImmediateChildOfVariantDef(e, index - b, partialPredicateCall) + or + result = getImmediateChildOfAddressable(e, index - bVariantDef, partialPredicateCall) or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" @@ -3700,12 +3717,14 @@ private module Impl { private Element getImmediateChildOfStruct(Struct e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAttr, int nFieldList, int nGenericParamList, int nName, - int nVisibility, int nWhereClause + int b, int bItem, int bVariantDef, int n, int nAttr, int nFieldList, int nGenericParamList, + int nName, int nVisibility, int nWhereClause | b = 0 and bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and + bVariantDef = + bItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfVariantDef(e, i, _)) | i) and + n = bVariantDef and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nFieldList = nAttr + 1 and nGenericParamList = nFieldList + 1 and @@ -3717,6 +3736,8 @@ private module Impl { or result = getImmediateChildOfItem(e, index - b, partialPredicateCall) or + result = getImmediateChildOfVariantDef(e, index - bItem, partialPredicateCall) + or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or @@ -3944,12 +3965,14 @@ private module Impl { private Element getImmediateChildOfUnion(Union e, int index, string partialPredicateCall) { exists( - int b, int bItem, int n, int nAttr, int nGenericParamList, int nName, int nStructFieldList, - int nVisibility, int nWhereClause + int b, int bItem, int bVariantDef, int n, int nAttr, int nGenericParamList, int nName, + int nStructFieldList, int nVisibility, int nWhereClause | b = 0 and bItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfItem(e, i, _)) | i) and - n = bItem and + bVariantDef = + bItem + 1 + max(int i | i = -1 or exists(getImmediateChildOfVariantDef(e, i, _)) | i) and + n = bVariantDef and nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and nGenericParamList = nAttr + 1 and nName = nGenericParamList + 1 and @@ -3961,6 +3984,8 @@ private module Impl { or result = getImmediateChildOfItem(e, index - b, partialPredicateCall) or + result = getImmediateChildOfVariantDef(e, index - bItem, partialPredicateCall) + or result = e.getAttr(index - n) and partialPredicateCall = "Attr(" + (index - n).toString() + ")" or diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index e8d56f11a8f..2258b810da3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -1193,6 +1193,11 @@ module Raw { UseTree getUseTree(int index) { use_tree_list_use_trees(this, index, result) } } + /** + * INTERNAL: Do not use. + */ + class VariantDef extends @variant_def, AstNode { } + /** * INTERNAL: Do not use. * A VariantList. For example: @@ -3123,7 +3128,7 @@ module Raw { * todo!() * ``` */ - class Variant extends @variant, Addressable { + class Variant extends @variant, VariantDef, Addressable { override string toString() { result = "Variant" } /** @@ -3838,7 +3843,7 @@ module Raw { * todo!() * ``` */ - class Struct extends @struct, Item { + class Struct extends @struct, Item, VariantDef { override string toString() { result = "Struct" } /** @@ -4098,7 +4103,7 @@ module Raw { * todo!() * ``` */ - class Union extends @union, Item { + class Union extends @union, Item, VariantDef { override string toString() { result = "Union" } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll index a596843e100..07521be8d69 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Struct.qll @@ -11,6 +11,7 @@ import codeql.rust.elements.FieldList import codeql.rust.elements.GenericParamList import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name +import codeql.rust.elements.internal.VariantDefImpl::Impl as VariantDefImpl import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause @@ -27,7 +28,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Struct` class directly. * Use the subclass `Struct`, where the following predicates are available. */ - class Struct extends Synth::TStruct, ItemImpl::Item { + class Struct extends Synth::TStruct, ItemImpl::Item, VariantDefImpl::VariantDef { override string getAPrimaryQlClass() { result = "Struct" } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll index d42033d6df1..d6430eff305 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -723,7 +723,7 @@ module Synth { TStructExprField or TStructExprFieldList or TStructField or TStructPatField or TStructPatFieldList or TToken or TTokenTree or TTupleField or TTypeBound or TTypeBoundList or TTypeRepr or TUseBoundGenericArg or TUseBoundGenericArgs or TUseTree or - TUseTreeList or TVariantList or TVisibility or TWhereClause or TWherePred; + TUseTreeList or TVariantDef or TVariantList or TVisibility or TWhereClause or TWherePred; /** * INTERNAL: Do not use. @@ -845,6 +845,11 @@ module Synth { */ class TUseBoundGenericArg = TLifetime or TNameRef; + /** + * INTERNAL: Do not use. + */ + class TVariantDef = TStruct or TUnion or TVariant; + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TAbi`, if possible. @@ -2036,6 +2041,8 @@ module Synth { or result = convertUseTreeListFromRaw(e) or + result = convertVariantDefFromRaw(e) + or result = convertVariantListFromRaw(e) or result = convertVisibilityFromRaw(e) @@ -2433,6 +2440,18 @@ module Synth { result = convertNameRefFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TVariantDef`, if possible. + */ + TVariantDef convertVariantDefFromRaw(Raw::Element e) { + result = convertStructFromRaw(e) + or + result = convertUnionFromRaw(e) + or + result = convertVariantFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TAbi` to a raw DB element, if possible. @@ -3622,6 +3641,8 @@ module Synth { or result = convertUseTreeListToRaw(e) or + result = convertVariantDefToRaw(e) + or result = convertVariantListToRaw(e) or result = convertVisibilityToRaw(e) @@ -4018,4 +4039,16 @@ module Synth { or result = convertNameRefToRaw(e) } + + /** + * INTERNAL: Do not use. + * Converts a synthesized `TVariantDef` to a raw DB element, if possible. + */ + Raw::Element convertVariantDefToRaw(TVariantDef e) { + result = convertStructToRaw(e) + or + result = convertUnionToRaw(e) + or + result = convertVariantToRaw(e) + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll index 89986895761..a6d2fcc92f9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Union.qll @@ -11,6 +11,7 @@ import codeql.rust.elements.GenericParamList import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl import codeql.rust.elements.Name import codeql.rust.elements.RecordFieldList +import codeql.rust.elements.internal.VariantDefImpl::Impl as VariantDefImpl import codeql.rust.elements.Visibility import codeql.rust.elements.WhereClause @@ -27,7 +28,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Union` class directly. * Use the subclass `Union`, where the following predicates are available. */ - class Union extends Synth::TUnion, ItemImpl::Item { + class Union extends Synth::TUnion, ItemImpl::Item, VariantDefImpl::VariantDef { override string getAPrimaryQlClass() { result = "Union" } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll index b78043e0922..73c15601163 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Variant.qll @@ -11,6 +11,7 @@ import codeql.rust.elements.Attr import codeql.rust.elements.Expr import codeql.rust.elements.FieldList import codeql.rust.elements.Name +import codeql.rust.elements.internal.VariantDefImpl::Impl as VariantDefImpl import codeql.rust.elements.Visibility /** @@ -26,7 +27,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::Variant` class directly. * Use the subclass `Variant`, where the following predicates are available. */ - class Variant extends Synth::TVariant, AddressableImpl::Addressable { + class Variant extends Synth::TVariant, VariantDefImpl::VariantDef, AddressableImpl::Addressable { override string getAPrimaryQlClass() { result = "Variant" } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/VariantDef.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/VariantDef.qll new file mode 100644 index 00000000000..3114f03cade --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/VariantDef.qll @@ -0,0 +1,21 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `VariantDef`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl + +/** + * INTERNAL: This module contains the fully generated definition of `VariantDef` and should not + * be referenced directly. + */ +module Generated { + /** + * INTERNAL: Do not reference the `Generated::VariantDef` class directly. + * Use the subclass `VariantDef`, where the following predicates are available. + */ + class VariantDef extends Synth::TVariantDef, AstNodeImpl::AstNode { } +} diff --git a/rust/ql/lib/codeql/rust/frameworks/log.model.yml b/rust/ql/lib/codeql/rust/frameworks/log.model.yml index 8634f55f239..d6ac223742f 100644 --- a/rust/ql/lib/codeql/rust/frameworks/log.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/log.model.yml @@ -3,9 +3,11 @@ extensions: pack: codeql/rust-all extensible: sinkModel data: - - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[0]", "log-injection", "manual"] # args - - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[2]", "log-injection", "manual"] # target - - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[3]", "log-injection", "manual"] # key value + - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[0]", "log-injection", "manual"] # logger / args (pre v0.4.27) + - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[1]", "log-injection", "manual"] # args / level (pre v0.4.27) + - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[2]", "log-injection", "manual"] # level / target (pre v0.4.27) + - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[3]", "log-injection", "manual"] # target / key value (pre v0.4.27) + - ["repo:https://github.com/rust-lang/log:log", "crate::__private_api::log", "Argument[4]", "log-injection", "manual"] # key value - ["lang:std", "crate::io::stdio::_print", "Argument[0]", "log-injection", "manual"] - ["lang:std", "crate::io::stdio::_eprint", "Argument[0]", "log-injection", "manual"] - ["lang:std", "::write", "Argument[0]", "log-injection", "manual"] diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 4e52031f569..bd98bf6ec03 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -187,7 +187,12 @@ abstract class ItemNode extends Locatable { this = result.(ImplOrTraitItemNode).getAnItemInSelfScope() or name = "crate" and - this = result.(CrateItemNode).getASourceFile() + result = + any(CrateItemNode crate | + this = crate.getASourceFile() + or + this = crate.getModuleNode() + ) } /** Gets the location of this item. */ diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme index c066837a1f0..d2c0bfa049f 100644 --- a/rust/ql/lib/rust.dbscheme +++ b/rust/ql/lib/rust.dbscheme @@ -216,6 +216,7 @@ named_crates( | @use_bound_generic_args | @use_tree | @use_tree_list +| @variant_def | @variant_list | @visibility | @where_clause @@ -1178,6 +1179,12 @@ use_tree_list_use_trees( int use_tree: @use_tree ref ); +@variant_def = + @struct +| @union +| @variant +; + variant_lists( unique int id: @variant_list ); diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected index 4f0f2ec96fb..c6dae9ae3fc 100644 --- a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected @@ -1,20 +1,20 @@ canonicalPaths | anonymous.rs:1:1:1:26 | Use | None | None | | anonymous.rs:3:1:32:1 | fn canonicals | repo::test | crate::anonymous::canonicals | -| anonymous.rs:4:5:4:23 | struct OtherStruct | repo::test | {0}::OtherStruct | -| anonymous.rs:6:5:8:5 | trait OtherTrait | repo::test | {0}::OtherTrait | -| anonymous.rs:7:9:7:20 | fn g | repo::test | {0}::OtherTrait::g | +| anonymous.rs:4:5:4:23 | struct OtherStruct | None | None | +| anonymous.rs:6:5:8:5 | trait OtherTrait | None | None | +| anonymous.rs:7:9:7:20 | fn g | None | None | | anonymous.rs:10:5:12:5 | impl OtherTrait for OtherStruct { ... } | None | None | -| anonymous.rs:11:9:11:22 | fn g | repo::test | <{0}::OtherStruct as {0}::OtherTrait>::g | +| anonymous.rs:11:9:11:22 | fn g | None | None | | anonymous.rs:14:5:16:5 | impl OtherTrait for ...::Struct { ... } | None | None | -| anonymous.rs:15:9:15:22 | fn g | repo::test | ::g | +| anonymous.rs:15:9:15:22 | fn g | None | None | | anonymous.rs:18:5:20:5 | impl ...::Trait for OtherStruct { ... } | None | None | -| anonymous.rs:19:9:19:22 | fn f | repo::test | <{0}::OtherStruct as crate::regular::Trait>::f | -| anonymous.rs:22:5:24:5 | fn nested | repo::test | {0}::nested | -| anonymous.rs:23:9:23:27 | struct OtherStruct | repo::test | {1}::OtherStruct | -| anonymous.rs:26:5:31:5 | fn usage | repo::test | {0}::usage | +| anonymous.rs:19:9:19:22 | fn f | None | None | +| anonymous.rs:22:5:24:5 | fn nested | None | None | +| anonymous.rs:23:9:23:27 | struct OtherStruct | None | None | +| anonymous.rs:26:5:31:5 | fn usage | None | None | | anonymous.rs:34:1:36:1 | fn other | repo::test | crate::anonymous::other | -| anonymous.rs:35:5:35:23 | struct OtherStruct | repo::test | {36}::OtherStruct | +| anonymous.rs:35:5:35:23 | struct OtherStruct | None | None | | lib.rs:1:1:1:14 | mod anonymous | repo::test | crate::anonymous | | lib.rs:2:1:2:12 | mod regular | repo::test | crate::regular | | regular.rs:1:1:2:18 | struct Struct | repo::test | crate::regular::Struct | @@ -36,12 +36,12 @@ canonicalPaths | regular.rs:51:5:51:18 | Use | None | None | | regular.rs:57:1:63:1 | fn enum_match | repo::test | crate::regular::enum_match | resolvedPaths -| anonymous.rs:27:17:27:30 | OtherStruct {...} | repo::test | {0}::OtherStruct | +| anonymous.rs:27:17:27:30 | OtherStruct {...} | None | None | | anonymous.rs:28:9:28:9 | s | None | None | -| anonymous.rs:28:9:28:13 | s.f(...) | repo::test | <{0}::OtherStruct as crate::regular::Trait>::f | +| anonymous.rs:28:9:28:13 | s.f(...) | None | None | | anonymous.rs:29:9:29:9 | s | None | None | -| anonymous.rs:29:9:29:13 | s.g(...) | repo::test | <{0}::OtherStruct as {0}::OtherTrait>::g | -| anonymous.rs:30:9:30:14 | nested | repo::test | {0}::nested | +| anonymous.rs:29:9:29:13 | s.g(...) | None | None | +| anonymous.rs:30:9:30:14 | nested | None | None | | regular.rs:27:13:27:21 | Struct {...} | repo::test | crate::regular::Struct | | regular.rs:28:5:28:5 | s | None | None | | regular.rs:28:5:28:9 | s.f(...) | repo::test | ::f | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 94341e27957..2766d8c0fd8 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -430,13 +430,10 @@ localStep | main.rs:318:11:318:12 | s1 | main.rs:319:9:319:45 | ... \| ... | | main.rs:319:9:319:45 | ... \| ... | main.rs:319:9:319:25 | ...::A(...) | | main.rs:319:9:319:45 | ... \| ... | main.rs:319:29:319:45 | ...::B(...) | -| main.rs:319:9:319:45 | [SSA] phi | main.rs:319:55:319:55 | n | -| main.rs:319:24:319:24 | [SSA] [input] phi | main.rs:319:9:319:45 | [SSA] phi | -| main.rs:319:24:319:24 | [SSA] n | main.rs:319:24:319:24 | [SSA] [input] phi | +| main.rs:319:24:319:24 | [SSA] n | main.rs:319:55:319:55 | n | | main.rs:319:24:319:24 | n | main.rs:319:24:319:24 | [SSA] n | | main.rs:319:24:319:24 | n | main.rs:319:24:319:24 | n | -| main.rs:319:44:319:44 | [SSA] [input] phi | main.rs:319:9:319:45 | [SSA] phi | -| main.rs:319:44:319:44 | [SSA] n | main.rs:319:44:319:44 | [SSA] [input] phi | +| main.rs:319:44:319:44 | [SSA] n | main.rs:319:55:319:55 | n | | main.rs:319:44:319:44 | n | main.rs:319:44:319:44 | [SSA] n | | main.rs:319:44:319:44 | n | main.rs:319:44:319:44 | n | | main.rs:319:50:319:56 | sink(...) | main.rs:318:5:320:5 | match s1 { ... } | @@ -473,13 +470,10 @@ localStep | main.rs:336:11:336:12 | s1 | main.rs:337:9:337:19 | ... \| ... | | main.rs:337:9:337:19 | ... \| ... | main.rs:337:9:337:12 | A(...) | | main.rs:337:9:337:19 | ... \| ... | main.rs:337:16:337:19 | B(...) | -| main.rs:337:9:337:19 | [SSA] phi | main.rs:337:29:337:29 | n | -| main.rs:337:11:337:11 | [SSA] [input] phi | main.rs:337:9:337:19 | [SSA] phi | -| main.rs:337:11:337:11 | [SSA] n | main.rs:337:11:337:11 | [SSA] [input] phi | +| main.rs:337:11:337:11 | [SSA] n | main.rs:337:29:337:29 | n | | main.rs:337:11:337:11 | n | main.rs:337:11:337:11 | [SSA] n | | main.rs:337:11:337:11 | n | main.rs:337:11:337:11 | n | -| main.rs:337:18:337:18 | [SSA] [input] phi | main.rs:337:9:337:19 | [SSA] phi | -| main.rs:337:18:337:18 | [SSA] n | main.rs:337:18:337:18 | [SSA] [input] phi | +| main.rs:337:18:337:18 | [SSA] n | main.rs:337:29:337:29 | n | | main.rs:337:18:337:18 | n | main.rs:337:18:337:18 | [SSA] n | | main.rs:337:18:337:18 | n | main.rs:337:18:337:18 | n | | main.rs:337:24:337:30 | sink(...) | main.rs:336:5:338:5 | match s1 { ... } | @@ -516,13 +510,10 @@ localStep | main.rs:359:11:359:12 | s1 | main.rs:360:9:360:71 | ... \| ... | | main.rs:360:9:360:71 | ... \| ... | main.rs:360:9:360:38 | ...::C {...} | | main.rs:360:9:360:71 | ... \| ... | main.rs:360:42:360:71 | ...::D {...} | -| main.rs:360:9:360:71 | [SSA] phi | main.rs:360:81:360:81 | n | -| main.rs:360:36:360:36 | [SSA] [input] phi | main.rs:360:9:360:71 | [SSA] phi | -| main.rs:360:36:360:36 | [SSA] n | main.rs:360:36:360:36 | [SSA] [input] phi | +| main.rs:360:36:360:36 | [SSA] n | main.rs:360:81:360:81 | n | | main.rs:360:36:360:36 | n | main.rs:360:36:360:36 | [SSA] n | | main.rs:360:36:360:36 | n | main.rs:360:36:360:36 | n | -| main.rs:360:69:360:69 | [SSA] [input] phi | main.rs:360:9:360:71 | [SSA] phi | -| main.rs:360:69:360:69 | [SSA] n | main.rs:360:69:360:69 | [SSA] [input] phi | +| main.rs:360:69:360:69 | [SSA] n | main.rs:360:81:360:81 | n | | main.rs:360:69:360:69 | n | main.rs:360:69:360:69 | [SSA] n | | main.rs:360:69:360:69 | n | main.rs:360:69:360:69 | n | | main.rs:360:76:360:82 | sink(...) | main.rs:359:5:361:5 | match s1 { ... } | @@ -559,13 +550,10 @@ localStep | main.rs:379:11:379:12 | s1 | main.rs:380:9:380:43 | ... \| ... | | main.rs:380:9:380:43 | ... \| ... | main.rs:380:9:380:24 | C {...} | | main.rs:380:9:380:43 | ... \| ... | main.rs:380:28:380:43 | D {...} | -| main.rs:380:9:380:43 | [SSA] phi | main.rs:380:53:380:53 | n | -| main.rs:380:22:380:22 | [SSA] [input] phi | main.rs:380:9:380:43 | [SSA] phi | -| main.rs:380:22:380:22 | [SSA] n | main.rs:380:22:380:22 | [SSA] [input] phi | +| main.rs:380:22:380:22 | [SSA] n | main.rs:380:53:380:53 | n | | main.rs:380:22:380:22 | n | main.rs:380:22:380:22 | [SSA] n | | main.rs:380:22:380:22 | n | main.rs:380:22:380:22 | n | -| main.rs:380:41:380:41 | [SSA] [input] phi | main.rs:380:9:380:43 | [SSA] phi | -| main.rs:380:41:380:41 | [SSA] n | main.rs:380:41:380:41 | [SSA] [input] phi | +| main.rs:380:41:380:41 | [SSA] n | main.rs:380:53:380:53 | n | | main.rs:380:41:380:41 | n | main.rs:380:41:380:41 | [SSA] n | | main.rs:380:41:380:41 | n | main.rs:380:41:380:41 | n | | main.rs:380:48:380:54 | sink(...) | main.rs:379:5:381:5 | match s1 { ... } | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index b4aecc9e1a2..287dbeb29c2 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -275,10 +275,16 @@ mod function_trait_bounds { } } + // Type parameter with bound occurs in the root of a parameter type. fn call_trait_m1>(x: T2) -> T1 { x.m1() } + // Type parameter with bound occurs nested within another type. + fn call_trait_thing_m1>(x: MyThing) -> T1 { + x.a.m1() + } + impl MyTrait for MyThing { fn m1(self) -> T { self.a @@ -298,11 +304,21 @@ mod function_trait_bounds { println!("{:?}", x.m2()); println!("{:?}", y.m2()); - let x = MyThing { a: S1 }; - let y = MyThing { a: S2 }; + let x2 = MyThing { a: S1 }; + let y2 = MyThing { a: S2 }; - println!("{:?}", call_trait_m1(x)); // missing - println!("{:?}", call_trait_m1(y)); // missing + println!("{:?}", call_trait_m1(x2)); + println!("{:?}", call_trait_m1(y2)); + + let x3 = MyThing { + a: MyThing { a: S1 }, + }; + let y3 = MyThing { + a: MyThing { a: S2 }, + }; + + println!("{:?}", call_trait_thing_m1(x3)); + println!("{:?}", call_trait_thing_m1(y3)); } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index b43a0ca8f8e..6d92dd08f12 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -328,679 +328,720 @@ inferType | main.rs:274:13:274:16 | self | | main.rs:267:5:276:5 | trait MyTrait | | main.rs:274:13:274:16 | self | A | main.rs:267:19:267:19 | A | | main.rs:274:13:274:21 | self.m1(...) | | main.rs:267:19:267:19 | A | -| main.rs:278:43:278:43 | x | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:278:43:278:43 | x | | main.rs:278:26:278:40 | T2 | -| main.rs:278:43:278:43 | x | A | main.rs:278:22:278:23 | T1 | -| main.rs:278:56:280:5 | { ... } | | main.rs:278:22:278:23 | T1 | -| main.rs:279:9:279:9 | x | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:279:9:279:9 | x | | main.rs:278:26:278:40 | T2 | -| main.rs:279:9:279:9 | x | A | main.rs:278:22:278:23 | T1 | -| main.rs:279:9:279:14 | x.m1(...) | | main.rs:278:22:278:23 | T1 | -| main.rs:283:15:283:18 | SelfParam | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:283:15:283:18 | SelfParam | T | main.rs:282:10:282:10 | T | -| main.rs:283:26:285:9 | { ... } | | main.rs:282:10:282:10 | T | -| main.rs:284:13:284:16 | self | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:284:13:284:16 | self | T | main.rs:282:10:282:10 | T | -| main.rs:284:13:284:18 | self.a | | main.rs:282:10:282:10 | T | -| main.rs:289:13:289:13 | x | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:289:13:289:13 | x | T | main.rs:262:5:263:14 | struct S1 | -| main.rs:289:17:289:33 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:289:17:289:33 | MyThing {...} | T | main.rs:262:5:263:14 | struct S1 | -| main.rs:289:30:289:31 | S1 | | main.rs:262:5:263:14 | struct S1 | -| main.rs:290:13:290:13 | y | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:290:13:290:13 | y | T | main.rs:264:5:265:14 | struct S2 | -| main.rs:290:17:290:33 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:290:17:290:33 | MyThing {...} | T | main.rs:264:5:265:14 | struct S2 | -| main.rs:290:30:290:31 | S2 | | main.rs:264:5:265:14 | struct S2 | -| main.rs:292:26:292:26 | x | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:292:26:292:26 | x | T | main.rs:262:5:263:14 | struct S1 | -| main.rs:292:26:292:31 | x.m1(...) | | main.rs:262:5:263:14 | struct S1 | -| main.rs:293:26:293:26 | y | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:293:26:293:26 | y | T | main.rs:264:5:265:14 | struct S2 | -| main.rs:293:26:293:31 | y.m1(...) | | main.rs:264:5:265:14 | struct S2 | +| main.rs:279:43:279:43 | x | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:279:43:279:43 | x | | main.rs:279:26:279:40 | T2 | +| main.rs:279:43:279:43 | x | A | main.rs:279:22:279:23 | T1 | +| main.rs:279:56:281:5 | { ... } | | main.rs:279:22:279:23 | T1 | +| main.rs:280:9:280:9 | x | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:280:9:280:9 | x | | main.rs:279:26:279:40 | T2 | +| main.rs:280:9:280:9 | x | A | main.rs:279:22:279:23 | T1 | +| main.rs:280:9:280:14 | x.m1(...) | | main.rs:279:22:279:23 | T1 | +| main.rs:284:49:284:49 | x | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:284:49:284:49 | x | T | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:284:49:284:49 | x | T | main.rs:284:32:284:46 | T2 | +| main.rs:284:49:284:49 | x | T.A | main.rs:284:28:284:29 | T1 | +| main.rs:284:71:286:5 | { ... } | | main.rs:284:28:284:29 | T1 | +| main.rs:285:9:285:9 | x | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:285:9:285:9 | x | T | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:285:9:285:9 | x | T | main.rs:284:32:284:46 | T2 | +| main.rs:285:9:285:9 | x | T.A | main.rs:284:28:284:29 | T1 | +| main.rs:285:9:285:11 | x.a | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:285:9:285:11 | x.a | | main.rs:284:32:284:46 | T2 | +| main.rs:285:9:285:11 | x.a | A | main.rs:284:28:284:29 | T1 | +| main.rs:285:9:285:16 | ... .m1(...) | | main.rs:284:28:284:29 | T1 | +| main.rs:289:15:289:18 | SelfParam | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:289:15:289:18 | SelfParam | T | main.rs:288:10:288:10 | T | +| main.rs:289:26:291:9 | { ... } | | main.rs:288:10:288:10 | T | +| main.rs:290:13:290:16 | self | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:290:13:290:16 | self | T | main.rs:288:10:288:10 | T | +| main.rs:290:13:290:18 | self.a | | main.rs:288:10:288:10 | T | | main.rs:295:13:295:13 | x | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:295:13:295:13 | x | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:295:13:295:13 | x | A | main.rs:262:5:263:14 | struct S1 | | main.rs:295:13:295:13 | x | T | main.rs:262:5:263:14 | struct S1 | | main.rs:295:17:295:33 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:295:17:295:33 | MyThing {...} | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:295:17:295:33 | MyThing {...} | A | main.rs:262:5:263:14 | struct S1 | | main.rs:295:17:295:33 | MyThing {...} | T | main.rs:262:5:263:14 | struct S1 | | main.rs:295:30:295:31 | S1 | | main.rs:262:5:263:14 | struct S1 | | main.rs:296:13:296:13 | y | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:296:13:296:13 | y | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:296:13:296:13 | y | A | main.rs:264:5:265:14 | struct S2 | | main.rs:296:13:296:13 | y | T | main.rs:264:5:265:14 | struct S2 | | main.rs:296:17:296:33 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:296:17:296:33 | MyThing {...} | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:296:17:296:33 | MyThing {...} | A | main.rs:264:5:265:14 | struct S2 | | main.rs:296:17:296:33 | MyThing {...} | T | main.rs:264:5:265:14 | struct S2 | | main.rs:296:30:296:31 | S2 | | main.rs:264:5:265:14 | struct S2 | | main.rs:298:26:298:26 | x | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:298:26:298:26 | x | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:298:26:298:26 | x | A | main.rs:262:5:263:14 | struct S1 | | main.rs:298:26:298:26 | x | T | main.rs:262:5:263:14 | struct S1 | -| main.rs:298:26:298:31 | x.m2(...) | | main.rs:262:5:263:14 | struct S1 | +| main.rs:298:26:298:31 | x.m1(...) | | main.rs:262:5:263:14 | struct S1 | | main.rs:299:26:299:26 | y | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:299:26:299:26 | y | | main.rs:267:5:276:5 | trait MyTrait | -| main.rs:299:26:299:26 | y | A | main.rs:264:5:265:14 | struct S2 | | main.rs:299:26:299:26 | y | T | main.rs:264:5:265:14 | struct S2 | -| main.rs:299:26:299:31 | y.m2(...) | | main.rs:264:5:265:14 | struct S2 | +| main.rs:299:26:299:31 | y.m1(...) | | main.rs:264:5:265:14 | struct S2 | | main.rs:301:13:301:13 | x | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:301:13:301:13 | x | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:301:13:301:13 | x | A | main.rs:262:5:263:14 | struct S1 | | main.rs:301:13:301:13 | x | T | main.rs:262:5:263:14 | struct S1 | | main.rs:301:17:301:33 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:301:17:301:33 | MyThing {...} | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:301:17:301:33 | MyThing {...} | A | main.rs:262:5:263:14 | struct S1 | | main.rs:301:17:301:33 | MyThing {...} | T | main.rs:262:5:263:14 | struct S1 | | main.rs:301:30:301:31 | S1 | | main.rs:262:5:263:14 | struct S1 | | main.rs:302:13:302:13 | y | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:302:13:302:13 | y | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:302:13:302:13 | y | A | main.rs:264:5:265:14 | struct S2 | | main.rs:302:13:302:13 | y | T | main.rs:264:5:265:14 | struct S2 | | main.rs:302:17:302:33 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:302:17:302:33 | MyThing {...} | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:302:17:302:33 | MyThing {...} | A | main.rs:264:5:265:14 | struct S2 | | main.rs:302:17:302:33 | MyThing {...} | T | main.rs:264:5:265:14 | struct S2 | | main.rs:302:30:302:31 | S2 | | main.rs:264:5:265:14 | struct S2 | -| main.rs:304:40:304:40 | x | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:304:40:304:40 | x | T | main.rs:262:5:263:14 | struct S1 | -| main.rs:305:40:305:40 | y | | main.rs:257:5:260:5 | struct MyThing | -| main.rs:305:40:305:40 | y | T | main.rs:264:5:265:14 | struct S2 | -| main.rs:313:15:313:18 | SelfParam | | main.rs:310:5:322:5 | trait MyTrait | -| main.rs:315:15:315:18 | SelfParam | | main.rs:310:5:322:5 | trait MyTrait | -| main.rs:330:15:330:18 | SelfParam | | main.rs:324:5:325:13 | struct S | -| main.rs:330:45:332:9 | { ... } | | main.rs:324:5:325:13 | struct S | -| main.rs:331:13:331:13 | S | | main.rs:324:5:325:13 | struct S | -| main.rs:336:13:336:13 | x | | main.rs:324:5:325:13 | struct S | -| main.rs:336:17:336:17 | S | | main.rs:324:5:325:13 | struct S | -| main.rs:337:26:337:26 | x | | main.rs:324:5:325:13 | struct S | -| main.rs:337:26:337:31 | x.m1(...) | | main.rs:324:5:325:13 | struct S | -| main.rs:339:13:339:13 | x | | main.rs:310:5:322:5 | trait MyTrait | -| main.rs:339:13:339:13 | x | | main.rs:324:5:325:13 | struct S | -| main.rs:339:17:339:17 | S | | main.rs:310:5:322:5 | trait MyTrait | -| main.rs:339:17:339:17 | S | | main.rs:324:5:325:13 | struct S | -| main.rs:340:26:340:26 | x | | main.rs:310:5:322:5 | trait MyTrait | -| main.rs:340:26:340:26 | x | | main.rs:324:5:325:13 | struct S | -| main.rs:357:15:357:18 | SelfParam | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:357:15:357:18 | SelfParam | A | main.rs:356:10:356:10 | T | -| main.rs:357:26:362:9 | { ... } | | main.rs:356:10:356:10 | T | -| main.rs:358:13:361:13 | match self { ... } | | main.rs:356:10:356:10 | T | -| main.rs:358:19:358:22 | self | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:358:19:358:22 | self | A | main.rs:356:10:356:10 | T | -| main.rs:359:28:359:28 | a | | main.rs:356:10:356:10 | T | -| main.rs:359:34:359:34 | a | | main.rs:356:10:356:10 | T | -| main.rs:360:30:360:30 | a | | main.rs:356:10:356:10 | T | -| main.rs:360:37:360:37 | a | | main.rs:356:10:356:10 | T | -| main.rs:366:13:366:13 | x | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:366:13:366:13 | x | A | main.rs:351:5:352:14 | struct S1 | -| main.rs:366:17:366:30 | ...::C1(...) | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:366:17:366:30 | ...::C1(...) | A | main.rs:351:5:352:14 | struct S1 | -| main.rs:366:28:366:29 | S1 | | main.rs:351:5:352:14 | struct S1 | -| main.rs:367:13:367:13 | y | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:367:13:367:13 | y | A | main.rs:353:5:354:14 | struct S2 | -| main.rs:367:17:367:36 | ...::C2 {...} | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:367:17:367:36 | ...::C2 {...} | A | main.rs:353:5:354:14 | struct S2 | -| main.rs:367:33:367:34 | S2 | | main.rs:353:5:354:14 | struct S2 | -| main.rs:369:26:369:26 | x | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:369:26:369:26 | x | A | main.rs:351:5:352:14 | struct S1 | -| main.rs:369:26:369:31 | x.m1(...) | | main.rs:351:5:352:14 | struct S1 | -| main.rs:370:26:370:26 | y | | main.rs:345:5:349:5 | enum MyEnum | -| main.rs:370:26:370:26 | y | A | main.rs:353:5:354:14 | struct S2 | -| main.rs:370:26:370:31 | y.m1(...) | | main.rs:353:5:354:14 | struct S2 | -| main.rs:391:15:391:18 | SelfParam | | main.rs:390:5:392:5 | trait MyTrait1 | -| main.rs:391:15:391:18 | SelfParam | Tr1 | main.rs:390:20:390:22 | Tr1 | -| main.rs:395:15:395:18 | SelfParam | | main.rs:390:5:392:5 | trait MyTrait1 | -| main.rs:395:15:395:18 | SelfParam | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:395:15:395:18 | SelfParam | Tr1 | main.rs:394:20:394:22 | Tr2 | -| main.rs:395:15:395:18 | SelfParam | Tr2 | main.rs:394:20:394:22 | Tr2 | -| main.rs:398:9:404:9 | { ... } | | main.rs:394:20:394:22 | Tr2 | -| main.rs:399:13:403:13 | if ... {...} else {...} | | main.rs:394:20:394:22 | Tr2 | -| main.rs:399:26:401:13 | { ... } | | main.rs:394:20:394:22 | Tr2 | -| main.rs:400:17:400:20 | self | | main.rs:390:5:392:5 | trait MyTrait1 | -| main.rs:400:17:400:20 | self | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:400:17:400:20 | self | Tr1 | main.rs:394:20:394:22 | Tr2 | -| main.rs:400:17:400:20 | self | Tr2 | main.rs:394:20:394:22 | Tr2 | -| main.rs:400:17:400:25 | self.m1(...) | | main.rs:394:20:394:22 | Tr2 | -| main.rs:401:20:403:13 | { ... } | | main.rs:394:20:394:22 | Tr2 | -| main.rs:402:17:402:30 | ...::m1(...) | | main.rs:394:20:394:22 | Tr2 | -| main.rs:402:26:402:29 | self | | main.rs:390:5:392:5 | trait MyTrait1 | -| main.rs:402:26:402:29 | self | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:402:26:402:29 | self | Tr1 | main.rs:394:20:394:22 | Tr2 | -| main.rs:402:26:402:29 | self | Tr2 | main.rs:394:20:394:22 | Tr2 | -| main.rs:408:15:408:18 | SelfParam | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:408:15:408:18 | SelfParam | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:408:15:408:18 | SelfParam | Tr2 | main.rs:375:5:378:5 | struct MyThing | -| main.rs:408:15:408:18 | SelfParam | Tr2.A | main.rs:407:20:407:22 | Tr3 | -| main.rs:408:15:408:18 | SelfParam | Tr3 | main.rs:407:20:407:22 | Tr3 | -| main.rs:411:9:417:9 | { ... } | | main.rs:407:20:407:22 | Tr3 | -| main.rs:412:13:416:13 | if ... {...} else {...} | | main.rs:407:20:407:22 | Tr3 | -| main.rs:412:26:414:13 | { ... } | | main.rs:407:20:407:22 | Tr3 | -| main.rs:413:17:413:20 | self | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:413:17:413:20 | self | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:413:17:413:20 | self | Tr2 | main.rs:375:5:378:5 | struct MyThing | -| main.rs:413:17:413:20 | self | Tr2.A | main.rs:407:20:407:22 | Tr3 | -| main.rs:413:17:413:20 | self | Tr3 | main.rs:407:20:407:22 | Tr3 | -| main.rs:413:17:413:25 | self.m2(...) | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:413:17:413:25 | self.m2(...) | A | main.rs:407:20:407:22 | Tr3 | -| main.rs:413:17:413:27 | ... .a | | main.rs:407:20:407:22 | Tr3 | -| main.rs:414:20:416:13 | { ... } | | main.rs:407:20:407:22 | Tr3 | -| main.rs:415:17:415:30 | ...::m2(...) | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:415:17:415:30 | ...::m2(...) | A | main.rs:407:20:407:22 | Tr3 | -| main.rs:415:17:415:32 | ... .a | | main.rs:407:20:407:22 | Tr3 | -| main.rs:415:26:415:29 | self | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:415:26:415:29 | self | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:415:26:415:29 | self | Tr2 | main.rs:375:5:378:5 | struct MyThing | -| main.rs:415:26:415:29 | self | Tr2.A | main.rs:407:20:407:22 | Tr3 | -| main.rs:415:26:415:29 | self | Tr3 | main.rs:407:20:407:22 | Tr3 | -| main.rs:421:15:421:18 | SelfParam | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:421:15:421:18 | SelfParam | A | main.rs:420:10:420:10 | T | -| main.rs:421:26:423:9 | { ... } | | main.rs:420:10:420:10 | T | -| main.rs:422:13:422:16 | self | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:422:13:422:16 | self | A | main.rs:420:10:420:10 | T | -| main.rs:422:13:422:18 | self.a | | main.rs:420:10:420:10 | T | -| main.rs:429:15:429:18 | SelfParam | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:429:15:429:18 | SelfParam | A | main.rs:428:10:428:10 | T | -| main.rs:429:35:431:9 | { ... } | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:429:35:431:9 | { ... } | A | main.rs:428:10:428:10 | T | -| main.rs:430:13:430:33 | MyThing {...} | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:430:13:430:33 | MyThing {...} | A | main.rs:428:10:428:10 | T | -| main.rs:430:26:430:29 | self | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:430:26:430:29 | self | A | main.rs:428:10:428:10 | T | -| main.rs:430:26:430:31 | self.a | | main.rs:428:10:428:10 | T | -| main.rs:439:13:439:13 | x | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:439:13:439:13 | x | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:439:17:439:33 | MyThing {...} | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:439:17:439:33 | MyThing {...} | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:439:30:439:31 | S1 | | main.rs:385:5:386:14 | struct S1 | -| main.rs:440:13:440:13 | y | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:440:13:440:13 | y | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:440:17:440:33 | MyThing {...} | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:440:17:440:33 | MyThing {...} | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:440:30:440:31 | S2 | | main.rs:387:5:388:14 | struct S2 | -| main.rs:442:26:442:26 | x | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:442:26:442:26 | x | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:442:26:442:31 | x.m1(...) | | main.rs:385:5:386:14 | struct S1 | -| main.rs:443:26:443:26 | y | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:443:26:443:26 | y | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:443:26:443:31 | y.m1(...) | | main.rs:387:5:388:14 | struct S2 | -| main.rs:445:13:445:13 | x | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:445:13:445:13 | x | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:445:13:445:13 | x | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:445:13:445:13 | x | Tr2 | main.rs:385:5:386:14 | struct S1 | -| main.rs:445:17:445:33 | MyThing {...} | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:445:17:445:33 | MyThing {...} | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:445:17:445:33 | MyThing {...} | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:445:17:445:33 | MyThing {...} | Tr2 | main.rs:385:5:386:14 | struct S1 | -| main.rs:445:30:445:31 | S1 | | main.rs:385:5:386:14 | struct S1 | -| main.rs:446:13:446:13 | y | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:446:13:446:13 | y | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:446:13:446:13 | y | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:446:13:446:13 | y | Tr2 | main.rs:387:5:388:14 | struct S2 | -| main.rs:446:17:446:33 | MyThing {...} | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:446:17:446:33 | MyThing {...} | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:446:17:446:33 | MyThing {...} | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:446:17:446:33 | MyThing {...} | Tr2 | main.rs:387:5:388:14 | struct S2 | -| main.rs:446:30:446:31 | S2 | | main.rs:387:5:388:14 | struct S2 | -| main.rs:448:26:448:26 | x | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:448:26:448:26 | x | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:448:26:448:26 | x | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:448:26:448:26 | x | Tr2 | main.rs:385:5:386:14 | struct S1 | -| main.rs:448:26:448:31 | x.m2(...) | | main.rs:385:5:386:14 | struct S1 | -| main.rs:449:26:449:26 | y | | main.rs:375:5:378:5 | struct MyThing | -| main.rs:449:26:449:26 | y | | main.rs:394:5:405:5 | trait MyTrait2 | -| main.rs:449:26:449:26 | y | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:449:26:449:26 | y | Tr2 | main.rs:387:5:388:14 | struct S2 | -| main.rs:449:26:449:31 | y.m2(...) | | main.rs:387:5:388:14 | struct S2 | -| main.rs:451:13:451:13 | x | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:451:13:451:13 | x | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:451:13:451:13 | x | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:451:13:451:13 | x | Tr3 | main.rs:385:5:386:14 | struct S1 | -| main.rs:451:17:451:34 | MyThing2 {...} | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:451:17:451:34 | MyThing2 {...} | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:451:17:451:34 | MyThing2 {...} | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:451:17:451:34 | MyThing2 {...} | Tr3 | main.rs:385:5:386:14 | struct S1 | -| main.rs:451:31:451:32 | S1 | | main.rs:385:5:386:14 | struct S1 | -| main.rs:452:13:452:13 | y | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:452:13:452:13 | y | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:452:13:452:13 | y | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:452:13:452:13 | y | Tr3 | main.rs:387:5:388:14 | struct S2 | -| main.rs:452:17:452:34 | MyThing2 {...} | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:452:17:452:34 | MyThing2 {...} | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:452:17:452:34 | MyThing2 {...} | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:452:17:452:34 | MyThing2 {...} | Tr3 | main.rs:387:5:388:14 | struct S2 | -| main.rs:452:31:452:32 | S2 | | main.rs:387:5:388:14 | struct S2 | -| main.rs:454:26:454:26 | x | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:454:26:454:26 | x | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:454:26:454:26 | x | A | main.rs:385:5:386:14 | struct S1 | -| main.rs:454:26:454:26 | x | Tr3 | main.rs:385:5:386:14 | struct S1 | -| main.rs:454:26:454:31 | x.m3(...) | | main.rs:385:5:386:14 | struct S1 | -| main.rs:455:26:455:26 | y | | main.rs:380:5:383:5 | struct MyThing2 | -| main.rs:455:26:455:26 | y | | main.rs:407:5:418:5 | trait MyTrait3 | -| main.rs:455:26:455:26 | y | A | main.rs:387:5:388:14 | struct S2 | -| main.rs:455:26:455:26 | y | Tr3 | main.rs:387:5:388:14 | struct S2 | -| main.rs:455:26:455:31 | y.m3(...) | | main.rs:387:5:388:14 | struct S2 | -| main.rs:473:22:473:22 | x | | file://:0:0:0:0 | & | -| main.rs:473:22:473:22 | x | &T | main.rs:473:11:473:19 | T | -| main.rs:473:35:475:5 | { ... } | | file://:0:0:0:0 | & | -| main.rs:473:35:475:5 | { ... } | &T | main.rs:473:11:473:19 | T | -| main.rs:474:9:474:9 | x | | file://:0:0:0:0 | & | -| main.rs:474:9:474:9 | x | &T | main.rs:473:11:473:19 | T | -| main.rs:478:17:478:20 | SelfParam | | main.rs:463:5:464:14 | struct S1 | -| main.rs:478:29:480:9 | { ... } | | main.rs:466:5:467:14 | struct S2 | -| main.rs:479:13:479:14 | S2 | | main.rs:466:5:467:14 | struct S2 | -| main.rs:483:21:483:21 | x | | main.rs:483:13:483:14 | T1 | -| main.rs:486:5:488:5 | { ... } | | main.rs:483:17:483:18 | T2 | -| main.rs:487:9:487:9 | x | | main.rs:483:13:483:14 | T1 | -| main.rs:487:9:487:16 | x.into(...) | | main.rs:483:17:483:18 | T2 | -| main.rs:491:13:491:13 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:491:17:491:18 | S1 | | main.rs:463:5:464:14 | struct S1 | -| main.rs:492:26:492:31 | id(...) | | file://:0:0:0:0 | & | -| main.rs:492:26:492:31 | id(...) | &T | main.rs:463:5:464:14 | struct S1 | -| main.rs:492:29:492:30 | &x | | file://:0:0:0:0 | & | -| main.rs:492:29:492:30 | &x | &T | main.rs:463:5:464:14 | struct S1 | -| main.rs:492:30:492:30 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:494:13:494:13 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:494:17:494:18 | S1 | | main.rs:463:5:464:14 | struct S1 | -| main.rs:495:26:495:37 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:495:26:495:37 | id::<...>(...) | &T | main.rs:463:5:464:14 | struct S1 | -| main.rs:495:35:495:36 | &x | | file://:0:0:0:0 | & | -| main.rs:495:35:495:36 | &x | &T | main.rs:463:5:464:14 | struct S1 | -| main.rs:495:36:495:36 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:497:13:497:13 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:497:17:497:18 | S1 | | main.rs:463:5:464:14 | struct S1 | -| main.rs:498:26:498:44 | id::<...>(...) | | file://:0:0:0:0 | & | -| main.rs:498:26:498:44 | id::<...>(...) | &T | main.rs:463:5:464:14 | struct S1 | -| main.rs:498:42:498:43 | &x | | file://:0:0:0:0 | & | -| main.rs:498:42:498:43 | &x | &T | main.rs:463:5:464:14 | struct S1 | -| main.rs:498:43:498:43 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:500:13:500:13 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:500:17:500:18 | S1 | | main.rs:463:5:464:14 | struct S1 | -| main.rs:501:9:501:25 | into::<...>(...) | | main.rs:466:5:467:14 | struct S2 | -| main.rs:501:24:501:24 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:503:13:503:13 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:503:17:503:18 | S1 | | main.rs:463:5:464:14 | struct S1 | -| main.rs:504:13:504:13 | y | | main.rs:466:5:467:14 | struct S2 | -| main.rs:504:21:504:27 | into(...) | | main.rs:466:5:467:14 | struct S2 | -| main.rs:504:26:504:26 | x | | main.rs:463:5:464:14 | struct S1 | -| main.rs:534:13:534:14 | p1 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:534:13:534:14 | p1 | Fst | main.rs:517:5:518:14 | struct S1 | -| main.rs:534:13:534:14 | p1 | Snd | main.rs:520:5:521:14 | struct S2 | -| main.rs:534:26:534:53 | ...::PairBoth(...) | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:534:26:534:53 | ...::PairBoth(...) | Fst | main.rs:517:5:518:14 | struct S1 | -| main.rs:534:26:534:53 | ...::PairBoth(...) | Snd | main.rs:520:5:521:14 | struct S2 | -| main.rs:534:47:534:48 | S1 | | main.rs:517:5:518:14 | struct S1 | -| main.rs:534:51:534:52 | S2 | | main.rs:520:5:521:14 | struct S2 | -| main.rs:535:26:535:27 | p1 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:535:26:535:27 | p1 | Fst | main.rs:517:5:518:14 | struct S1 | -| main.rs:535:26:535:27 | p1 | Snd | main.rs:520:5:521:14 | struct S2 | -| main.rs:538:13:538:14 | p2 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:538:26:538:47 | ...::PairNone(...) | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:539:26:539:27 | p2 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:542:13:542:14 | p3 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:542:13:542:14 | p3 | Snd | main.rs:523:5:524:14 | struct S3 | -| main.rs:542:34:542:56 | ...::PairSnd(...) | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:542:34:542:56 | ...::PairSnd(...) | Snd | main.rs:523:5:524:14 | struct S3 | -| main.rs:542:54:542:55 | S3 | | main.rs:523:5:524:14 | struct S3 | -| main.rs:543:26:543:27 | p3 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:543:26:543:27 | p3 | Snd | main.rs:523:5:524:14 | struct S3 | -| main.rs:546:13:546:14 | p3 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:546:13:546:14 | p3 | Fst | main.rs:523:5:524:14 | struct S3 | -| main.rs:546:35:546:56 | ...::PairNone(...) | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:546:35:546:56 | ...::PairNone(...) | Fst | main.rs:523:5:524:14 | struct S3 | -| main.rs:547:26:547:27 | p3 | | main.rs:509:5:515:5 | enum PairOption | -| main.rs:547:26:547:27 | p3 | Fst | main.rs:523:5:524:14 | struct S3 | -| main.rs:559:16:559:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:559:16:559:24 | SelfParam | &T | main.rs:558:5:564:5 | trait MyTrait | -| main.rs:559:16:559:24 | SelfParam | &T.S | main.rs:558:19:558:19 | S | -| main.rs:559:27:559:31 | value | | main.rs:558:19:558:19 | S | -| main.rs:561:21:561:29 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:561:21:561:29 | SelfParam | &T | main.rs:558:5:564:5 | trait MyTrait | -| main.rs:561:21:561:29 | SelfParam | &T.S | main.rs:558:19:558:19 | S | -| main.rs:561:32:561:36 | value | | main.rs:558:19:558:19 | S | -| main.rs:562:13:562:16 | self | | file://:0:0:0:0 | & | -| main.rs:562:13:562:16 | self | &T | main.rs:558:5:564:5 | trait MyTrait | -| main.rs:562:13:562:16 | self | &T.S | main.rs:558:19:558:19 | S | -| main.rs:562:22:562:26 | value | | main.rs:558:19:558:19 | S | -| main.rs:567:16:567:24 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:567:16:567:24 | SelfParam | &T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:567:16:567:24 | SelfParam | &T.T | main.rs:566:10:566:10 | T | -| main.rs:567:27:567:31 | value | | main.rs:566:10:566:10 | T | -| main.rs:571:26:573:9 | { ... } | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:571:26:573:9 | { ... } | T | main.rs:570:10:570:10 | T | -| main.rs:572:13:572:30 | ...::MyNone(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:572:13:572:30 | ...::MyNone(...) | T | main.rs:570:10:570:10 | T | -| main.rs:577:20:577:23 | SelfParam | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:577:20:577:23 | SelfParam | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:577:20:577:23 | SelfParam | T.T | main.rs:576:10:576:10 | T | -| main.rs:577:41:582:9 | { ... } | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:577:41:582:9 | { ... } | T | main.rs:576:10:576:10 | T | -| main.rs:578:13:581:13 | match self { ... } | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:578:13:581:13 | match self { ... } | T | main.rs:576:10:576:10 | T | -| main.rs:578:19:578:22 | self | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:578:19:578:22 | self | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:578:19:578:22 | self | T.T | main.rs:576:10:576:10 | T | -| main.rs:579:39:579:56 | ...::MyNone(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:579:39:579:56 | ...::MyNone(...) | T | main.rs:576:10:576:10 | T | -| main.rs:580:34:580:34 | x | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:580:34:580:34 | x | T | main.rs:576:10:576:10 | T | -| main.rs:580:40:580:40 | x | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:580:40:580:40 | x | T | main.rs:576:10:576:10 | T | -| main.rs:589:13:589:14 | x1 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:589:18:589:37 | ...::new(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:590:26:590:27 | x1 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:592:13:592:18 | mut x2 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:592:13:592:18 | mut x2 | T | main.rs:585:5:586:13 | struct S | -| main.rs:592:22:592:36 | ...::new(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:592:22:592:36 | ...::new(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:593:9:593:10 | x2 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:593:9:593:10 | x2 | T | main.rs:585:5:586:13 | struct S | -| main.rs:593:16:593:16 | S | | main.rs:585:5:586:13 | struct S | -| main.rs:594:26:594:27 | x2 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:594:26:594:27 | x2 | T | main.rs:585:5:586:13 | struct S | -| main.rs:596:13:596:18 | mut x3 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:596:13:596:18 | mut x3 | | main.rs:558:5:564:5 | trait MyTrait | -| main.rs:596:13:596:18 | mut x3 | S | main.rs:585:5:586:13 | struct S | -| main.rs:596:22:596:36 | ...::new(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:596:22:596:36 | ...::new(...) | | main.rs:558:5:564:5 | trait MyTrait | -| main.rs:596:22:596:36 | ...::new(...) | S | main.rs:585:5:586:13 | struct S | -| main.rs:597:9:597:10 | x3 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:597:9:597:10 | x3 | | main.rs:558:5:564:5 | trait MyTrait | -| main.rs:597:9:597:10 | x3 | S | main.rs:585:5:586:13 | struct S | -| main.rs:597:21:597:21 | S | | main.rs:585:5:586:13 | struct S | -| main.rs:598:26:598:27 | x3 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:598:26:598:27 | x3 | | main.rs:558:5:564:5 | trait MyTrait | -| main.rs:598:26:598:27 | x3 | S | main.rs:585:5:586:13 | struct S | -| main.rs:600:13:600:18 | mut x4 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:600:13:600:18 | mut x4 | T | main.rs:585:5:586:13 | struct S | -| main.rs:600:22:600:36 | ...::new(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:600:22:600:36 | ...::new(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:601:23:601:29 | &mut x4 | | file://:0:0:0:0 | & | -| main.rs:601:23:601:29 | &mut x4 | &T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:601:23:601:29 | &mut x4 | &T.T | main.rs:585:5:586:13 | struct S | -| main.rs:601:28:601:29 | x4 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:601:28:601:29 | x4 | T | main.rs:585:5:586:13 | struct S | -| main.rs:601:32:601:32 | S | | main.rs:585:5:586:13 | struct S | -| main.rs:602:26:602:27 | x4 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:602:26:602:27 | x4 | T | main.rs:585:5:586:13 | struct S | -| main.rs:604:13:604:14 | x5 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:604:13:604:14 | x5 | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:604:13:604:14 | x5 | T.T | main.rs:585:5:586:13 | struct S | -| main.rs:604:18:604:58 | ...::MySome(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:604:18:604:58 | ...::MySome(...) | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:604:18:604:58 | ...::MySome(...) | T.T | main.rs:585:5:586:13 | struct S | -| main.rs:604:35:604:57 | ...::MyNone(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:604:35:604:57 | ...::MyNone(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:605:26:605:27 | x5 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:605:26:605:27 | x5 | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:605:26:605:27 | x5 | T.T | main.rs:585:5:586:13 | struct S | -| main.rs:607:13:607:14 | x6 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:607:13:607:14 | x6 | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:607:13:607:14 | x6 | T.T | main.rs:585:5:586:13 | struct S | -| main.rs:607:18:607:58 | ...::MySome(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:607:18:607:58 | ...::MySome(...) | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:607:18:607:58 | ...::MySome(...) | T.T | main.rs:585:5:586:13 | struct S | -| main.rs:607:35:607:57 | ...::MyNone(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:607:35:607:57 | ...::MyNone(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:608:26:608:61 | ...::flatten(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:608:26:608:61 | ...::flatten(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:608:59:608:60 | x6 | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:608:59:608:60 | x6 | T | main.rs:552:5:556:5 | enum MyOption | -| main.rs:608:59:608:60 | x6 | T.T | main.rs:585:5:586:13 | struct S | -| main.rs:610:13:610:19 | from_if | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:610:13:610:19 | from_if | T | main.rs:585:5:586:13 | struct S | -| main.rs:610:23:614:9 | if ... {...} else {...} | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:610:23:614:9 | if ... {...} else {...} | T | main.rs:585:5:586:13 | struct S | -| main.rs:610:36:612:9 | { ... } | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:610:36:612:9 | { ... } | T | main.rs:585:5:586:13 | struct S | -| main.rs:611:13:611:30 | ...::MyNone(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:611:13:611:30 | ...::MyNone(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:612:16:614:9 | { ... } | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:612:16:614:9 | { ... } | T | main.rs:585:5:586:13 | struct S | -| main.rs:613:13:613:31 | ...::MySome(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:613:13:613:31 | ...::MySome(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:613:30:613:30 | S | | main.rs:585:5:586:13 | struct S | -| main.rs:615:26:615:32 | from_if | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:615:26:615:32 | from_if | T | main.rs:585:5:586:13 | struct S | -| main.rs:617:13:617:22 | from_match | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:617:13:617:22 | from_match | T | main.rs:585:5:586:13 | struct S | -| main.rs:617:26:620:9 | match ... { ... } | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:617:26:620:9 | match ... { ... } | T | main.rs:585:5:586:13 | struct S | -| main.rs:618:21:618:38 | ...::MyNone(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:618:21:618:38 | ...::MyNone(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:619:22:619:40 | ...::MySome(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:619:22:619:40 | ...::MySome(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:619:39:619:39 | S | | main.rs:585:5:586:13 | struct S | -| main.rs:621:26:621:35 | from_match | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:621:26:621:35 | from_match | T | main.rs:585:5:586:13 | struct S | -| main.rs:623:13:623:21 | from_loop | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:623:13:623:21 | from_loop | T | main.rs:585:5:586:13 | struct S | -| main.rs:623:25:628:9 | loop { ... } | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:623:25:628:9 | loop { ... } | T | main.rs:585:5:586:13 | struct S | -| main.rs:625:23:625:40 | ...::MyNone(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:625:23:625:40 | ...::MyNone(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:627:19:627:37 | ...::MySome(...) | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:627:19:627:37 | ...::MySome(...) | T | main.rs:585:5:586:13 | struct S | -| main.rs:627:36:627:36 | S | | main.rs:585:5:586:13 | struct S | -| main.rs:629:26:629:34 | from_loop | | main.rs:552:5:556:5 | enum MyOption | -| main.rs:629:26:629:34 | from_loop | T | main.rs:585:5:586:13 | struct S | -| main.rs:642:15:642:18 | SelfParam | | main.rs:635:5:636:19 | struct S | -| main.rs:642:15:642:18 | SelfParam | T | main.rs:641:10:641:10 | T | -| main.rs:642:26:644:9 | { ... } | | main.rs:641:10:641:10 | T | -| main.rs:643:13:643:16 | self | | main.rs:635:5:636:19 | struct S | -| main.rs:643:13:643:16 | self | T | main.rs:641:10:641:10 | T | -| main.rs:643:13:643:18 | self.0 | | main.rs:641:10:641:10 | T | -| main.rs:646:15:646:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:646:15:646:19 | SelfParam | &T | main.rs:635:5:636:19 | struct S | -| main.rs:646:15:646:19 | SelfParam | &T.T | main.rs:641:10:641:10 | T | -| main.rs:646:28:648:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:646:28:648:9 | { ... } | &T | main.rs:641:10:641:10 | T | -| main.rs:647:13:647:19 | &... | | file://:0:0:0:0 | & | -| main.rs:647:13:647:19 | &... | &T | main.rs:641:10:641:10 | T | -| main.rs:647:14:647:17 | self | | file://:0:0:0:0 | & | -| main.rs:647:14:647:17 | self | &T | main.rs:635:5:636:19 | struct S | -| main.rs:647:14:647:17 | self | &T.T | main.rs:641:10:641:10 | T | -| main.rs:647:14:647:19 | self.0 | | main.rs:641:10:641:10 | T | -| main.rs:650:15:650:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:650:15:650:25 | SelfParam | &T | main.rs:635:5:636:19 | struct S | -| main.rs:650:15:650:25 | SelfParam | &T.T | main.rs:641:10:641:10 | T | -| main.rs:650:34:652:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:650:34:652:9 | { ... } | &T | main.rs:641:10:641:10 | T | -| main.rs:651:13:651:19 | &... | | file://:0:0:0:0 | & | -| main.rs:651:13:651:19 | &... | &T | main.rs:641:10:641:10 | T | -| main.rs:651:14:651:17 | self | | file://:0:0:0:0 | & | -| main.rs:651:14:651:17 | self | &T | main.rs:635:5:636:19 | struct S | -| main.rs:651:14:651:17 | self | &T.T | main.rs:641:10:641:10 | T | -| main.rs:651:14:651:19 | self.0 | | main.rs:641:10:641:10 | T | -| main.rs:656:13:656:14 | x1 | | main.rs:635:5:636:19 | struct S | -| main.rs:656:13:656:14 | x1 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:656:18:656:22 | S(...) | | main.rs:635:5:636:19 | struct S | -| main.rs:656:18:656:22 | S(...) | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:656:20:656:21 | S2 | | main.rs:638:5:639:14 | struct S2 | -| main.rs:657:26:657:27 | x1 | | main.rs:635:5:636:19 | struct S | -| main.rs:657:26:657:27 | x1 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:657:26:657:32 | x1.m1(...) | | main.rs:638:5:639:14 | struct S2 | -| main.rs:659:13:659:14 | x2 | | main.rs:635:5:636:19 | struct S | -| main.rs:659:13:659:14 | x2 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:659:18:659:22 | S(...) | | main.rs:635:5:636:19 | struct S | -| main.rs:659:18:659:22 | S(...) | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:659:20:659:21 | S2 | | main.rs:638:5:639:14 | struct S2 | -| main.rs:661:26:661:27 | x2 | | main.rs:635:5:636:19 | struct S | -| main.rs:661:26:661:27 | x2 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:661:26:661:32 | x2.m2(...) | | file://:0:0:0:0 | & | -| main.rs:661:26:661:32 | x2.m2(...) | &T | main.rs:638:5:639:14 | struct S2 | -| main.rs:662:26:662:27 | x2 | | main.rs:635:5:636:19 | struct S | -| main.rs:662:26:662:27 | x2 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:662:26:662:32 | x2.m3(...) | | file://:0:0:0:0 | & | -| main.rs:662:26:662:32 | x2.m3(...) | &T | main.rs:638:5:639:14 | struct S2 | -| main.rs:664:13:664:14 | x3 | | main.rs:635:5:636:19 | struct S | -| main.rs:664:13:664:14 | x3 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:664:18:664:22 | S(...) | | main.rs:635:5:636:19 | struct S | -| main.rs:664:18:664:22 | S(...) | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:664:20:664:21 | S2 | | main.rs:638:5:639:14 | struct S2 | -| main.rs:666:26:666:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:666:26:666:41 | ...::m2(...) | &T | main.rs:638:5:639:14 | struct S2 | -| main.rs:666:38:666:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:666:38:666:40 | &x3 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:666:38:666:40 | &x3 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:666:39:666:40 | x3 | | main.rs:635:5:636:19 | struct S | -| main.rs:666:39:666:40 | x3 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:667:26:667:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:667:26:667:41 | ...::m3(...) | &T | main.rs:638:5:639:14 | struct S2 | -| main.rs:667:38:667:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:667:38:667:40 | &x3 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:667:38:667:40 | &x3 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:667:39:667:40 | x3 | | main.rs:635:5:636:19 | struct S | -| main.rs:667:39:667:40 | x3 | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:669:13:669:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:669:13:669:14 | x4 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:669:13:669:14 | x4 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:669:18:669:23 | &... | | file://:0:0:0:0 | & | -| main.rs:669:18:669:23 | &... | &T | main.rs:635:5:636:19 | struct S | -| main.rs:669:18:669:23 | &... | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:669:19:669:23 | S(...) | | main.rs:635:5:636:19 | struct S | -| main.rs:669:19:669:23 | S(...) | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:669:21:669:22 | S2 | | main.rs:638:5:639:14 | struct S2 | -| main.rs:671:26:671:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:671:26:671:27 | x4 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:671:26:671:27 | x4 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:671:26:671:32 | x4.m2(...) | | file://:0:0:0:0 | & | -| main.rs:671:26:671:32 | x4.m2(...) | &T | main.rs:638:5:639:14 | struct S2 | -| main.rs:672:26:672:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:672:26:672:27 | x4 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:672:26:672:27 | x4 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:672:26:672:32 | x4.m3(...) | | file://:0:0:0:0 | & | -| main.rs:672:26:672:32 | x4.m3(...) | &T | main.rs:638:5:639:14 | struct S2 | -| main.rs:674:13:674:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:674:13:674:14 | x5 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:674:13:674:14 | x5 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:674:18:674:23 | &... | | file://:0:0:0:0 | & | -| main.rs:674:18:674:23 | &... | &T | main.rs:635:5:636:19 | struct S | -| main.rs:674:18:674:23 | &... | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:674:19:674:23 | S(...) | | main.rs:635:5:636:19 | struct S | -| main.rs:674:19:674:23 | S(...) | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:674:21:674:22 | S2 | | main.rs:638:5:639:14 | struct S2 | -| main.rs:676:26:676:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:676:26:676:27 | x5 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:676:26:676:27 | x5 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:676:26:676:32 | x5.m1(...) | | main.rs:638:5:639:14 | struct S2 | -| main.rs:677:26:677:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:677:26:677:27 | x5 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:677:26:677:27 | x5 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:677:26:677:29 | x5.0 | | main.rs:638:5:639:14 | struct S2 | -| main.rs:679:13:679:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:679:13:679:14 | x6 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:679:13:679:14 | x6 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:679:18:679:23 | &... | | file://:0:0:0:0 | & | -| main.rs:679:18:679:23 | &... | &T | main.rs:635:5:636:19 | struct S | -| main.rs:679:18:679:23 | &... | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:679:19:679:23 | S(...) | | main.rs:635:5:636:19 | struct S | -| main.rs:679:19:679:23 | S(...) | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:679:21:679:22 | S2 | | main.rs:638:5:639:14 | struct S2 | -| main.rs:681:26:681:30 | (...) | | main.rs:635:5:636:19 | struct S | -| main.rs:681:26:681:30 | (...) | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:681:26:681:35 | ... .m1(...) | | main.rs:638:5:639:14 | struct S2 | -| main.rs:681:27:681:29 | * ... | | main.rs:635:5:636:19 | struct S | -| main.rs:681:27:681:29 | * ... | T | main.rs:638:5:639:14 | struct S2 | -| main.rs:681:28:681:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:681:28:681:29 | x6 | &T | main.rs:635:5:636:19 | struct S | -| main.rs:681:28:681:29 | x6 | &T.T | main.rs:638:5:639:14 | struct S2 | -| main.rs:687:16:687:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:687:16:687:20 | SelfParam | &T | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:689:16:689:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:689:16:689:20 | SelfParam | &T | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:689:32:691:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:689:32:691:9 | { ... } | &T | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:690:13:690:16 | self | | file://:0:0:0:0 | & | -| main.rs:690:13:690:16 | self | &T | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:690:13:690:22 | self.foo(...) | | file://:0:0:0:0 | & | -| main.rs:690:13:690:22 | self.foo(...) | &T | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:697:16:697:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:697:16:697:20 | SelfParam | &T | main.rs:694:5:694:20 | struct MyStruct | -| main.rs:697:36:699:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:697:36:699:9 | { ... } | &T | main.rs:694:5:694:20 | struct MyStruct | -| main.rs:698:13:698:16 | self | | file://:0:0:0:0 | & | -| main.rs:698:13:698:16 | self | &T | main.rs:694:5:694:20 | struct MyStruct | -| main.rs:703:13:703:13 | x | | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:703:13:703:13 | x | | main.rs:694:5:694:20 | struct MyStruct | -| main.rs:703:17:703:24 | MyStruct | | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:703:17:703:24 | MyStruct | | main.rs:694:5:694:20 | struct MyStruct | -| main.rs:704:9:704:9 | x | | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:704:9:704:9 | x | | main.rs:694:5:694:20 | struct MyStruct | -| main.rs:704:9:704:15 | x.bar(...) | | file://:0:0:0:0 | & | -| main.rs:704:9:704:15 | x.bar(...) | &T | main.rs:686:5:692:5 | trait MyTrait | -| main.rs:704:9:704:15 | x.bar(...) | &T | main.rs:694:5:694:20 | struct MyStruct | -| main.rs:714:16:714:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:714:16:714:20 | SelfParam | &T | main.rs:711:5:711:26 | struct MyStruct | -| main.rs:714:16:714:20 | SelfParam | &T.T | main.rs:713:10:713:10 | T | -| main.rs:714:32:716:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:714:32:716:9 | { ... } | &T | main.rs:711:5:711:26 | struct MyStruct | -| main.rs:714:32:716:9 | { ... } | &T.T | main.rs:713:10:713:10 | T | -| main.rs:715:13:715:16 | self | | file://:0:0:0:0 | & | -| main.rs:715:13:715:16 | self | &T | main.rs:711:5:711:26 | struct MyStruct | -| main.rs:715:13:715:16 | self | &T.T | main.rs:713:10:713:10 | T | -| main.rs:720:13:720:13 | x | | main.rs:711:5:711:26 | struct MyStruct | -| main.rs:720:13:720:13 | x | T | main.rs:709:5:709:13 | struct S | -| main.rs:720:17:720:27 | MyStruct(...) | | main.rs:711:5:711:26 | struct MyStruct | -| main.rs:720:17:720:27 | MyStruct(...) | T | main.rs:709:5:709:13 | struct S | -| main.rs:720:26:720:26 | S | | main.rs:709:5:709:13 | struct S | -| main.rs:721:9:721:9 | x | | main.rs:711:5:711:26 | struct MyStruct | -| main.rs:721:9:721:9 | x | T | main.rs:709:5:709:13 | struct S | -| main.rs:721:9:721:15 | x.foo(...) | | file://:0:0:0:0 | & | -| main.rs:721:9:721:15 | x.foo(...) | &T | main.rs:711:5:711:26 | struct MyStruct | -| main.rs:721:9:721:15 | x.foo(...) | &T.T | main.rs:709:5:709:13 | struct S | -| main.rs:729:15:729:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:729:15:729:19 | SelfParam | &T | main.rs:726:5:726:13 | struct S | -| main.rs:729:31:731:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:729:31:731:9 | { ... } | &T | main.rs:726:5:726:13 | struct S | -| main.rs:730:13:730:19 | &... | | file://:0:0:0:0 | & | -| main.rs:730:13:730:19 | &... | &T | main.rs:726:5:726:13 | struct S | -| main.rs:730:14:730:19 | &... | | file://:0:0:0:0 | & | -| main.rs:730:14:730:19 | &... | &T | main.rs:726:5:726:13 | struct S | -| main.rs:730:15:730:19 | &self | | file://:0:0:0:0 | & | -| main.rs:730:15:730:19 | &self | &T | main.rs:726:5:726:13 | struct S | -| main.rs:730:16:730:19 | self | | file://:0:0:0:0 | & | -| main.rs:730:16:730:19 | self | &T | main.rs:726:5:726:13 | struct S | -| main.rs:733:15:733:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:733:15:733:25 | SelfParam | &T | main.rs:726:5:726:13 | struct S | -| main.rs:733:37:735:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:733:37:735:9 | { ... } | &T | main.rs:726:5:726:13 | struct S | -| main.rs:734:13:734:19 | &... | | file://:0:0:0:0 | & | -| main.rs:734:13:734:19 | &... | &T | main.rs:726:5:726:13 | struct S | -| main.rs:734:14:734:19 | &... | | file://:0:0:0:0 | & | -| main.rs:734:14:734:19 | &... | &T | main.rs:726:5:726:13 | struct S | -| main.rs:734:15:734:19 | &self | | file://:0:0:0:0 | & | -| main.rs:734:15:734:19 | &self | &T | main.rs:726:5:726:13 | struct S | -| main.rs:734:16:734:19 | self | | file://:0:0:0:0 | & | -| main.rs:734:16:734:19 | self | &T | main.rs:726:5:726:13 | struct S | -| main.rs:737:15:737:15 | x | | file://:0:0:0:0 | & | -| main.rs:737:15:737:15 | x | &T | main.rs:726:5:726:13 | struct S | -| main.rs:737:34:739:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:737:34:739:9 | { ... } | &T | main.rs:726:5:726:13 | struct S | -| main.rs:738:13:738:13 | x | | file://:0:0:0:0 | & | -| main.rs:738:13:738:13 | x | &T | main.rs:726:5:726:13 | struct S | -| main.rs:741:15:741:15 | x | | file://:0:0:0:0 | & | -| main.rs:741:15:741:15 | x | &T | main.rs:726:5:726:13 | struct S | -| main.rs:741:34:743:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:741:34:743:9 | { ... } | &T | main.rs:726:5:726:13 | struct S | -| main.rs:742:13:742:16 | &... | | file://:0:0:0:0 | & | -| main.rs:742:13:742:16 | &... | &T | main.rs:726:5:726:13 | struct S | -| main.rs:742:14:742:16 | &... | | file://:0:0:0:0 | & | -| main.rs:742:14:742:16 | &... | &T | main.rs:726:5:726:13 | struct S | -| main.rs:742:15:742:16 | &x | | file://:0:0:0:0 | & | -| main.rs:742:15:742:16 | &x | &T | main.rs:726:5:726:13 | struct S | -| main.rs:742:16:742:16 | x | | file://:0:0:0:0 | & | -| main.rs:742:16:742:16 | x | &T | main.rs:726:5:726:13 | struct S | -| main.rs:747:13:747:13 | x | | main.rs:726:5:726:13 | struct S | -| main.rs:747:17:747:20 | S {...} | | main.rs:726:5:726:13 | struct S | -| main.rs:748:9:748:9 | x | | main.rs:726:5:726:13 | struct S | -| main.rs:748:9:748:14 | x.f1(...) | | file://:0:0:0:0 | & | -| main.rs:748:9:748:14 | x.f1(...) | &T | main.rs:726:5:726:13 | struct S | -| main.rs:749:9:749:9 | x | | main.rs:726:5:726:13 | struct S | -| main.rs:749:9:749:14 | x.f2(...) | | file://:0:0:0:0 | & | -| main.rs:749:9:749:14 | x.f2(...) | &T | main.rs:726:5:726:13 | struct S | -| main.rs:750:9:750:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:750:9:750:17 | ...::f3(...) | &T | main.rs:726:5:726:13 | struct S | -| main.rs:750:15:750:16 | &x | | file://:0:0:0:0 | & | -| main.rs:750:15:750:16 | &x | &T | main.rs:726:5:726:13 | struct S | -| main.rs:750:16:750:16 | x | | main.rs:726:5:726:13 | struct S | -| main.rs:756:5:756:20 | ...::f(...) | | main.rs:67:5:67:21 | struct Foo | -| main.rs:757:5:757:60 | ...::g(...) | | main.rs:67:5:67:21 | struct Foo | -| main.rs:757:20:757:38 | ...::Foo {...} | | main.rs:67:5:67:21 | struct Foo | -| main.rs:757:41:757:59 | ...::Foo {...} | | main.rs:67:5:67:21 | struct Foo | +| main.rs:304:26:304:26 | x | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:304:26:304:26 | x | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:304:26:304:26 | x | A | main.rs:262:5:263:14 | struct S1 | +| main.rs:304:26:304:26 | x | T | main.rs:262:5:263:14 | struct S1 | +| main.rs:304:26:304:31 | x.m2(...) | | main.rs:262:5:263:14 | struct S1 | +| main.rs:305:26:305:26 | y | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:305:26:305:26 | y | | main.rs:267:5:276:5 | trait MyTrait | +| main.rs:305:26:305:26 | y | A | main.rs:264:5:265:14 | struct S2 | +| main.rs:305:26:305:26 | y | T | main.rs:264:5:265:14 | struct S2 | +| main.rs:305:26:305:31 | y.m2(...) | | main.rs:264:5:265:14 | struct S2 | +| main.rs:307:13:307:14 | x2 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:307:13:307:14 | x2 | T | main.rs:262:5:263:14 | struct S1 | +| main.rs:307:18:307:34 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:307:18:307:34 | MyThing {...} | T | main.rs:262:5:263:14 | struct S1 | +| main.rs:307:31:307:32 | S1 | | main.rs:262:5:263:14 | struct S1 | +| main.rs:308:13:308:14 | y2 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:308:13:308:14 | y2 | T | main.rs:264:5:265:14 | struct S2 | +| main.rs:308:18:308:34 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:308:18:308:34 | MyThing {...} | T | main.rs:264:5:265:14 | struct S2 | +| main.rs:308:31:308:32 | S2 | | main.rs:264:5:265:14 | struct S2 | +| main.rs:310:26:310:42 | call_trait_m1(...) | | main.rs:262:5:263:14 | struct S1 | +| main.rs:310:40:310:41 | x2 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:310:40:310:41 | x2 | T | main.rs:262:5:263:14 | struct S1 | +| main.rs:311:26:311:42 | call_trait_m1(...) | | main.rs:264:5:265:14 | struct S2 | +| main.rs:311:40:311:41 | y2 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:311:40:311:41 | y2 | T | main.rs:264:5:265:14 | struct S2 | +| main.rs:313:13:313:14 | x3 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:313:13:313:14 | x3 | T | main.rs:257:5:260:5 | struct MyThing | +| main.rs:313:13:313:14 | x3 | T.T | main.rs:262:5:263:14 | struct S1 | +| main.rs:313:18:315:9 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:313:18:315:9 | MyThing {...} | T | main.rs:257:5:260:5 | struct MyThing | +| main.rs:313:18:315:9 | MyThing {...} | T.T | main.rs:262:5:263:14 | struct S1 | +| main.rs:314:16:314:32 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:314:16:314:32 | MyThing {...} | T | main.rs:262:5:263:14 | struct S1 | +| main.rs:314:29:314:30 | S1 | | main.rs:262:5:263:14 | struct S1 | +| main.rs:316:13:316:14 | y3 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:316:13:316:14 | y3 | T | main.rs:257:5:260:5 | struct MyThing | +| main.rs:316:13:316:14 | y3 | T.T | main.rs:264:5:265:14 | struct S2 | +| main.rs:316:18:318:9 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:316:18:318:9 | MyThing {...} | T | main.rs:257:5:260:5 | struct MyThing | +| main.rs:316:18:318:9 | MyThing {...} | T.T | main.rs:264:5:265:14 | struct S2 | +| main.rs:317:16:317:32 | MyThing {...} | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:317:16:317:32 | MyThing {...} | T | main.rs:264:5:265:14 | struct S2 | +| main.rs:317:29:317:30 | S2 | | main.rs:264:5:265:14 | struct S2 | +| main.rs:320:26:320:48 | call_trait_thing_m1(...) | | main.rs:262:5:263:14 | struct S1 | +| main.rs:320:46:320:47 | x3 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:320:46:320:47 | x3 | T | main.rs:257:5:260:5 | struct MyThing | +| main.rs:320:46:320:47 | x3 | T.T | main.rs:262:5:263:14 | struct S1 | +| main.rs:321:26:321:48 | call_trait_thing_m1(...) | | main.rs:264:5:265:14 | struct S2 | +| main.rs:321:46:321:47 | y3 | | main.rs:257:5:260:5 | struct MyThing | +| main.rs:321:46:321:47 | y3 | T | main.rs:257:5:260:5 | struct MyThing | +| main.rs:321:46:321:47 | y3 | T.T | main.rs:264:5:265:14 | struct S2 | +| main.rs:329:15:329:18 | SelfParam | | main.rs:326:5:338:5 | trait MyTrait | +| main.rs:331:15:331:18 | SelfParam | | main.rs:326:5:338:5 | trait MyTrait | +| main.rs:346:15:346:18 | SelfParam | | main.rs:340:5:341:13 | struct S | +| main.rs:346:45:348:9 | { ... } | | main.rs:340:5:341:13 | struct S | +| main.rs:347:13:347:13 | S | | main.rs:340:5:341:13 | struct S | +| main.rs:352:13:352:13 | x | | main.rs:340:5:341:13 | struct S | +| main.rs:352:17:352:17 | S | | main.rs:340:5:341:13 | struct S | +| main.rs:353:26:353:26 | x | | main.rs:340:5:341:13 | struct S | +| main.rs:353:26:353:31 | x.m1(...) | | main.rs:340:5:341:13 | struct S | +| main.rs:355:13:355:13 | x | | main.rs:326:5:338:5 | trait MyTrait | +| main.rs:355:13:355:13 | x | | main.rs:340:5:341:13 | struct S | +| main.rs:355:17:355:17 | S | | main.rs:326:5:338:5 | trait MyTrait | +| main.rs:355:17:355:17 | S | | main.rs:340:5:341:13 | struct S | +| main.rs:356:26:356:26 | x | | main.rs:326:5:338:5 | trait MyTrait | +| main.rs:356:26:356:26 | x | | main.rs:340:5:341:13 | struct S | +| main.rs:373:15:373:18 | SelfParam | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:373:15:373:18 | SelfParam | A | main.rs:372:10:372:10 | T | +| main.rs:373:26:378:9 | { ... } | | main.rs:372:10:372:10 | T | +| main.rs:374:13:377:13 | match self { ... } | | main.rs:372:10:372:10 | T | +| main.rs:374:19:374:22 | self | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:374:19:374:22 | self | A | main.rs:372:10:372:10 | T | +| main.rs:375:28:375:28 | a | | main.rs:372:10:372:10 | T | +| main.rs:375:34:375:34 | a | | main.rs:372:10:372:10 | T | +| main.rs:376:30:376:30 | a | | main.rs:372:10:372:10 | T | +| main.rs:376:37:376:37 | a | | main.rs:372:10:372:10 | T | +| main.rs:382:13:382:13 | x | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:382:13:382:13 | x | A | main.rs:367:5:368:14 | struct S1 | +| main.rs:382:17:382:30 | ...::C1(...) | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:382:17:382:30 | ...::C1(...) | A | main.rs:367:5:368:14 | struct S1 | +| main.rs:382:28:382:29 | S1 | | main.rs:367:5:368:14 | struct S1 | +| main.rs:383:13:383:13 | y | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:383:13:383:13 | y | A | main.rs:369:5:370:14 | struct S2 | +| main.rs:383:17:383:36 | ...::C2 {...} | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:383:17:383:36 | ...::C2 {...} | A | main.rs:369:5:370:14 | struct S2 | +| main.rs:383:33:383:34 | S2 | | main.rs:369:5:370:14 | struct S2 | +| main.rs:385:26:385:26 | x | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:385:26:385:26 | x | A | main.rs:367:5:368:14 | struct S1 | +| main.rs:385:26:385:31 | x.m1(...) | | main.rs:367:5:368:14 | struct S1 | +| main.rs:386:26:386:26 | y | | main.rs:361:5:365:5 | enum MyEnum | +| main.rs:386:26:386:26 | y | A | main.rs:369:5:370:14 | struct S2 | +| main.rs:386:26:386:31 | y.m1(...) | | main.rs:369:5:370:14 | struct S2 | +| main.rs:407:15:407:18 | SelfParam | | main.rs:406:5:408:5 | trait MyTrait1 | +| main.rs:407:15:407:18 | SelfParam | Tr1 | main.rs:406:20:406:22 | Tr1 | +| main.rs:411:15:411:18 | SelfParam | | main.rs:406:5:408:5 | trait MyTrait1 | +| main.rs:411:15:411:18 | SelfParam | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:411:15:411:18 | SelfParam | Tr1 | main.rs:410:20:410:22 | Tr2 | +| main.rs:411:15:411:18 | SelfParam | Tr2 | main.rs:410:20:410:22 | Tr2 | +| main.rs:414:9:420:9 | { ... } | | main.rs:410:20:410:22 | Tr2 | +| main.rs:415:13:419:13 | if ... {...} else {...} | | main.rs:410:20:410:22 | Tr2 | +| main.rs:415:26:417:13 | { ... } | | main.rs:410:20:410:22 | Tr2 | +| main.rs:416:17:416:20 | self | | main.rs:406:5:408:5 | trait MyTrait1 | +| main.rs:416:17:416:20 | self | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:416:17:416:20 | self | Tr1 | main.rs:410:20:410:22 | Tr2 | +| main.rs:416:17:416:20 | self | Tr2 | main.rs:410:20:410:22 | Tr2 | +| main.rs:416:17:416:25 | self.m1(...) | | main.rs:410:20:410:22 | Tr2 | +| main.rs:417:20:419:13 | { ... } | | main.rs:410:20:410:22 | Tr2 | +| main.rs:418:17:418:30 | ...::m1(...) | | main.rs:410:20:410:22 | Tr2 | +| main.rs:418:26:418:29 | self | | main.rs:406:5:408:5 | trait MyTrait1 | +| main.rs:418:26:418:29 | self | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:418:26:418:29 | self | Tr1 | main.rs:410:20:410:22 | Tr2 | +| main.rs:418:26:418:29 | self | Tr2 | main.rs:410:20:410:22 | Tr2 | +| main.rs:424:15:424:18 | SelfParam | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:424:15:424:18 | SelfParam | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:424:15:424:18 | SelfParam | Tr2 | main.rs:391:5:394:5 | struct MyThing | +| main.rs:424:15:424:18 | SelfParam | Tr2.A | main.rs:423:20:423:22 | Tr3 | +| main.rs:424:15:424:18 | SelfParam | Tr3 | main.rs:423:20:423:22 | Tr3 | +| main.rs:427:9:433:9 | { ... } | | main.rs:423:20:423:22 | Tr3 | +| main.rs:428:13:432:13 | if ... {...} else {...} | | main.rs:423:20:423:22 | Tr3 | +| main.rs:428:26:430:13 | { ... } | | main.rs:423:20:423:22 | Tr3 | +| main.rs:429:17:429:20 | self | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:429:17:429:20 | self | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:429:17:429:20 | self | Tr2 | main.rs:391:5:394:5 | struct MyThing | +| main.rs:429:17:429:20 | self | Tr2.A | main.rs:423:20:423:22 | Tr3 | +| main.rs:429:17:429:20 | self | Tr3 | main.rs:423:20:423:22 | Tr3 | +| main.rs:429:17:429:25 | self.m2(...) | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:429:17:429:25 | self.m2(...) | A | main.rs:423:20:423:22 | Tr3 | +| main.rs:429:17:429:27 | ... .a | | main.rs:423:20:423:22 | Tr3 | +| main.rs:430:20:432:13 | { ... } | | main.rs:423:20:423:22 | Tr3 | +| main.rs:431:17:431:30 | ...::m2(...) | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:431:17:431:30 | ...::m2(...) | A | main.rs:423:20:423:22 | Tr3 | +| main.rs:431:17:431:32 | ... .a | | main.rs:423:20:423:22 | Tr3 | +| main.rs:431:26:431:29 | self | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:431:26:431:29 | self | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:431:26:431:29 | self | Tr2 | main.rs:391:5:394:5 | struct MyThing | +| main.rs:431:26:431:29 | self | Tr2.A | main.rs:423:20:423:22 | Tr3 | +| main.rs:431:26:431:29 | self | Tr3 | main.rs:423:20:423:22 | Tr3 | +| main.rs:437:15:437:18 | SelfParam | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:437:15:437:18 | SelfParam | A | main.rs:436:10:436:10 | T | +| main.rs:437:26:439:9 | { ... } | | main.rs:436:10:436:10 | T | +| main.rs:438:13:438:16 | self | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:438:13:438:16 | self | A | main.rs:436:10:436:10 | T | +| main.rs:438:13:438:18 | self.a | | main.rs:436:10:436:10 | T | +| main.rs:445:15:445:18 | SelfParam | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:445:15:445:18 | SelfParam | A | main.rs:444:10:444:10 | T | +| main.rs:445:35:447:9 | { ... } | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:445:35:447:9 | { ... } | A | main.rs:444:10:444:10 | T | +| main.rs:446:13:446:33 | MyThing {...} | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:446:13:446:33 | MyThing {...} | A | main.rs:444:10:444:10 | T | +| main.rs:446:26:446:29 | self | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:446:26:446:29 | self | A | main.rs:444:10:444:10 | T | +| main.rs:446:26:446:31 | self.a | | main.rs:444:10:444:10 | T | +| main.rs:455:13:455:13 | x | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:455:13:455:13 | x | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:455:17:455:33 | MyThing {...} | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:455:17:455:33 | MyThing {...} | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:455:30:455:31 | S1 | | main.rs:401:5:402:14 | struct S1 | +| main.rs:456:13:456:13 | y | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:456:13:456:13 | y | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:456:17:456:33 | MyThing {...} | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:456:17:456:33 | MyThing {...} | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:456:30:456:31 | S2 | | main.rs:403:5:404:14 | struct S2 | +| main.rs:458:26:458:26 | x | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:458:26:458:26 | x | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:458:26:458:31 | x.m1(...) | | main.rs:401:5:402:14 | struct S1 | +| main.rs:459:26:459:26 | y | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:459:26:459:26 | y | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:459:26:459:31 | y.m1(...) | | main.rs:403:5:404:14 | struct S2 | +| main.rs:461:13:461:13 | x | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:461:13:461:13 | x | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:461:13:461:13 | x | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:461:13:461:13 | x | Tr2 | main.rs:401:5:402:14 | struct S1 | +| main.rs:461:17:461:33 | MyThing {...} | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:461:17:461:33 | MyThing {...} | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:461:17:461:33 | MyThing {...} | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:461:17:461:33 | MyThing {...} | Tr2 | main.rs:401:5:402:14 | struct S1 | +| main.rs:461:30:461:31 | S1 | | main.rs:401:5:402:14 | struct S1 | +| main.rs:462:13:462:13 | y | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:462:13:462:13 | y | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:462:13:462:13 | y | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:462:13:462:13 | y | Tr2 | main.rs:403:5:404:14 | struct S2 | +| main.rs:462:17:462:33 | MyThing {...} | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:462:17:462:33 | MyThing {...} | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:462:17:462:33 | MyThing {...} | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:462:17:462:33 | MyThing {...} | Tr2 | main.rs:403:5:404:14 | struct S2 | +| main.rs:462:30:462:31 | S2 | | main.rs:403:5:404:14 | struct S2 | +| main.rs:464:26:464:26 | x | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:464:26:464:26 | x | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:464:26:464:26 | x | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:464:26:464:26 | x | Tr2 | main.rs:401:5:402:14 | struct S1 | +| main.rs:464:26:464:31 | x.m2(...) | | main.rs:401:5:402:14 | struct S1 | +| main.rs:465:26:465:26 | y | | main.rs:391:5:394:5 | struct MyThing | +| main.rs:465:26:465:26 | y | | main.rs:410:5:421:5 | trait MyTrait2 | +| main.rs:465:26:465:26 | y | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:465:26:465:26 | y | Tr2 | main.rs:403:5:404:14 | struct S2 | +| main.rs:465:26:465:31 | y.m2(...) | | main.rs:403:5:404:14 | struct S2 | +| main.rs:467:13:467:13 | x | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:467:13:467:13 | x | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:467:13:467:13 | x | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:467:13:467:13 | x | Tr3 | main.rs:401:5:402:14 | struct S1 | +| main.rs:467:17:467:34 | MyThing2 {...} | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:467:17:467:34 | MyThing2 {...} | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:467:17:467:34 | MyThing2 {...} | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:467:17:467:34 | MyThing2 {...} | Tr3 | main.rs:401:5:402:14 | struct S1 | +| main.rs:467:31:467:32 | S1 | | main.rs:401:5:402:14 | struct S1 | +| main.rs:468:13:468:13 | y | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:468:13:468:13 | y | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:468:13:468:13 | y | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:468:13:468:13 | y | Tr3 | main.rs:403:5:404:14 | struct S2 | +| main.rs:468:17:468:34 | MyThing2 {...} | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:468:17:468:34 | MyThing2 {...} | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:468:17:468:34 | MyThing2 {...} | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:468:17:468:34 | MyThing2 {...} | Tr3 | main.rs:403:5:404:14 | struct S2 | +| main.rs:468:31:468:32 | S2 | | main.rs:403:5:404:14 | struct S2 | +| main.rs:470:26:470:26 | x | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:470:26:470:26 | x | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:470:26:470:26 | x | A | main.rs:401:5:402:14 | struct S1 | +| main.rs:470:26:470:26 | x | Tr3 | main.rs:401:5:402:14 | struct S1 | +| main.rs:470:26:470:31 | x.m3(...) | | main.rs:401:5:402:14 | struct S1 | +| main.rs:471:26:471:26 | y | | main.rs:396:5:399:5 | struct MyThing2 | +| main.rs:471:26:471:26 | y | | main.rs:423:5:434:5 | trait MyTrait3 | +| main.rs:471:26:471:26 | y | A | main.rs:403:5:404:14 | struct S2 | +| main.rs:471:26:471:26 | y | Tr3 | main.rs:403:5:404:14 | struct S2 | +| main.rs:471:26:471:31 | y.m3(...) | | main.rs:403:5:404:14 | struct S2 | +| main.rs:489:22:489:22 | x | | file://:0:0:0:0 | & | +| main.rs:489:22:489:22 | x | &T | main.rs:489:11:489:19 | T | +| main.rs:489:35:491:5 | { ... } | | file://:0:0:0:0 | & | +| main.rs:489:35:491:5 | { ... } | &T | main.rs:489:11:489:19 | T | +| main.rs:490:9:490:9 | x | | file://:0:0:0:0 | & | +| main.rs:490:9:490:9 | x | &T | main.rs:489:11:489:19 | T | +| main.rs:494:17:494:20 | SelfParam | | main.rs:479:5:480:14 | struct S1 | +| main.rs:494:29:496:9 | { ... } | | main.rs:482:5:483:14 | struct S2 | +| main.rs:495:13:495:14 | S2 | | main.rs:482:5:483:14 | struct S2 | +| main.rs:499:21:499:21 | x | | main.rs:499:13:499:14 | T1 | +| main.rs:502:5:504:5 | { ... } | | main.rs:499:17:499:18 | T2 | +| main.rs:503:9:503:9 | x | | main.rs:499:13:499:14 | T1 | +| main.rs:503:9:503:16 | x.into(...) | | main.rs:499:17:499:18 | T2 | +| main.rs:507:13:507:13 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:507:17:507:18 | S1 | | main.rs:479:5:480:14 | struct S1 | +| main.rs:508:26:508:31 | id(...) | | file://:0:0:0:0 | & | +| main.rs:508:26:508:31 | id(...) | &T | main.rs:479:5:480:14 | struct S1 | +| main.rs:508:29:508:30 | &x | | file://:0:0:0:0 | & | +| main.rs:508:29:508:30 | &x | &T | main.rs:479:5:480:14 | struct S1 | +| main.rs:508:30:508:30 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:510:13:510:13 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:510:17:510:18 | S1 | | main.rs:479:5:480:14 | struct S1 | +| main.rs:511:26:511:37 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:511:26:511:37 | id::<...>(...) | &T | main.rs:479:5:480:14 | struct S1 | +| main.rs:511:35:511:36 | &x | | file://:0:0:0:0 | & | +| main.rs:511:35:511:36 | &x | &T | main.rs:479:5:480:14 | struct S1 | +| main.rs:511:36:511:36 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:513:13:513:13 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:513:17:513:18 | S1 | | main.rs:479:5:480:14 | struct S1 | +| main.rs:514:26:514:44 | id::<...>(...) | | file://:0:0:0:0 | & | +| main.rs:514:26:514:44 | id::<...>(...) | &T | main.rs:479:5:480:14 | struct S1 | +| main.rs:514:42:514:43 | &x | | file://:0:0:0:0 | & | +| main.rs:514:42:514:43 | &x | &T | main.rs:479:5:480:14 | struct S1 | +| main.rs:514:43:514:43 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:516:13:516:13 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:516:17:516:18 | S1 | | main.rs:479:5:480:14 | struct S1 | +| main.rs:517:9:517:25 | into::<...>(...) | | main.rs:482:5:483:14 | struct S2 | +| main.rs:517:24:517:24 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:519:13:519:13 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:519:17:519:18 | S1 | | main.rs:479:5:480:14 | struct S1 | +| main.rs:520:13:520:13 | y | | main.rs:482:5:483:14 | struct S2 | +| main.rs:520:21:520:27 | into(...) | | main.rs:482:5:483:14 | struct S2 | +| main.rs:520:26:520:26 | x | | main.rs:479:5:480:14 | struct S1 | +| main.rs:550:13:550:14 | p1 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:550:13:550:14 | p1 | Fst | main.rs:533:5:534:14 | struct S1 | +| main.rs:550:13:550:14 | p1 | Snd | main.rs:536:5:537:14 | struct S2 | +| main.rs:550:26:550:53 | ...::PairBoth(...) | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:550:26:550:53 | ...::PairBoth(...) | Fst | main.rs:533:5:534:14 | struct S1 | +| main.rs:550:26:550:53 | ...::PairBoth(...) | Snd | main.rs:536:5:537:14 | struct S2 | +| main.rs:550:47:550:48 | S1 | | main.rs:533:5:534:14 | struct S1 | +| main.rs:550:51:550:52 | S2 | | main.rs:536:5:537:14 | struct S2 | +| main.rs:551:26:551:27 | p1 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:551:26:551:27 | p1 | Fst | main.rs:533:5:534:14 | struct S1 | +| main.rs:551:26:551:27 | p1 | Snd | main.rs:536:5:537:14 | struct S2 | +| main.rs:554:13:554:14 | p2 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:554:26:554:47 | ...::PairNone(...) | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:555:26:555:27 | p2 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:558:13:558:14 | p3 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:558:13:558:14 | p3 | Snd | main.rs:539:5:540:14 | struct S3 | +| main.rs:558:34:558:56 | ...::PairSnd(...) | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:558:34:558:56 | ...::PairSnd(...) | Snd | main.rs:539:5:540:14 | struct S3 | +| main.rs:558:54:558:55 | S3 | | main.rs:539:5:540:14 | struct S3 | +| main.rs:559:26:559:27 | p3 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:559:26:559:27 | p3 | Snd | main.rs:539:5:540:14 | struct S3 | +| main.rs:562:13:562:14 | p3 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:562:13:562:14 | p3 | Fst | main.rs:539:5:540:14 | struct S3 | +| main.rs:562:35:562:56 | ...::PairNone(...) | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:562:35:562:56 | ...::PairNone(...) | Fst | main.rs:539:5:540:14 | struct S3 | +| main.rs:563:26:563:27 | p3 | | main.rs:525:5:531:5 | enum PairOption | +| main.rs:563:26:563:27 | p3 | Fst | main.rs:539:5:540:14 | struct S3 | +| main.rs:575:16:575:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:575:16:575:24 | SelfParam | &T | main.rs:574:5:580:5 | trait MyTrait | +| main.rs:575:16:575:24 | SelfParam | &T.S | main.rs:574:19:574:19 | S | +| main.rs:575:27:575:31 | value | | main.rs:574:19:574:19 | S | +| main.rs:577:21:577:29 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:577:21:577:29 | SelfParam | &T | main.rs:574:5:580:5 | trait MyTrait | +| main.rs:577:21:577:29 | SelfParam | &T.S | main.rs:574:19:574:19 | S | +| main.rs:577:32:577:36 | value | | main.rs:574:19:574:19 | S | +| main.rs:578:13:578:16 | self | | file://:0:0:0:0 | & | +| main.rs:578:13:578:16 | self | &T | main.rs:574:5:580:5 | trait MyTrait | +| main.rs:578:13:578:16 | self | &T.S | main.rs:574:19:574:19 | S | +| main.rs:578:22:578:26 | value | | main.rs:574:19:574:19 | S | +| main.rs:583:16:583:24 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:583:16:583:24 | SelfParam | &T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:583:16:583:24 | SelfParam | &T.T | main.rs:582:10:582:10 | T | +| main.rs:583:27:583:31 | value | | main.rs:582:10:582:10 | T | +| main.rs:587:26:589:9 | { ... } | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:587:26:589:9 | { ... } | T | main.rs:586:10:586:10 | T | +| main.rs:588:13:588:30 | ...::MyNone(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:588:13:588:30 | ...::MyNone(...) | T | main.rs:586:10:586:10 | T | +| main.rs:593:20:593:23 | SelfParam | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:593:20:593:23 | SelfParam | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:593:20:593:23 | SelfParam | T.T | main.rs:592:10:592:10 | T | +| main.rs:593:41:598:9 | { ... } | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:593:41:598:9 | { ... } | T | main.rs:592:10:592:10 | T | +| main.rs:594:13:597:13 | match self { ... } | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:594:13:597:13 | match self { ... } | T | main.rs:592:10:592:10 | T | +| main.rs:594:19:594:22 | self | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:594:19:594:22 | self | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:594:19:594:22 | self | T.T | main.rs:592:10:592:10 | T | +| main.rs:595:39:595:56 | ...::MyNone(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:595:39:595:56 | ...::MyNone(...) | T | main.rs:592:10:592:10 | T | +| main.rs:596:34:596:34 | x | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:596:34:596:34 | x | T | main.rs:592:10:592:10 | T | +| main.rs:596:40:596:40 | x | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:596:40:596:40 | x | T | main.rs:592:10:592:10 | T | +| main.rs:605:13:605:14 | x1 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:605:18:605:37 | ...::new(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:606:26:606:27 | x1 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:608:13:608:18 | mut x2 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:608:13:608:18 | mut x2 | T | main.rs:601:5:602:13 | struct S | +| main.rs:608:22:608:36 | ...::new(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:608:22:608:36 | ...::new(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:609:9:609:10 | x2 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:609:9:609:10 | x2 | T | main.rs:601:5:602:13 | struct S | +| main.rs:609:16:609:16 | S | | main.rs:601:5:602:13 | struct S | +| main.rs:610:26:610:27 | x2 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:610:26:610:27 | x2 | T | main.rs:601:5:602:13 | struct S | +| main.rs:612:13:612:18 | mut x3 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:612:13:612:18 | mut x3 | | main.rs:574:5:580:5 | trait MyTrait | +| main.rs:612:13:612:18 | mut x3 | S | main.rs:601:5:602:13 | struct S | +| main.rs:612:22:612:36 | ...::new(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:612:22:612:36 | ...::new(...) | | main.rs:574:5:580:5 | trait MyTrait | +| main.rs:612:22:612:36 | ...::new(...) | S | main.rs:601:5:602:13 | struct S | +| main.rs:613:9:613:10 | x3 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:613:9:613:10 | x3 | | main.rs:574:5:580:5 | trait MyTrait | +| main.rs:613:9:613:10 | x3 | S | main.rs:601:5:602:13 | struct S | +| main.rs:613:21:613:21 | S | | main.rs:601:5:602:13 | struct S | +| main.rs:614:26:614:27 | x3 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:614:26:614:27 | x3 | | main.rs:574:5:580:5 | trait MyTrait | +| main.rs:614:26:614:27 | x3 | S | main.rs:601:5:602:13 | struct S | +| main.rs:616:13:616:18 | mut x4 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:616:13:616:18 | mut x4 | T | main.rs:601:5:602:13 | struct S | +| main.rs:616:22:616:36 | ...::new(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:616:22:616:36 | ...::new(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:617:23:617:29 | &mut x4 | | file://:0:0:0:0 | & | +| main.rs:617:23:617:29 | &mut x4 | &T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:617:23:617:29 | &mut x4 | &T.T | main.rs:601:5:602:13 | struct S | +| main.rs:617:28:617:29 | x4 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:617:28:617:29 | x4 | T | main.rs:601:5:602:13 | struct S | +| main.rs:617:32:617:32 | S | | main.rs:601:5:602:13 | struct S | +| main.rs:618:26:618:27 | x4 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:618:26:618:27 | x4 | T | main.rs:601:5:602:13 | struct S | +| main.rs:620:13:620:14 | x5 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:620:13:620:14 | x5 | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:620:13:620:14 | x5 | T.T | main.rs:601:5:602:13 | struct S | +| main.rs:620:18:620:58 | ...::MySome(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:620:18:620:58 | ...::MySome(...) | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:620:18:620:58 | ...::MySome(...) | T.T | main.rs:601:5:602:13 | struct S | +| main.rs:620:35:620:57 | ...::MyNone(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:620:35:620:57 | ...::MyNone(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:621:26:621:27 | x5 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:621:26:621:27 | x5 | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:621:26:621:27 | x5 | T.T | main.rs:601:5:602:13 | struct S | +| main.rs:623:13:623:14 | x6 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:623:13:623:14 | x6 | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:623:13:623:14 | x6 | T.T | main.rs:601:5:602:13 | struct S | +| main.rs:623:18:623:58 | ...::MySome(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:623:18:623:58 | ...::MySome(...) | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:623:18:623:58 | ...::MySome(...) | T.T | main.rs:601:5:602:13 | struct S | +| main.rs:623:35:623:57 | ...::MyNone(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:623:35:623:57 | ...::MyNone(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:624:26:624:61 | ...::flatten(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:624:26:624:61 | ...::flatten(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:624:59:624:60 | x6 | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:624:59:624:60 | x6 | T | main.rs:568:5:572:5 | enum MyOption | +| main.rs:624:59:624:60 | x6 | T.T | main.rs:601:5:602:13 | struct S | +| main.rs:626:13:626:19 | from_if | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:626:13:626:19 | from_if | T | main.rs:601:5:602:13 | struct S | +| main.rs:626:23:630:9 | if ... {...} else {...} | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:626:23:630:9 | if ... {...} else {...} | T | main.rs:601:5:602:13 | struct S | +| main.rs:626:36:628:9 | { ... } | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:626:36:628:9 | { ... } | T | main.rs:601:5:602:13 | struct S | +| main.rs:627:13:627:30 | ...::MyNone(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:627:13:627:30 | ...::MyNone(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:628:16:630:9 | { ... } | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:628:16:630:9 | { ... } | T | main.rs:601:5:602:13 | struct S | +| main.rs:629:13:629:31 | ...::MySome(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:629:13:629:31 | ...::MySome(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:629:30:629:30 | S | | main.rs:601:5:602:13 | struct S | +| main.rs:631:26:631:32 | from_if | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:631:26:631:32 | from_if | T | main.rs:601:5:602:13 | struct S | +| main.rs:633:13:633:22 | from_match | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:633:13:633:22 | from_match | T | main.rs:601:5:602:13 | struct S | +| main.rs:633:26:636:9 | match ... { ... } | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:633:26:636:9 | match ... { ... } | T | main.rs:601:5:602:13 | struct S | +| main.rs:634:21:634:38 | ...::MyNone(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:634:21:634:38 | ...::MyNone(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:635:22:635:40 | ...::MySome(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:635:22:635:40 | ...::MySome(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:635:39:635:39 | S | | main.rs:601:5:602:13 | struct S | +| main.rs:637:26:637:35 | from_match | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:637:26:637:35 | from_match | T | main.rs:601:5:602:13 | struct S | +| main.rs:639:13:639:21 | from_loop | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:639:13:639:21 | from_loop | T | main.rs:601:5:602:13 | struct S | +| main.rs:639:25:644:9 | loop { ... } | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:639:25:644:9 | loop { ... } | T | main.rs:601:5:602:13 | struct S | +| main.rs:641:23:641:40 | ...::MyNone(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:641:23:641:40 | ...::MyNone(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:643:19:643:37 | ...::MySome(...) | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:643:19:643:37 | ...::MySome(...) | T | main.rs:601:5:602:13 | struct S | +| main.rs:643:36:643:36 | S | | main.rs:601:5:602:13 | struct S | +| main.rs:645:26:645:34 | from_loop | | main.rs:568:5:572:5 | enum MyOption | +| main.rs:645:26:645:34 | from_loop | T | main.rs:601:5:602:13 | struct S | +| main.rs:658:15:658:18 | SelfParam | | main.rs:651:5:652:19 | struct S | +| main.rs:658:15:658:18 | SelfParam | T | main.rs:657:10:657:10 | T | +| main.rs:658:26:660:9 | { ... } | | main.rs:657:10:657:10 | T | +| main.rs:659:13:659:16 | self | | main.rs:651:5:652:19 | struct S | +| main.rs:659:13:659:16 | self | T | main.rs:657:10:657:10 | T | +| main.rs:659:13:659:18 | self.0 | | main.rs:657:10:657:10 | T | +| main.rs:662:15:662:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:662:15:662:19 | SelfParam | &T | main.rs:651:5:652:19 | struct S | +| main.rs:662:15:662:19 | SelfParam | &T.T | main.rs:657:10:657:10 | T | +| main.rs:662:28:664:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:662:28:664:9 | { ... } | &T | main.rs:657:10:657:10 | T | +| main.rs:663:13:663:19 | &... | | file://:0:0:0:0 | & | +| main.rs:663:13:663:19 | &... | &T | main.rs:657:10:657:10 | T | +| main.rs:663:14:663:17 | self | | file://:0:0:0:0 | & | +| main.rs:663:14:663:17 | self | &T | main.rs:651:5:652:19 | struct S | +| main.rs:663:14:663:17 | self | &T.T | main.rs:657:10:657:10 | T | +| main.rs:663:14:663:19 | self.0 | | main.rs:657:10:657:10 | T | +| main.rs:666:15:666:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:666:15:666:25 | SelfParam | &T | main.rs:651:5:652:19 | struct S | +| main.rs:666:15:666:25 | SelfParam | &T.T | main.rs:657:10:657:10 | T | +| main.rs:666:34:668:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:666:34:668:9 | { ... } | &T | main.rs:657:10:657:10 | T | +| main.rs:667:13:667:19 | &... | | file://:0:0:0:0 | & | +| main.rs:667:13:667:19 | &... | &T | main.rs:657:10:657:10 | T | +| main.rs:667:14:667:17 | self | | file://:0:0:0:0 | & | +| main.rs:667:14:667:17 | self | &T | main.rs:651:5:652:19 | struct S | +| main.rs:667:14:667:17 | self | &T.T | main.rs:657:10:657:10 | T | +| main.rs:667:14:667:19 | self.0 | | main.rs:657:10:657:10 | T | +| main.rs:672:13:672:14 | x1 | | main.rs:651:5:652:19 | struct S | +| main.rs:672:13:672:14 | x1 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:672:18:672:22 | S(...) | | main.rs:651:5:652:19 | struct S | +| main.rs:672:18:672:22 | S(...) | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:672:20:672:21 | S2 | | main.rs:654:5:655:14 | struct S2 | +| main.rs:673:26:673:27 | x1 | | main.rs:651:5:652:19 | struct S | +| main.rs:673:26:673:27 | x1 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:673:26:673:32 | x1.m1(...) | | main.rs:654:5:655:14 | struct S2 | +| main.rs:675:13:675:14 | x2 | | main.rs:651:5:652:19 | struct S | +| main.rs:675:13:675:14 | x2 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:675:18:675:22 | S(...) | | main.rs:651:5:652:19 | struct S | +| main.rs:675:18:675:22 | S(...) | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:675:20:675:21 | S2 | | main.rs:654:5:655:14 | struct S2 | +| main.rs:677:26:677:27 | x2 | | main.rs:651:5:652:19 | struct S | +| main.rs:677:26:677:27 | x2 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:677:26:677:32 | x2.m2(...) | | file://:0:0:0:0 | & | +| main.rs:677:26:677:32 | x2.m2(...) | &T | main.rs:654:5:655:14 | struct S2 | +| main.rs:678:26:678:27 | x2 | | main.rs:651:5:652:19 | struct S | +| main.rs:678:26:678:27 | x2 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:678:26:678:32 | x2.m3(...) | | file://:0:0:0:0 | & | +| main.rs:678:26:678:32 | x2.m3(...) | &T | main.rs:654:5:655:14 | struct S2 | +| main.rs:680:13:680:14 | x3 | | main.rs:651:5:652:19 | struct S | +| main.rs:680:13:680:14 | x3 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:680:18:680:22 | S(...) | | main.rs:651:5:652:19 | struct S | +| main.rs:680:18:680:22 | S(...) | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:680:20:680:21 | S2 | | main.rs:654:5:655:14 | struct S2 | +| main.rs:682:26:682:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:682:26:682:41 | ...::m2(...) | &T | main.rs:654:5:655:14 | struct S2 | +| main.rs:682:38:682:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:682:38:682:40 | &x3 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:682:38:682:40 | &x3 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:682:39:682:40 | x3 | | main.rs:651:5:652:19 | struct S | +| main.rs:682:39:682:40 | x3 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:683:26:683:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:683:26:683:41 | ...::m3(...) | &T | main.rs:654:5:655:14 | struct S2 | +| main.rs:683:38:683:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:683:38:683:40 | &x3 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:683:38:683:40 | &x3 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:683:39:683:40 | x3 | | main.rs:651:5:652:19 | struct S | +| main.rs:683:39:683:40 | x3 | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:685:13:685:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:685:13:685:14 | x4 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:685:13:685:14 | x4 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:685:18:685:23 | &... | | file://:0:0:0:0 | & | +| main.rs:685:18:685:23 | &... | &T | main.rs:651:5:652:19 | struct S | +| main.rs:685:18:685:23 | &... | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:685:19:685:23 | S(...) | | main.rs:651:5:652:19 | struct S | +| main.rs:685:19:685:23 | S(...) | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:685:21:685:22 | S2 | | main.rs:654:5:655:14 | struct S2 | +| main.rs:687:26:687:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:687:26:687:27 | x4 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:687:26:687:27 | x4 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:687:26:687:32 | x4.m2(...) | | file://:0:0:0:0 | & | +| main.rs:687:26:687:32 | x4.m2(...) | &T | main.rs:654:5:655:14 | struct S2 | +| main.rs:688:26:688:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:688:26:688:27 | x4 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:688:26:688:27 | x4 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:688:26:688:32 | x4.m3(...) | | file://:0:0:0:0 | & | +| main.rs:688:26:688:32 | x4.m3(...) | &T | main.rs:654:5:655:14 | struct S2 | +| main.rs:690:13:690:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:690:13:690:14 | x5 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:690:13:690:14 | x5 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:690:18:690:23 | &... | | file://:0:0:0:0 | & | +| main.rs:690:18:690:23 | &... | &T | main.rs:651:5:652:19 | struct S | +| main.rs:690:18:690:23 | &... | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:690:19:690:23 | S(...) | | main.rs:651:5:652:19 | struct S | +| main.rs:690:19:690:23 | S(...) | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:690:21:690:22 | S2 | | main.rs:654:5:655:14 | struct S2 | +| main.rs:692:26:692:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:692:26:692:27 | x5 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:692:26:692:27 | x5 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:692:26:692:32 | x5.m1(...) | | main.rs:654:5:655:14 | struct S2 | +| main.rs:693:26:693:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:693:26:693:27 | x5 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:693:26:693:27 | x5 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:693:26:693:29 | x5.0 | | main.rs:654:5:655:14 | struct S2 | +| main.rs:695:13:695:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:695:13:695:14 | x6 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:695:13:695:14 | x6 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:695:18:695:23 | &... | | file://:0:0:0:0 | & | +| main.rs:695:18:695:23 | &... | &T | main.rs:651:5:652:19 | struct S | +| main.rs:695:18:695:23 | &... | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:695:19:695:23 | S(...) | | main.rs:651:5:652:19 | struct S | +| main.rs:695:19:695:23 | S(...) | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:695:21:695:22 | S2 | | main.rs:654:5:655:14 | struct S2 | +| main.rs:697:26:697:30 | (...) | | main.rs:651:5:652:19 | struct S | +| main.rs:697:26:697:30 | (...) | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:697:26:697:35 | ... .m1(...) | | main.rs:654:5:655:14 | struct S2 | +| main.rs:697:27:697:29 | * ... | | main.rs:651:5:652:19 | struct S | +| main.rs:697:27:697:29 | * ... | T | main.rs:654:5:655:14 | struct S2 | +| main.rs:697:28:697:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:697:28:697:29 | x6 | &T | main.rs:651:5:652:19 | struct S | +| main.rs:697:28:697:29 | x6 | &T.T | main.rs:654:5:655:14 | struct S2 | +| main.rs:703:16:703:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:703:16:703:20 | SelfParam | &T | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:705:16:705:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:705:16:705:20 | SelfParam | &T | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:705:32:707:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:705:32:707:9 | { ... } | &T | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:706:13:706:16 | self | | file://:0:0:0:0 | & | +| main.rs:706:13:706:16 | self | &T | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:706:13:706:22 | self.foo(...) | | file://:0:0:0:0 | & | +| main.rs:706:13:706:22 | self.foo(...) | &T | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:713:16:713:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:713:16:713:20 | SelfParam | &T | main.rs:710:5:710:20 | struct MyStruct | +| main.rs:713:36:715:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:713:36:715:9 | { ... } | &T | main.rs:710:5:710:20 | struct MyStruct | +| main.rs:714:13:714:16 | self | | file://:0:0:0:0 | & | +| main.rs:714:13:714:16 | self | &T | main.rs:710:5:710:20 | struct MyStruct | +| main.rs:719:13:719:13 | x | | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:719:13:719:13 | x | | main.rs:710:5:710:20 | struct MyStruct | +| main.rs:719:17:719:24 | MyStruct | | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:719:17:719:24 | MyStruct | | main.rs:710:5:710:20 | struct MyStruct | +| main.rs:720:9:720:9 | x | | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:720:9:720:9 | x | | main.rs:710:5:710:20 | struct MyStruct | +| main.rs:720:9:720:15 | x.bar(...) | | file://:0:0:0:0 | & | +| main.rs:720:9:720:15 | x.bar(...) | &T | main.rs:702:5:708:5 | trait MyTrait | +| main.rs:720:9:720:15 | x.bar(...) | &T | main.rs:710:5:710:20 | struct MyStruct | +| main.rs:730:16:730:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:730:16:730:20 | SelfParam | &T | main.rs:727:5:727:26 | struct MyStruct | +| main.rs:730:16:730:20 | SelfParam | &T.T | main.rs:729:10:729:10 | T | +| main.rs:730:32:732:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:730:32:732:9 | { ... } | &T | main.rs:727:5:727:26 | struct MyStruct | +| main.rs:730:32:732:9 | { ... } | &T.T | main.rs:729:10:729:10 | T | +| main.rs:731:13:731:16 | self | | file://:0:0:0:0 | & | +| main.rs:731:13:731:16 | self | &T | main.rs:727:5:727:26 | struct MyStruct | +| main.rs:731:13:731:16 | self | &T.T | main.rs:729:10:729:10 | T | +| main.rs:736:13:736:13 | x | | main.rs:727:5:727:26 | struct MyStruct | +| main.rs:736:13:736:13 | x | T | main.rs:725:5:725:13 | struct S | +| main.rs:736:17:736:27 | MyStruct(...) | | main.rs:727:5:727:26 | struct MyStruct | +| main.rs:736:17:736:27 | MyStruct(...) | T | main.rs:725:5:725:13 | struct S | +| main.rs:736:26:736:26 | S | | main.rs:725:5:725:13 | struct S | +| main.rs:737:9:737:9 | x | | main.rs:727:5:727:26 | struct MyStruct | +| main.rs:737:9:737:9 | x | T | main.rs:725:5:725:13 | struct S | +| main.rs:737:9:737:15 | x.foo(...) | | file://:0:0:0:0 | & | +| main.rs:737:9:737:15 | x.foo(...) | &T | main.rs:727:5:727:26 | struct MyStruct | +| main.rs:737:9:737:15 | x.foo(...) | &T.T | main.rs:725:5:725:13 | struct S | +| main.rs:745:15:745:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:745:15:745:19 | SelfParam | &T | main.rs:742:5:742:13 | struct S | +| main.rs:745:31:747:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:745:31:747:9 | { ... } | &T | main.rs:742:5:742:13 | struct S | +| main.rs:746:13:746:19 | &... | | file://:0:0:0:0 | & | +| main.rs:746:13:746:19 | &... | &T | main.rs:742:5:742:13 | struct S | +| main.rs:746:14:746:19 | &... | | file://:0:0:0:0 | & | +| main.rs:746:14:746:19 | &... | &T | main.rs:742:5:742:13 | struct S | +| main.rs:746:15:746:19 | &self | | file://:0:0:0:0 | & | +| main.rs:746:15:746:19 | &self | &T | main.rs:742:5:742:13 | struct S | +| main.rs:746:16:746:19 | self | | file://:0:0:0:0 | & | +| main.rs:746:16:746:19 | self | &T | main.rs:742:5:742:13 | struct S | +| main.rs:749:15:749:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:749:15:749:25 | SelfParam | &T | main.rs:742:5:742:13 | struct S | +| main.rs:749:37:751:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:749:37:751:9 | { ... } | &T | main.rs:742:5:742:13 | struct S | +| main.rs:750:13:750:19 | &... | | file://:0:0:0:0 | & | +| main.rs:750:13:750:19 | &... | &T | main.rs:742:5:742:13 | struct S | +| main.rs:750:14:750:19 | &... | | file://:0:0:0:0 | & | +| main.rs:750:14:750:19 | &... | &T | main.rs:742:5:742:13 | struct S | +| main.rs:750:15:750:19 | &self | | file://:0:0:0:0 | & | +| main.rs:750:15:750:19 | &self | &T | main.rs:742:5:742:13 | struct S | +| main.rs:750:16:750:19 | self | | file://:0:0:0:0 | & | +| main.rs:750:16:750:19 | self | &T | main.rs:742:5:742:13 | struct S | +| main.rs:753:15:753:15 | x | | file://:0:0:0:0 | & | +| main.rs:753:15:753:15 | x | &T | main.rs:742:5:742:13 | struct S | +| main.rs:753:34:755:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:753:34:755:9 | { ... } | &T | main.rs:742:5:742:13 | struct S | +| main.rs:754:13:754:13 | x | | file://:0:0:0:0 | & | +| main.rs:754:13:754:13 | x | &T | main.rs:742:5:742:13 | struct S | +| main.rs:757:15:757:15 | x | | file://:0:0:0:0 | & | +| main.rs:757:15:757:15 | x | &T | main.rs:742:5:742:13 | struct S | +| main.rs:757:34:759:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:757:34:759:9 | { ... } | &T | main.rs:742:5:742:13 | struct S | +| main.rs:758:13:758:16 | &... | | file://:0:0:0:0 | & | +| main.rs:758:13:758:16 | &... | &T | main.rs:742:5:742:13 | struct S | +| main.rs:758:14:758:16 | &... | | file://:0:0:0:0 | & | +| main.rs:758:14:758:16 | &... | &T | main.rs:742:5:742:13 | struct S | +| main.rs:758:15:758:16 | &x | | file://:0:0:0:0 | & | +| main.rs:758:15:758:16 | &x | &T | main.rs:742:5:742:13 | struct S | +| main.rs:758:16:758:16 | x | | file://:0:0:0:0 | & | +| main.rs:758:16:758:16 | x | &T | main.rs:742:5:742:13 | struct S | +| main.rs:763:13:763:13 | x | | main.rs:742:5:742:13 | struct S | +| main.rs:763:17:763:20 | S {...} | | main.rs:742:5:742:13 | struct S | +| main.rs:764:9:764:9 | x | | main.rs:742:5:742:13 | struct S | +| main.rs:764:9:764:14 | x.f1(...) | | file://:0:0:0:0 | & | +| main.rs:764:9:764:14 | x.f1(...) | &T | main.rs:742:5:742:13 | struct S | +| main.rs:765:9:765:9 | x | | main.rs:742:5:742:13 | struct S | +| main.rs:765:9:765:14 | x.f2(...) | | file://:0:0:0:0 | & | +| main.rs:765:9:765:14 | x.f2(...) | &T | main.rs:742:5:742:13 | struct S | +| main.rs:766:9:766:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:766:9:766:17 | ...::f3(...) | &T | main.rs:742:5:742:13 | struct S | +| main.rs:766:15:766:16 | &x | | file://:0:0:0:0 | & | +| main.rs:766:15:766:16 | &x | &T | main.rs:742:5:742:13 | struct S | +| main.rs:766:16:766:16 | x | | main.rs:742:5:742:13 | struct S | +| main.rs:772:5:772:20 | ...::f(...) | | main.rs:67:5:67:21 | struct Foo | +| main.rs:773:5:773:60 | ...::g(...) | | main.rs:67:5:67:21 | struct Foo | +| main.rs:773:20:773:38 | ...::Foo {...} | | main.rs:67:5:67:21 | struct Foo | +| main.rs:773:41:773:59 | ...::Foo {...} | | main.rs:67:5:67:21 | struct Foo | resolveMethodCallExpr | loop/main.rs:12:9:12:18 | self.foo(...) | loop/main.rs:7:5:7:19 | fn foo | | main.rs:88:9:88:14 | x.m1(...) | main.rs:70:9:72:9 | fn m1 | @@ -1017,38 +1058,39 @@ resolveMethodCallExpr | main.rs:250:18:250:24 | x.fst(...) | main.rs:236:9:236:27 | fn fst | | main.rs:251:18:251:24 | y.snd(...) | main.rs:238:9:238:27 | fn snd | | main.rs:274:13:274:21 | self.m1(...) | main.rs:268:9:268:25 | fn m1 | -| main.rs:279:9:279:14 | x.m1(...) | main.rs:268:9:268:25 | fn m1 | -| main.rs:292:26:292:31 | x.m1(...) | main.rs:283:9:285:9 | fn m1 | -| main.rs:293:26:293:31 | y.m1(...) | main.rs:283:9:285:9 | fn m1 | -| main.rs:298:26:298:31 | x.m2(...) | main.rs:270:9:275:9 | fn m2 | -| main.rs:299:26:299:31 | y.m2(...) | main.rs:270:9:275:9 | fn m2 | -| main.rs:337:26:337:31 | x.m1(...) | main.rs:330:9:332:9 | fn m1 | -| main.rs:340:26:340:31 | x.m2(...) | main.rs:315:9:321:9 | fn m2 | -| main.rs:369:26:369:31 | x.m1(...) | main.rs:357:9:362:9 | fn m1 | -| main.rs:370:26:370:31 | y.m1(...) | main.rs:357:9:362:9 | fn m1 | -| main.rs:400:17:400:25 | self.m1(...) | main.rs:391:9:391:27 | fn m1 | -| main.rs:413:17:413:25 | self.m2(...) | main.rs:395:9:404:9 | fn m2 | -| main.rs:442:26:442:31 | x.m1(...) | main.rs:421:9:423:9 | fn m1 | -| main.rs:443:26:443:31 | y.m1(...) | main.rs:421:9:423:9 | fn m1 | -| main.rs:448:26:448:31 | x.m2(...) | main.rs:395:9:404:9 | fn m2 | -| main.rs:449:26:449:31 | y.m2(...) | main.rs:395:9:404:9 | fn m2 | -| main.rs:454:26:454:31 | x.m3(...) | main.rs:408:9:417:9 | fn m3 | -| main.rs:455:26:455:31 | y.m3(...) | main.rs:408:9:417:9 | fn m3 | -| main.rs:562:13:562:27 | self.set(...) | main.rs:559:9:559:36 | fn set | -| main.rs:593:9:593:17 | x2.set(...) | main.rs:567:9:567:38 | fn set | -| main.rs:597:9:597:22 | x3.call_set(...) | main.rs:561:9:563:9 | fn call_set | -| main.rs:657:26:657:32 | x1.m1(...) | main.rs:642:9:644:9 | fn m1 | -| main.rs:661:26:661:32 | x2.m2(...) | main.rs:646:9:648:9 | fn m2 | -| main.rs:662:26:662:32 | x2.m3(...) | main.rs:650:9:652:9 | fn m3 | -| main.rs:671:26:671:32 | x4.m2(...) | main.rs:646:9:648:9 | fn m2 | -| main.rs:672:26:672:32 | x4.m3(...) | main.rs:650:9:652:9 | fn m3 | -| main.rs:676:26:676:32 | x5.m1(...) | main.rs:642:9:644:9 | fn m1 | -| main.rs:681:26:681:35 | ... .m1(...) | main.rs:642:9:644:9 | fn m1 | -| main.rs:690:13:690:22 | self.foo(...) | main.rs:687:9:687:31 | fn foo | -| main.rs:704:9:704:15 | x.bar(...) | main.rs:689:9:691:9 | fn bar | -| main.rs:721:9:721:15 | x.foo(...) | main.rs:714:9:716:9 | fn foo | -| main.rs:748:9:748:14 | x.f1(...) | main.rs:729:9:731:9 | fn f1 | -| main.rs:749:9:749:14 | x.f2(...) | main.rs:733:9:735:9 | fn f2 | +| main.rs:280:9:280:14 | x.m1(...) | main.rs:268:9:268:25 | fn m1 | +| main.rs:285:9:285:16 | ... .m1(...) | main.rs:268:9:268:25 | fn m1 | +| main.rs:298:26:298:31 | x.m1(...) | main.rs:289:9:291:9 | fn m1 | +| main.rs:299:26:299:31 | y.m1(...) | main.rs:289:9:291:9 | fn m1 | +| main.rs:304:26:304:31 | x.m2(...) | main.rs:270:9:275:9 | fn m2 | +| main.rs:305:26:305:31 | y.m2(...) | main.rs:270:9:275:9 | fn m2 | +| main.rs:353:26:353:31 | x.m1(...) | main.rs:346:9:348:9 | fn m1 | +| main.rs:356:26:356:31 | x.m2(...) | main.rs:331:9:337:9 | fn m2 | +| main.rs:385:26:385:31 | x.m1(...) | main.rs:373:9:378:9 | fn m1 | +| main.rs:386:26:386:31 | y.m1(...) | main.rs:373:9:378:9 | fn m1 | +| main.rs:416:17:416:25 | self.m1(...) | main.rs:407:9:407:27 | fn m1 | +| main.rs:429:17:429:25 | self.m2(...) | main.rs:411:9:420:9 | fn m2 | +| main.rs:458:26:458:31 | x.m1(...) | main.rs:437:9:439:9 | fn m1 | +| main.rs:459:26:459:31 | y.m1(...) | main.rs:437:9:439:9 | fn m1 | +| main.rs:464:26:464:31 | x.m2(...) | main.rs:411:9:420:9 | fn m2 | +| main.rs:465:26:465:31 | y.m2(...) | main.rs:411:9:420:9 | fn m2 | +| main.rs:470:26:470:31 | x.m3(...) | main.rs:424:9:433:9 | fn m3 | +| main.rs:471:26:471:31 | y.m3(...) | main.rs:424:9:433:9 | fn m3 | +| main.rs:578:13:578:27 | self.set(...) | main.rs:575:9:575:36 | fn set | +| main.rs:609:9:609:17 | x2.set(...) | main.rs:583:9:583:38 | fn set | +| main.rs:613:9:613:22 | x3.call_set(...) | main.rs:577:9:579:9 | fn call_set | +| main.rs:673:26:673:32 | x1.m1(...) | main.rs:658:9:660:9 | fn m1 | +| main.rs:677:26:677:32 | x2.m2(...) | main.rs:662:9:664:9 | fn m2 | +| main.rs:678:26:678:32 | x2.m3(...) | main.rs:666:9:668:9 | fn m3 | +| main.rs:687:26:687:32 | x4.m2(...) | main.rs:662:9:664:9 | fn m2 | +| main.rs:688:26:688:32 | x4.m3(...) | main.rs:666:9:668:9 | fn m3 | +| main.rs:692:26:692:32 | x5.m1(...) | main.rs:658:9:660:9 | fn m1 | +| main.rs:697:26:697:35 | ... .m1(...) | main.rs:658:9:660:9 | fn m1 | +| main.rs:706:13:706:22 | self.foo(...) | main.rs:703:9:703:31 | fn foo | +| main.rs:720:9:720:15 | x.bar(...) | main.rs:705:9:707:9 | fn bar | +| main.rs:737:9:737:15 | x.foo(...) | main.rs:730:9:732:9 | fn foo | +| main.rs:764:9:764:14 | x.f1(...) | main.rs:745:9:747:9 | fn f1 | +| main.rs:765:9:765:14 | x.f2(...) | main.rs:749:9:751:9 | fn f2 | resolveFieldExpr | main.rs:27:26:27:28 | x.a | main.rs:7:9:7:12 | StructField | | main.rs:33:26:33:28 | x.a | main.rs:18:9:18:12 | StructField | @@ -1063,12 +1105,13 @@ resolveFieldExpr | main.rs:128:26:128:28 | y.a | main.rs:96:9:96:12 | StructField | | main.rs:169:13:169:18 | self.a | main.rs:144:9:144:12 | StructField | | main.rs:175:23:175:28 | self.a | main.rs:144:9:144:12 | StructField | -| main.rs:284:13:284:18 | self.a | main.rs:259:9:259:12 | StructField | -| main.rs:413:17:413:27 | ... .a | main.rs:377:9:377:12 | StructField | -| main.rs:415:17:415:32 | ... .a | main.rs:377:9:377:12 | StructField | -| main.rs:422:13:422:18 | self.a | main.rs:377:9:377:12 | StructField | -| main.rs:430:26:430:31 | self.a | main.rs:382:9:382:12 | StructField | -| main.rs:643:13:643:18 | self.0 | main.rs:636:17:636:17 | TupleField | -| main.rs:647:14:647:19 | self.0 | main.rs:636:17:636:17 | TupleField | -| main.rs:651:14:651:19 | self.0 | main.rs:636:17:636:17 | TupleField | -| main.rs:677:26:677:29 | x5.0 | main.rs:636:17:636:17 | TupleField | +| main.rs:285:9:285:11 | x.a | main.rs:259:9:259:12 | StructField | +| main.rs:290:13:290:18 | self.a | main.rs:259:9:259:12 | StructField | +| main.rs:429:17:429:27 | ... .a | main.rs:393:9:393:12 | StructField | +| main.rs:431:17:431:32 | ... .a | main.rs:393:9:393:12 | StructField | +| main.rs:438:13:438:18 | self.a | main.rs:393:9:393:12 | StructField | +| main.rs:446:26:446:31 | self.a | main.rs:398:9:398:12 | StructField | +| main.rs:659:13:659:18 | self.0 | main.rs:652:17:652:17 | TupleField | +| main.rs:663:14:663:19 | self.0 | main.rs:652:17:652:17 | TupleField | +| main.rs:667:14:667:19 | self.0 | main.rs:652:17:652:17 | TupleField | +| main.rs:693:26:693:29 | x5.0 | main.rs:652:17:652:17 | TupleField | diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 430296c7c01..1dd626144da 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -2,15 +2,15 @@ | main.rs:6:25:6:30 | ®ex | main.rs:4:20:4:32 | ...::var | main.rs:6:25:6:30 | ®ex | This regular expression is constructed from a $@. | main.rs:4:20:4:32 | ...::var | user-provided value | edges | main.rs:4:9:4:16 | username | main.rs:5:25:5:44 | MacroExpr | provenance | | -| main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:62 | -| main.rs:4:20:4:40 | ...::var(...) [Ok] | main.rs:4:20:4:66 | ... .unwrap_or(...) | provenance | MaD:1625 | +| main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:64 | +| main.rs:4:20:4:40 | ...::var(...) [Ok] | main.rs:4:20:4:66 | ... .unwrap_or(...) | provenance | MaD:1627 | | main.rs:4:20:4:66 | ... .unwrap_or(...) | main.rs:4:9:4:16 | username | provenance | | | main.rs:5:9:5:13 | regex | main.rs:6:26:6:30 | regex | provenance | | | main.rs:5:17:5:45 | res | main.rs:5:25:5:44 | { ... } | provenance | | | main.rs:5:25:5:44 | ...::format(...) | main.rs:5:17:5:45 | res | provenance | | | main.rs:5:25:5:44 | ...::must_use(...) | main.rs:5:9:5:13 | regex | provenance | | -| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:98 | -| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:3048 | +| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:100 | +| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:3050 | | main.rs:6:26:6:30 | regex | main.rs:6:25:6:30 | ®ex | provenance | | nodes | main.rs:4:9:4:16 | username | semmle.label | username | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index 7f740132b0a..c085f429058 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -1,8 +1,33 @@ #select +| test_logging.rs:42:5:42:36 | ...::log | test_logging.rs:42:28:42:35 | password | test_logging.rs:42:5:42:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:42:28:42:35 | password | password | +| test_logging.rs:43:5:43:36 | ...::log | test_logging.rs:43:28:43:35 | password | test_logging.rs:43:5:43:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:43:28:43:35 | password | password | +| test_logging.rs:44:5:44:35 | ...::log | test_logging.rs:44:27:44:34 | password | test_logging.rs:44:5:44:35 | ...::log | This operation writes $@ to a log file. | test_logging.rs:44:27:44:34 | password | password | +| test_logging.rs:45:5:45:36 | ...::log | test_logging.rs:45:28:45:35 | password | test_logging.rs:45:5:45:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:45:28:45:35 | password | password | +| test_logging.rs:46:5:46:35 | ...::log | test_logging.rs:46:27:46:34 | password | test_logging.rs:46:5:46:35 | ...::log | This operation writes $@ to a log file. | test_logging.rs:46:27:46:34 | password | password | +| test_logging.rs:47:5:47:48 | ...::log | test_logging.rs:47:40:47:47 | password | test_logging.rs:47:5:47:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:47:40:47:47 | password | password | +| test_logging.rs:52:5:52:36 | ...::log | test_logging.rs:52:28:52:35 | password | test_logging.rs:52:5:52:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:52:28:52:35 | password | password | +| test_logging.rs:54:5:54:49 | ...::log | test_logging.rs:54:41:54:48 | password | test_logging.rs:54:5:54:49 | ...::log | This operation writes $@ to a log file. | test_logging.rs:54:41:54:48 | password | password | +| test_logging.rs:56:5:56:47 | ...::log | test_logging.rs:56:39:56:46 | password | test_logging.rs:56:5:56:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:56:39:56:46 | password | password | +| test_logging.rs:57:5:57:34 | ...::log | test_logging.rs:57:24:57:31 | password | test_logging.rs:57:5:57:34 | ...::log | This operation writes $@ to a log file. | test_logging.rs:57:24:57:31 | password | password | +| test_logging.rs:58:5:58:36 | ...::log | test_logging.rs:58:24:58:31 | password | test_logging.rs:58:5:58:36 | ...::log | This operation writes $@ to a log file. | test_logging.rs:58:24:58:31 | password | password | +| test_logging.rs:60:5:60:54 | ...::log | test_logging.rs:60:46:60:53 | password | test_logging.rs:60:5:60:54 | ...::log | This operation writes $@ to a log file. | test_logging.rs:60:46:60:53 | password | password | | test_logging.rs:61:5:61:55 | ...::log | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:5:61:55 | ...::log | This operation writes $@ to a log file. | test_logging.rs:61:21:61:28 | password | password | +| test_logging.rs:65:5:65:48 | ...::log | test_logging.rs:65:40:65:47 | password | test_logging.rs:65:5:65:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:65:40:65:47 | password | password | +| test_logging.rs:67:5:67:66 | ...::log | test_logging.rs:67:58:67:65 | password | test_logging.rs:67:5:67:66 | ...::log | This operation writes $@ to a log file. | test_logging.rs:67:58:67:65 | password | password | | test_logging.rs:68:5:68:67 | ...::log | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:5:68:67 | ...::log | This operation writes $@ to a log file. | test_logging.rs:68:19:68:26 | password | password | +| test_logging.rs:72:5:72:47 | ...::log | test_logging.rs:72:39:72:46 | password | test_logging.rs:72:5:72:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:72:39:72:46 | password | password | +| test_logging.rs:74:5:74:65 | ...::log | test_logging.rs:74:57:74:64 | password | test_logging.rs:74:5:74:65 | ...::log | This operation writes $@ to a log file. | test_logging.rs:74:57:74:64 | password | password | | test_logging.rs:75:5:75:51 | ...::log | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:5:75:51 | ...::log | This operation writes $@ to a log file. | test_logging.rs:75:21:75:28 | password | password | +| test_logging.rs:76:5:76:47 | ...::log | test_logging.rs:76:39:76:46 | password | test_logging.rs:76:5:76:47 | ...::log | This operation writes $@ to a log file. | test_logging.rs:76:39:76:46 | password | password | +| test_logging.rs:82:5:82:44 | ...::log | test_logging.rs:82:36:82:43 | password | test_logging.rs:82:5:82:44 | ...::log | This operation writes $@ to a log file. | test_logging.rs:82:36:82:43 | password | password | +| test_logging.rs:84:5:84:62 | ...::log | test_logging.rs:84:54:84:61 | password | test_logging.rs:84:5:84:62 | ...::log | This operation writes $@ to a log file. | test_logging.rs:84:54:84:61 | password | password | | test_logging.rs:85:5:85:48 | ...::log | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:5:85:48 | ...::log | This operation writes $@ to a log file. | test_logging.rs:85:21:85:28 | password | password | +| test_logging.rs:86:5:86:44 | ...::log | test_logging.rs:86:36:86:43 | password | test_logging.rs:86:5:86:44 | ...::log | This operation writes $@ to a log file. | test_logging.rs:86:36:86:43 | password | password | +| test_logging.rs:94:5:94:29 | ...::log | test_logging.rs:93:15:93:22 | password | test_logging.rs:94:5:94:29 | ...::log | This operation writes $@ to a log file. | test_logging.rs:93:15:93:22 | password | password | +| test_logging.rs:97:5:97:19 | ...::log | test_logging.rs:96:42:96:49 | password | test_logging.rs:97:5:97:19 | ...::log | This operation writes $@ to a log file. | test_logging.rs:96:42:96:49 | password | password | +| test_logging.rs:100:5:100:19 | ...::log | test_logging.rs:99:38:99:45 | password | test_logging.rs:100:5:100:19 | ...::log | This operation writes $@ to a log file. | test_logging.rs:99:38:99:45 | password | password | +| test_logging.rs:118:5:118:42 | ...::log | test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:5:118:42 | ...::log | This operation writes $@ to a log file. | test_logging.rs:118:28:118:41 | get_password(...) | get_password(...) | +| test_logging.rs:131:5:131:32 | ...::log | test_logging.rs:129:25:129:32 | password | test_logging.rs:131:5:131:32 | ...::log | This operation writes $@ to a log file. | test_logging.rs:129:25:129:32 | password | password | | test_logging.rs:152:5:152:38 | ...::_print | test_logging.rs:152:30:152:37 | password | test_logging.rs:152:5:152:38 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:152:30:152:37 | password | password | | test_logging.rs:153:5:153:38 | ...::_print | test_logging.rs:153:30:153:37 | password | test_logging.rs:153:5:153:38 | ...::_print | This operation writes $@ to a log file. | test_logging.rs:153:30:153:37 | password | password | | test_logging.rs:154:5:154:39 | ...::_eprint | test_logging.rs:154:31:154:38 | password | test_logging.rs:154:5:154:39 | ...::_eprint | This operation writes $@ to a log file. | test_logging.rs:154:31:154:38 | password | password | @@ -23,42 +48,106 @@ | test_logging.rs:178:9:178:13 | write | test_logging.rs:178:41:178:48 | password | test_logging.rs:178:9:178:13 | write | This operation writes $@ to a log file. | test_logging.rs:178:41:178:48 | password | password | | test_logging.rs:181:9:181:13 | write | test_logging.rs:181:41:181:48 | password | test_logging.rs:181:9:181:13 | write | This operation writes $@ to a log file. | test_logging.rs:181:41:181:48 | password | password | edges -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | +| test_logging.rs:42:12:42:35 | MacroExpr | test_logging.rs:42:5:42:36 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:42:28:42:35 | password | test_logging.rs:42:12:42:35 | MacroExpr | provenance | | +| test_logging.rs:43:12:43:35 | MacroExpr | test_logging.rs:43:5:43:36 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:43:28:43:35 | password | test_logging.rs:43:12:43:35 | MacroExpr | provenance | | +| test_logging.rs:44:11:44:34 | MacroExpr | test_logging.rs:44:5:44:35 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:44:27:44:34 | password | test_logging.rs:44:11:44:34 | MacroExpr | provenance | | +| test_logging.rs:45:12:45:35 | MacroExpr | test_logging.rs:45:5:45:36 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:45:28:45:35 | password | test_logging.rs:45:12:45:35 | MacroExpr | provenance | | +| test_logging.rs:46:11:46:34 | MacroExpr | test_logging.rs:46:5:46:35 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:46:27:46:34 | password | test_logging.rs:46:11:46:34 | MacroExpr | provenance | | +| test_logging.rs:47:24:47:47 | MacroExpr | test_logging.rs:47:5:47:48 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:47:40:47:47 | password | test_logging.rs:47:24:47:47 | MacroExpr | provenance | | +| test_logging.rs:52:12:52:35 | MacroExpr | test_logging.rs:52:5:52:36 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:52:28:52:35 | password | test_logging.rs:52:12:52:35 | MacroExpr | provenance | | +| test_logging.rs:54:12:54:48 | MacroExpr | test_logging.rs:54:5:54:49 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:54:41:54:48 | password | test_logging.rs:54:12:54:48 | MacroExpr | provenance | | +| test_logging.rs:56:12:56:46 | MacroExpr | test_logging.rs:56:5:56:47 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:56:39:56:46 | password | test_logging.rs:56:12:56:46 | MacroExpr | provenance | | +| test_logging.rs:57:12:57:33 | MacroExpr | test_logging.rs:57:5:57:34 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:57:24:57:31 | password | test_logging.rs:57:12:57:33 | MacroExpr | provenance | | +| test_logging.rs:58:12:58:35 | MacroExpr | test_logging.rs:58:5:58:36 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:58:24:58:31 | password | test_logging.rs:58:12:58:35 | MacroExpr | provenance | | +| test_logging.rs:60:30:60:53 | MacroExpr | test_logging.rs:60:5:60:54 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:60:46:60:53 | password | test_logging.rs:60:30:60:53 | MacroExpr | provenance | | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | test_logging.rs:61:5:61:55 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | | test_logging.rs:61:20:61:28 | &password | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:61:20:61:28 | &password [&ref] | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password | provenance | Config | | test_logging.rs:61:21:61:28 | password | test_logging.rs:61:20:61:28 | &password [&ref] | provenance | | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | +| test_logging.rs:65:24:65:47 | MacroExpr | test_logging.rs:65:5:65:48 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:65:40:65:47 | password | test_logging.rs:65:24:65:47 | MacroExpr | provenance | | +| test_logging.rs:67:42:67:65 | MacroExpr | test_logging.rs:67:5:67:66 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:67:58:67:65 | password | test_logging.rs:67:42:67:65 | MacroExpr | provenance | | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | test_logging.rs:68:5:68:67 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | | test_logging.rs:68:18:68:26 | &password | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:68:18:68:26 | &password [&ref] | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password | provenance | Config | | test_logging.rs:68:19:68:26 | password | test_logging.rs:68:18:68:26 | &password [&ref] | provenance | | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | +| test_logging.rs:72:23:72:46 | MacroExpr | test_logging.rs:72:5:72:47 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:72:39:72:46 | password | test_logging.rs:72:23:72:46 | MacroExpr | provenance | | +| test_logging.rs:74:41:74:64 | MacroExpr | test_logging.rs:74:5:74:65 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:74:57:74:64 | password | test_logging.rs:74:41:74:64 | MacroExpr | provenance | | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | test_logging.rs:75:5:75:51 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | | test_logging.rs:75:20:75:28 | &password | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:75:20:75:28 | &password [&ref] | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password | provenance | Config | | test_logging.rs:75:21:75:28 | password | test_logging.rs:75:20:75:28 | &password [&ref] | provenance | | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 Sink:MaD:9 | -| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:9 Sink:MaD:9 Sink:MaD:9 | +| test_logging.rs:76:23:76:46 | MacroExpr | test_logging.rs:76:5:76:47 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:76:39:76:46 | password | test_logging.rs:76:23:76:46 | MacroExpr | provenance | | +| test_logging.rs:82:20:82:43 | MacroExpr | test_logging.rs:82:5:82:44 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:82:36:82:43 | password | test_logging.rs:82:20:82:43 | MacroExpr | provenance | | +| test_logging.rs:84:38:84:61 | MacroExpr | test_logging.rs:84:5:84:62 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:84:54:84:61 | password | test_logging.rs:84:38:84:61 | MacroExpr | provenance | | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 Sink:MaD:10 | +| test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | test_logging.rs:85:5:85:48 | ...::log | provenance | MaD:10 Sink:MaD:10 Sink:MaD:10 | | test_logging.rs:85:20:85:28 | &password | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | provenance | | | test_logging.rs:85:20:85:28 | &password [&ref] | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | provenance | | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | provenance | | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | provenance | | | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password | provenance | Config | | test_logging.rs:85:21:85:28 | password | test_logging.rs:85:20:85:28 | &password [&ref] | provenance | | +| test_logging.rs:86:20:86:43 | MacroExpr | test_logging.rs:86:5:86:44 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:86:36:86:43 | password | test_logging.rs:86:20:86:43 | MacroExpr | provenance | | +| test_logging.rs:93:9:93:10 | m1 | test_logging.rs:94:11:94:28 | MacroExpr | provenance | | +| test_logging.rs:93:14:93:22 | &password | test_logging.rs:93:9:93:10 | m1 | provenance | | +| test_logging.rs:93:15:93:22 | password | test_logging.rs:93:14:93:22 | &password | provenance | Config | +| test_logging.rs:94:11:94:28 | MacroExpr | test_logging.rs:94:5:94:29 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:96:9:96:10 | m2 | test_logging.rs:97:11:97:18 | MacroExpr | provenance | | +| test_logging.rs:96:41:96:49 | &password | test_logging.rs:96:9:96:10 | m2 | provenance | | +| test_logging.rs:96:42:96:49 | password | test_logging.rs:96:41:96:49 | &password | provenance | Config | +| test_logging.rs:97:11:97:18 | MacroExpr | test_logging.rs:97:5:97:19 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:99:9:99:10 | m3 | test_logging.rs:100:11:100:18 | MacroExpr | provenance | | +| test_logging.rs:99:14:99:46 | res | test_logging.rs:99:22:99:45 | { ... } | provenance | | +| test_logging.rs:99:22:99:45 | ...::format(...) | test_logging.rs:99:14:99:46 | res | provenance | | +| test_logging.rs:99:22:99:45 | ...::must_use(...) | test_logging.rs:99:9:99:10 | m3 | provenance | | +| test_logging.rs:99:22:99:45 | MacroExpr | test_logging.rs:99:22:99:45 | ...::format(...) | provenance | MaD:13 | +| test_logging.rs:99:22:99:45 | { ... } | test_logging.rs:99:22:99:45 | ...::must_use(...) | provenance | MaD:14 | +| test_logging.rs:99:38:99:45 | password | test_logging.rs:99:22:99:45 | MacroExpr | provenance | | +| test_logging.rs:100:11:100:18 | MacroExpr | test_logging.rs:100:5:100:19 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:118:12:118:41 | MacroExpr | test_logging.rs:118:5:118:42 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:118:28:118:41 | get_password(...) | test_logging.rs:118:12:118:41 | MacroExpr | provenance | | +| test_logging.rs:129:9:129:10 | t1 [tuple.1] | test_logging.rs:131:28:131:29 | t1 [tuple.1] | provenance | | +| test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | test_logging.rs:129:9:129:10 | t1 [tuple.1] | provenance | | +| test_logging.rs:129:25:129:32 | password | test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | provenance | | +| test_logging.rs:131:12:131:31 | MacroExpr | test_logging.rs:131:5:131:32 | ...::log | provenance | MaD:9 Sink:MaD:9 | +| test_logging.rs:131:28:131:29 | t1 [tuple.1] | test_logging.rs:131:28:131:31 | t1.1 | provenance | | +| test_logging.rs:131:28:131:31 | t1.1 | test_logging.rs:131:12:131:31 | MacroExpr | provenance | | | test_logging.rs:152:12:152:37 | MacroExpr | test_logging.rs:152:5:152:38 | ...::_print | provenance | MaD:8 Sink:MaD:8 | | test_logging.rs:152:30:152:37 | password | test_logging.rs:152:12:152:37 | MacroExpr | provenance | | | test_logging.rs:153:14:153:37 | MacroExpr | test_logging.rs:153:5:153:38 | ...::_print | provenance | MaD:8 Sink:MaD:8 | @@ -94,37 +183,37 @@ edges | test_logging.rs:168:34:168:66 | res | test_logging.rs:168:42:168:65 | { ... } | provenance | | | test_logging.rs:168:34:168:75 | ... .as_str(...) | test_logging.rs:168:27:168:32 | expect | provenance | MaD:1 Sink:MaD:1 | | test_logging.rs:168:42:168:65 | ...::format(...) | test_logging.rs:168:34:168:66 | res | provenance | | -| test_logging.rs:168:42:168:65 | ...::must_use(...) | test_logging.rs:168:34:168:75 | ... .as_str(...) | provenance | MaD:11 | -| test_logging.rs:168:42:168:65 | MacroExpr | test_logging.rs:168:42:168:65 | ...::format(...) | provenance | MaD:12 | -| test_logging.rs:168:42:168:65 | { ... } | test_logging.rs:168:42:168:65 | ...::must_use(...) | provenance | MaD:13 | +| test_logging.rs:168:42:168:65 | ...::must_use(...) | test_logging.rs:168:34:168:75 | ... .as_str(...) | provenance | MaD:12 | +| test_logging.rs:168:42:168:65 | MacroExpr | test_logging.rs:168:42:168:65 | ...::format(...) | provenance | MaD:13 | +| test_logging.rs:168:42:168:65 | { ... } | test_logging.rs:168:42:168:65 | ...::must_use(...) | provenance | MaD:14 | | test_logging.rs:168:58:168:65 | password | test_logging.rs:168:42:168:65 | MacroExpr | provenance | | | test_logging.rs:174:36:174:70 | res | test_logging.rs:174:44:174:69 | { ... } | provenance | | | test_logging.rs:174:36:174:81 | ... .as_bytes(...) | test_logging.rs:174:30:174:34 | write | provenance | MaD:5 Sink:MaD:5 | | test_logging.rs:174:44:174:69 | ...::format(...) | test_logging.rs:174:36:174:70 | res | provenance | | -| test_logging.rs:174:44:174:69 | ...::must_use(...) | test_logging.rs:174:36:174:81 | ... .as_bytes(...) | provenance | MaD:10 | -| test_logging.rs:174:44:174:69 | MacroExpr | test_logging.rs:174:44:174:69 | ...::format(...) | provenance | MaD:12 | -| test_logging.rs:174:44:174:69 | { ... } | test_logging.rs:174:44:174:69 | ...::must_use(...) | provenance | MaD:13 | +| test_logging.rs:174:44:174:69 | ...::must_use(...) | test_logging.rs:174:36:174:81 | ... .as_bytes(...) | provenance | MaD:11 | +| test_logging.rs:174:44:174:69 | MacroExpr | test_logging.rs:174:44:174:69 | ...::format(...) | provenance | MaD:13 | +| test_logging.rs:174:44:174:69 | { ... } | test_logging.rs:174:44:174:69 | ...::must_use(...) | provenance | MaD:14 | | test_logging.rs:174:62:174:69 | password | test_logging.rs:174:44:174:69 | MacroExpr | provenance | | | test_logging.rs:175:40:175:74 | res | test_logging.rs:175:48:175:73 | { ... } | provenance | | | test_logging.rs:175:40:175:85 | ... .as_bytes(...) | test_logging.rs:175:30:175:38 | write_all | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:175:48:175:73 | ...::format(...) | test_logging.rs:175:40:175:74 | res | provenance | | -| test_logging.rs:175:48:175:73 | ...::must_use(...) | test_logging.rs:175:40:175:85 | ... .as_bytes(...) | provenance | MaD:10 | -| test_logging.rs:175:48:175:73 | MacroExpr | test_logging.rs:175:48:175:73 | ...::format(...) | provenance | MaD:12 | -| test_logging.rs:175:48:175:73 | { ... } | test_logging.rs:175:48:175:73 | ...::must_use(...) | provenance | MaD:13 | +| test_logging.rs:175:48:175:73 | ...::must_use(...) | test_logging.rs:175:40:175:85 | ... .as_bytes(...) | provenance | MaD:11 | +| test_logging.rs:175:48:175:73 | MacroExpr | test_logging.rs:175:48:175:73 | ...::format(...) | provenance | MaD:13 | +| test_logging.rs:175:48:175:73 | { ... } | test_logging.rs:175:48:175:73 | ...::must_use(...) | provenance | MaD:14 | | test_logging.rs:175:66:175:73 | password | test_logging.rs:175:48:175:73 | MacroExpr | provenance | | | test_logging.rs:178:15:178:49 | res | test_logging.rs:178:23:178:48 | { ... } | provenance | | | test_logging.rs:178:15:178:60 | ... .as_bytes(...) | test_logging.rs:178:9:178:13 | write | provenance | MaD:5 Sink:MaD:5 | | test_logging.rs:178:23:178:48 | ...::format(...) | test_logging.rs:178:15:178:49 | res | provenance | | -| test_logging.rs:178:23:178:48 | ...::must_use(...) | test_logging.rs:178:15:178:60 | ... .as_bytes(...) | provenance | MaD:10 | -| test_logging.rs:178:23:178:48 | MacroExpr | test_logging.rs:178:23:178:48 | ...::format(...) | provenance | MaD:12 | -| test_logging.rs:178:23:178:48 | { ... } | test_logging.rs:178:23:178:48 | ...::must_use(...) | provenance | MaD:13 | +| test_logging.rs:178:23:178:48 | ...::must_use(...) | test_logging.rs:178:15:178:60 | ... .as_bytes(...) | provenance | MaD:11 | +| test_logging.rs:178:23:178:48 | MacroExpr | test_logging.rs:178:23:178:48 | ...::format(...) | provenance | MaD:13 | +| test_logging.rs:178:23:178:48 | { ... } | test_logging.rs:178:23:178:48 | ...::must_use(...) | provenance | MaD:14 | | test_logging.rs:178:41:178:48 | password | test_logging.rs:178:23:178:48 | MacroExpr | provenance | | | test_logging.rs:181:15:181:49 | res | test_logging.rs:181:23:181:48 | { ... } | provenance | | | test_logging.rs:181:15:181:60 | ... .as_bytes(...) | test_logging.rs:181:9:181:13 | write | provenance | MaD:4 Sink:MaD:4 | | test_logging.rs:181:23:181:48 | ...::format(...) | test_logging.rs:181:15:181:49 | res | provenance | | -| test_logging.rs:181:23:181:48 | ...::must_use(...) | test_logging.rs:181:15:181:60 | ... .as_bytes(...) | provenance | MaD:10 | -| test_logging.rs:181:23:181:48 | MacroExpr | test_logging.rs:181:23:181:48 | ...::format(...) | provenance | MaD:12 | -| test_logging.rs:181:23:181:48 | { ... } | test_logging.rs:181:23:181:48 | ...::must_use(...) | provenance | MaD:13 | +| test_logging.rs:181:23:181:48 | ...::must_use(...) | test_logging.rs:181:15:181:60 | ... .as_bytes(...) | provenance | MaD:11 | +| test_logging.rs:181:23:181:48 | MacroExpr | test_logging.rs:181:23:181:48 | ...::format(...) | provenance | MaD:13 | +| test_logging.rs:181:23:181:48 | { ... } | test_logging.rs:181:23:181:48 | ...::must_use(...) | provenance | MaD:14 | | test_logging.rs:181:41:181:48 | password | test_logging.rs:181:23:181:48 | MacroExpr | provenance | | models | 1 | Sink: lang:core; ::expect; log-injection; Argument[0] | @@ -135,12 +224,49 @@ models | 6 | Sink: lang:std; ::write_all; log-injection; Argument[0] | | 7 | Sink: lang:std; crate::io::stdio::_eprint; log-injection; Argument[0] | | 8 | Sink: lang:std; crate::io::stdio::_print; log-injection; Argument[0] | -| 9 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[3] | -| 10 | Summary: lang:alloc; ::as_bytes; Argument[self]; ReturnValue; taint | -| 11 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; taint | -| 12 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | -| 13 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | +| 9 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[1] | +| 10 | Sink: repo:https://github.com/rust-lang/log:log; crate::__private_api::log; log-injection; Argument[3] | +| 11 | Summary: lang:alloc; ::as_bytes; Argument[self]; ReturnValue; taint | +| 12 | Summary: lang:alloc; ::as_str; Argument[self]; ReturnValue; taint | +| 13 | Summary: lang:alloc; crate::fmt::format; Argument[0]; ReturnValue; taint | +| 14 | Summary: lang:core; crate::hint::must_use; Argument[0]; ReturnValue; value | nodes +| test_logging.rs:42:5:42:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:42:12:42:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:42:28:42:35 | password | semmle.label | password | +| test_logging.rs:43:5:43:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:43:12:43:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:43:28:43:35 | password | semmle.label | password | +| test_logging.rs:44:5:44:35 | ...::log | semmle.label | ...::log | +| test_logging.rs:44:11:44:34 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:44:27:44:34 | password | semmle.label | password | +| test_logging.rs:45:5:45:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:45:12:45:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:45:28:45:35 | password | semmle.label | password | +| test_logging.rs:46:5:46:35 | ...::log | semmle.label | ...::log | +| test_logging.rs:46:11:46:34 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:46:27:46:34 | password | semmle.label | password | +| test_logging.rs:47:5:47:48 | ...::log | semmle.label | ...::log | +| test_logging.rs:47:24:47:47 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:47:40:47:47 | password | semmle.label | password | +| test_logging.rs:52:5:52:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:52:12:52:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:52:28:52:35 | password | semmle.label | password | +| test_logging.rs:54:5:54:49 | ...::log | semmle.label | ...::log | +| test_logging.rs:54:12:54:48 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:54:41:54:48 | password | semmle.label | password | +| test_logging.rs:56:5:56:47 | ...::log | semmle.label | ...::log | +| test_logging.rs:56:12:56:46 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:56:39:56:46 | password | semmle.label | password | +| test_logging.rs:57:5:57:34 | ...::log | semmle.label | ...::log | +| test_logging.rs:57:12:57:33 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:57:24:57:31 | password | semmle.label | password | +| test_logging.rs:58:5:58:36 | ...::log | semmle.label | ...::log | +| test_logging.rs:58:12:58:35 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:58:24:58:31 | password | semmle.label | password | +| test_logging.rs:60:5:60:54 | ...::log | semmle.label | ...::log | +| test_logging.rs:60:30:60:53 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:60:46:60:53 | password | semmle.label | password | | test_logging.rs:61:5:61:55 | ...::log | semmle.label | ...::log | | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:61:20:61:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | @@ -149,6 +275,12 @@ nodes | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:61:20:61:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:61:21:61:28 | password | semmle.label | password | +| test_logging.rs:65:5:65:48 | ...::log | semmle.label | ...::log | +| test_logging.rs:65:24:65:47 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:65:40:65:47 | password | semmle.label | password | +| test_logging.rs:67:5:67:66 | ...::log | semmle.label | ...::log | +| test_logging.rs:67:42:67:65 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:67:58:67:65 | password | semmle.label | password | | test_logging.rs:68:5:68:67 | ...::log | semmle.label | ...::log | | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:68:18:68:26 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | @@ -157,6 +289,12 @@ nodes | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:68:18:68:26 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:68:19:68:26 | password | semmle.label | password | +| test_logging.rs:72:5:72:47 | ...::log | semmle.label | ...::log | +| test_logging.rs:72:23:72:46 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:72:39:72:46 | password | semmle.label | password | +| test_logging.rs:74:5:74:65 | ...::log | semmle.label | ...::log | +| test_logging.rs:74:41:74:64 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:74:57:74:64 | password | semmle.label | password | | test_logging.rs:75:5:75:51 | ...::log | semmle.label | ...::log | | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:75:20:75:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | @@ -165,6 +303,15 @@ nodes | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:75:20:75:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:75:21:75:28 | password | semmle.label | password | +| test_logging.rs:76:5:76:47 | ...::log | semmle.label | ...::log | +| test_logging.rs:76:23:76:46 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:76:39:76:46 | password | semmle.label | password | +| test_logging.rs:82:5:82:44 | ...::log | semmle.label | ...::log | +| test_logging.rs:82:20:82:43 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:82:36:82:43 | password | semmle.label | password | +| test_logging.rs:84:5:84:62 | ...::log | semmle.label | ...::log | +| test_logging.rs:84:38:84:61 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:84:54:84:61 | password | semmle.label | password | | test_logging.rs:85:5:85:48 | ...::log | semmle.label | ...::log | | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0, &ref] | semmle.label | &... [&ref, tuple.0, &ref] | | test_logging.rs:85:20:85:28 | &... [&ref, tuple.0] | semmle.label | &... [&ref, tuple.0] | @@ -173,6 +320,38 @@ nodes | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0, &ref] | semmle.label | TupleExpr [tuple.0, &ref] | | test_logging.rs:85:20:85:28 | TupleExpr [tuple.0] | semmle.label | TupleExpr [tuple.0] | | test_logging.rs:85:21:85:28 | password | semmle.label | password | +| test_logging.rs:86:5:86:44 | ...::log | semmle.label | ...::log | +| test_logging.rs:86:20:86:43 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:86:36:86:43 | password | semmle.label | password | +| test_logging.rs:93:9:93:10 | m1 | semmle.label | m1 | +| test_logging.rs:93:14:93:22 | &password | semmle.label | &password | +| test_logging.rs:93:15:93:22 | password | semmle.label | password | +| test_logging.rs:94:5:94:29 | ...::log | semmle.label | ...::log | +| test_logging.rs:94:11:94:28 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:96:9:96:10 | m2 | semmle.label | m2 | +| test_logging.rs:96:41:96:49 | &password | semmle.label | &password | +| test_logging.rs:96:42:96:49 | password | semmle.label | password | +| test_logging.rs:97:5:97:19 | ...::log | semmle.label | ...::log | +| test_logging.rs:97:11:97:18 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:99:9:99:10 | m3 | semmle.label | m3 | +| test_logging.rs:99:14:99:46 | res | semmle.label | res | +| test_logging.rs:99:22:99:45 | ...::format(...) | semmle.label | ...::format(...) | +| test_logging.rs:99:22:99:45 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| test_logging.rs:99:22:99:45 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:99:22:99:45 | { ... } | semmle.label | { ... } | +| test_logging.rs:99:38:99:45 | password | semmle.label | password | +| test_logging.rs:100:5:100:19 | ...::log | semmle.label | ...::log | +| test_logging.rs:100:11:100:18 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:118:5:118:42 | ...::log | semmle.label | ...::log | +| test_logging.rs:118:12:118:41 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:118:28:118:41 | get_password(...) | semmle.label | get_password(...) | +| test_logging.rs:129:9:129:10 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | +| test_logging.rs:129:14:129:33 | TupleExpr [tuple.1] | semmle.label | TupleExpr [tuple.1] | +| test_logging.rs:129:25:129:32 | password | semmle.label | password | +| test_logging.rs:131:5:131:32 | ...::log | semmle.label | ...::log | +| test_logging.rs:131:12:131:31 | MacroExpr | semmle.label | MacroExpr | +| test_logging.rs:131:28:131:29 | t1 [tuple.1] | semmle.label | t1 [tuple.1] | +| test_logging.rs:131:28:131:31 | t1.1 | semmle.label | t1.1 | | test_logging.rs:152:5:152:38 | ...::_print | semmle.label | ...::_print | | test_logging.rs:152:12:152:37 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:152:30:152:37 | password | semmle.label | password | @@ -260,33 +439,3 @@ nodes | test_logging.rs:181:23:181:48 | { ... } | semmle.label | { ... } | | test_logging.rs:181:41:181:48 | password | semmle.label | password | subpaths -testFailures -| test_logging.rs:42:39:42:72 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:43:39:43:72 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:44:38:44:71 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:45:39:45:72 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:46:38:46:71 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:47:51:47:84 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:52:39:52:72 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:54:52:54:85 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:56:50:56:83 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:57:37:57:70 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:58:39:58:72 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:60:57:60:90 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:65:51:65:84 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:67:69:67:102 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:72:50:72:83 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:74:68:74:101 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:76:50:76:83 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:82:47:82:80 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:84:65:84:98 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:86:47:86:80 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:93:25:93:38 | //... | Missing result: Source=m1 | -| test_logging.rs:94:32:94:68 | //... | Missing result: Alert[rust/cleartext-logging]=m1 | -| test_logging.rs:96:52:96:65 | //... | Missing result: Source=m2 | -| test_logging.rs:97:22:97:58 | //... | Missing result: Alert[rust/cleartext-logging]=m2 | -| test_logging.rs:99:49:99:62 | //... | Missing result: Source=m3 | -| test_logging.rs:100:22:100:59 | //... | Missing result: Alert[rust/cleartext-logging]=m3 | -| test_logging.rs:118:45:118:78 | //... | Missing result: Alert[rust/cleartext-logging] | -| test_logging.rs:129:36:129:49 | //... | Missing result: Source=t1 | -| test_logging.rs:131:35:131:71 | //... | Missing result: Alert[rust/cleartext-logging]=t1 | diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index 9b8ef6f564e..56c9fc34b1b 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -1804,7 +1804,7 @@ class _: """ -@annotate(Variant, replace_bases={AstNode: Addressable}) +@annotate(Variant, add_bases=(Addressable,)) class _: """ A Variant. For example: diff --git a/rust/schema/ast.py b/rust/schema/ast.py index a7391c4dd87..3f91cab5835 100644 --- a/rust/schema/ast.py +++ b/rust/schema/ast.py @@ -38,6 +38,9 @@ class TypeRepr(AstNode, ): class UseBoundGenericArg(AstNode, ): pass +class VariantDef(AstNode, ): + pass + class Item(Stmt, ): pass @@ -621,7 +624,7 @@ class StmtList(AstNode, ): statements: list["Stmt"] | child tail_expr: optional["Expr"] | child -class Struct(Item, ): +class Struct(Item, VariantDef, ): attrs: list["Attr"] | child field_list: optional["FieldList"] | child generic_param_list: optional["GenericParamList"] | child @@ -709,7 +712,7 @@ class TypeParam(GenericParam, ): class UnderscoreExpr(Expr, ): attrs: list["Attr"] | child -class Union(Item, ): +class Union(Item, VariantDef, ): attrs: list["Attr"] | child generic_param_list: optional["GenericParamList"] | child name: optional["Name"] | child @@ -734,7 +737,7 @@ class UseTree(AstNode, ): class UseTreeList(AstNode, ): use_trees: list["UseTree"] | child -class Variant(AstNode, ): +class Variant(VariantDef, ): attrs: list["Attr"] | child expr: optional["Expr"] | child field_list: optional["FieldList"] | child diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index b893c75eb8e..47578bee7b9 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -1493,8 +1493,34 @@ module Make Input> { predicate controlsBranchEdge(BasicBlock bb1, BasicBlock bb2, boolean branch); } + /** Holds if `guard` directly controls block `bb` upon evaluating to `branch`. */ + predicate guardDirectlyControlsBlock(Guard guard, BasicBlock bb, boolean branch); + /** Holds if `guard` controls block `bb` upon evaluating to `branch`. */ - predicate guardControlsBlock(Guard guard, BasicBlock bb, boolean branch); + default predicate guardControlsBlock(Guard guard, BasicBlock bb, boolean branch) { + guardDirectlyControlsBlock(guard, bb, branch) + } + + /** + * Holds if `WriteDefinition`s should be included as an intermediate node + * between the assigned `Expr` or `Parameter` and the first read of the SSA + * definition. + */ + default predicate includeWriteDefsInFlowStep() { any() } + + /** + * Holds if barrier guards should be supported on input edges to phi + * nodes. Disable this only if barrier guards are not going to be used. + */ + default predicate supportBarrierGuardsOnPhiEdges() { any() } + + /** + * Holds if all phi input back edges should be kept in the data flow graph. + * + * This is ordinarily not necessary and causes the retention of superfluous + * nodes. + */ + default predicate keepAllPhiInputBackEdges() { none() } } /** @@ -1508,9 +1534,9 @@ module Make Input> { final private class DefinitionExtFinal = DefinitionExt; - /** An SSA definition into which another SSA definition may flow. */ - private class SsaInputDefinitionExt extends DefinitionExtFinal { - SsaInputDefinitionExt() { + /** An SSA definition which is either a phi node or a phi read node. */ + private class SsaPhiExt extends DefinitionExtFinal { + SsaPhiExt() { this instanceof PhiNode or this instanceof PhiReadNode @@ -1518,7 +1544,7 @@ module Make Input> { } cached - private Definition getAPhiInputDef(SsaInputDefinitionExt phi, BasicBlock bb) { + private Definition getAPhiInputDef(SsaPhiExt phi, BasicBlock bb) { exists(SourceVariable v, BasicBlock bbDef | phi.definesAt(v, bbDef, _, _) and getABasicBlockPredecessor(bbDef) = bb and @@ -1526,6 +1552,118 @@ module Make Input> { ) } + /** + * Holds if the phi input edge from `input` to `phi` is a back edge and + * must be kept. + */ + private predicate relevantBackEdge(SsaPhiExt phi, BasicBlock input) { + exists(BasicBlock bbPhi | + DfInput::keepAllPhiInputBackEdges() and + exists(getAPhiInputDef(phi, input)) and + phi.getBasicBlock() = bbPhi and + getImmediateBasicBlockDominator+(input) = bbPhi + ) + } + + /** + * Holds if the input to `phi` from the block `input` might be relevant for + * barrier guards as a separately synthesized `TSsaInputNode`. + * + * Note that `TSsaInputNode`s have both unique predecessors and unique + * successors, both of which are given by `adjacentRefPhi`, so we can + * always skip them in the flow graph without increasing the number of flow + * edges, if they are not needed for barrier guards. + */ + private predicate relevantPhiInputNode(SsaPhiExt phi, BasicBlock input) { + relevantBackEdge(phi, input) + or + DfInput::supportBarrierGuardsOnPhiEdges() and + // If the input isn't explicitly read then a guard cannot check it. + exists(DfInput::getARead(getAPhiInputDef(phi, input))) and + ( + // The input node is relevant either if it sits directly on a branch + // edge for a guard, + exists(DfInput::Guard g | g.controlsBranchEdge(input, phi.getBasicBlock(), _)) + or + // or if the unique predecessor is not an equivalent substitute in + // terms of being controlled by the same guards. + // Example: + // ``` + // if (g1) { + // use(x); // A + // if (g2) { .. } + // // no need for an input node here, as the set of guards controlling + // // this block is the same as the set of guards controlling the prior + // // use of `x` at A. + // } + // // phi-read node for `x` + // ``` + exists(BasicBlock prev | + AdjacentSsaRefs::adjacentRefPhi(prev, _, input, phi.getBasicBlock(), + phi.getSourceVariable()) and + prev != input and + exists(DfInput::Guard g, boolean branch | + DfInput::guardDirectlyControlsBlock(g, input, branch) and + not DfInput::guardDirectlyControlsBlock(g, prev, branch) + ) + ) + ) + } + + /** + * Holds if a next adjacent use of `phi` is as input to `phi2` through + * `input`. The boolean `relevant` indicates whether the input edge might + * be relevant for barrier guards. + */ + private predicate phiStepsToPhiInput( + SsaPhiExt phi, SsaPhiExt phi2, BasicBlock input, boolean relevant + ) { + exists(BasicBlock bb1, int i, SourceVariable v, BasicBlock bb2 | + phi.definesAt(pragma[only_bind_into](v), bb1, i, _) and + AdjacentSsaRefs::adjacentRefPhi(bb1, i, input, bb2, v) and + phi2.definesAt(pragma[only_bind_into](v), bb2, _, _) and + if relevantPhiInputNode(phi2, input) then relevant = true else relevant = false + ) + } + + /** + * Holds if a next adjacent use of `phi` occurs at index `i` in basic block + * `bb`. The boolean `isUse` indicates whether the use is a read or an + * uncertain write. + */ + private predicate phiStepsToRef(SsaPhiExt phi, BasicBlock bb, int i, boolean isUse) { + exists(SourceVariable v, BasicBlock bb1, int i1 | + phi.definesAt(v, bb1, i1, _) and + AdjacentSsaRefs::adjacentRefRead(bb1, i1, bb, i, v) + | + isUse = true and + variableRead(bb, i, v, true) + or + isUse = false and + exists(UncertainWriteDefinition def2 | + DfInput::allowFlowIntoUncertainDef(def2) and + def2.definesAt(v, bb, i) + ) + ) + } + + /** + * Holds if the next adjacent use of `phi` is unique. In this case, we can + * skip the phi in the use-use step relation without increasing the number + * flow edges. + */ + private predicate phiHasUniqNextNode(SsaPhiExt phi) { + not relevantBackEdge(phi, _) and + exists(int nextPhiInput, int nextPhi, int nextRef | + 1 = nextPhiInput + nextPhi + nextRef and + nextPhiInput = + count(SsaPhiExt phi2, BasicBlock input | phiStepsToPhiInput(phi, phi2, input, true)) and + nextPhi = count(SsaPhiExt phi2 | phiStepsToPhiInput(phi, phi2, _, false)) and + nextRef = count(BasicBlock bb, int i, boolean isUse | phiStepsToRef(phi, bb, i, isUse)) + ) + } + + cached private newtype TNode = TParamNode(DfInput::Parameter p) { exists(WriteDefinition def | DfInput::ssaDefInitializesParam(def, p)) @@ -1538,10 +1676,8 @@ module Make Input> { isPost = false ) } or - TSsaDefinitionNode(DefinitionExt def) or - TSsaInputNode(SsaInputDefinitionExt phi, BasicBlock input) { - exists(getAPhiInputDef(phi, input)) - } + TSsaDefinitionNode(DefinitionExt def) { not phiHasUniqNextNode(def) } or + TSsaInputNode(SsaPhiExt phi, BasicBlock input) { relevantPhiInputNode(phi, input) } /** * A data flow node that we need to reference in the value step relation. @@ -1743,7 +1879,7 @@ module Make Input> { * both inputs into the phi read node after the outer condition are guarded. */ private class SsaInputNodeImpl extends SsaNodeImpl, TSsaInputNode { - private SsaInputDefinitionExt def_; + private SsaPhiExt def_; private BasicBlock input_; SsaInputNodeImpl() { this = TSsaInputNode(def_, input_) } @@ -1754,9 +1890,9 @@ module Make Input> { input = input_ } - SsaInputDefinitionExt getPhi() { result = def_ } + SsaPhiExt getPhi() { result = def_ } - deprecated override SsaInputDefinitionExt getDefinitionExt() { result = def_ } + deprecated override SsaPhiExt getDefinitionExt() { result = def_ } override BasicBlock getBasicBlock() { result = input_ } @@ -1783,13 +1919,55 @@ module Make Input> { exists(DefinitionExt def | nodeFrom.(SsaDefinitionExtNodeImpl).getDefExt() = def and def.definesAt(v, bb, i, _) and - isUseStep = false + isUseStep = false and + if DfInput::includeWriteDefsInFlowStep() + then any() + else ( + def instanceof PhiNode or + def instanceof PhiReadNode or + DfInput::allowFlowIntoUncertainDef(def) + ) ) or [nodeFrom, nodeFrom.(ExprPostUpdateNode).getPreUpdateNode()].(ReadNode).readsAt(bb, i, v) and isUseStep = true } + private predicate flowFromRefToNode(SourceVariable v, BasicBlock bb1, int i1, Node nodeTo) { + // Flow from definition/read to next read + exists(BasicBlock bb2, int i2 | + AdjacentSsaRefs::adjacentRefRead(bb1, i1, bb2, i2, v) and + nodeTo.(ReadNode).readsAt(bb2, i2, v) + ) + or + // Flow from definition/read to next uncertain write + exists(BasicBlock bb2, int i2 | + AdjacentSsaRefs::adjacentRefRead(bb1, i1, bb2, i2, v) and + exists(UncertainWriteDefinition def2 | + DfInput::allowFlowIntoUncertainDef(def2) and + nodeTo.(SsaDefinitionNode).getDefinition() = def2 and + def2.definesAt(v, bb2, i2) + ) + ) + or + // Flow from definition/read to phi input + exists(BasicBlock input, BasicBlock bbPhi, DefinitionExt phi | + AdjacentSsaRefs::adjacentRefPhi(bb1, i1, input, bbPhi, v) and + phi.definesAt(v, bbPhi, -1, _) + | + if relevantPhiInputNode(phi, input) + then nodeTo = TSsaInputNode(phi, input) + else flowIntoPhi(phi, v, bbPhi, nodeTo) + ) + } + + private predicate flowIntoPhi(DefinitionExt phi, SourceVariable v, BasicBlock bbPhi, Node nodeTo) { + phi.definesAt(v, bbPhi, -1, _) and + if phiHasUniqNextNode(phi) + then flowFromRefToNode(v, bbPhi, -1, nodeTo) + else nodeTo.(SsaDefinitionExtNodeImpl).getDefExt() = phi + } + /** * Holds if there is a local flow step from `nodeFrom` to `nodeTo`. * @@ -1804,43 +1982,30 @@ module Make Input> { // Flow from parameter into entry definition DfInput::ssaDefInitializesParam(def, nodeFrom.(ParameterNode).getParameter()) | - nodeTo.(SsaDefinitionNode).getDefinition() = def and - v = def.getSourceVariable() and - isUseStep = false + isUseStep = false and + if DfInput::includeWriteDefsInFlowStep() + then + nodeTo.(SsaDefinitionNode).getDefinition() = def and + v = def.getSourceVariable() + else + exists(BasicBlock bb1, int i1 | + def.definesAt(v, bb1, i1) and + flowFromRefToNode(v, bb1, i1, nodeTo) + ) ) or - // Flow from definition/read to next read - exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2 | + exists(BasicBlock bb1, int i1 | flowOutOf(nodeFrom, v, bb1, i1, isUseStep) and - AdjacentSsaRefs::adjacentRefRead(bb1, i1, bb2, i2, v) and - nodeTo.(ReadNode).readsAt(bb2, i2, v) - ) - or - // Flow from definition/read to next uncertain write - exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2 | - flowOutOf(nodeFrom, v, bb1, i1, isUseStep) and - AdjacentSsaRefs::adjacentRefRead(bb1, i1, bb2, i2, v) and - exists(UncertainWriteDefinition def2 | - DfInput::allowFlowIntoUncertainDef(def2) and - nodeTo.(SsaDefinitionNode).getDefinition() = def2 and - def2.definesAt(v, bb2, i2) - ) - ) - or - // Flow from definition/read to phi input - exists(BasicBlock bb, int i, BasicBlock input, BasicBlock bbPhi, DefinitionExt phi | - flowOutOf(nodeFrom, v, bb, i, isUseStep) and - AdjacentSsaRefs::adjacentRefPhi(bb, i, input, bbPhi, v) and - nodeTo = TSsaInputNode(phi, input) and - phi.definesAt(v, bbPhi, -1, _) + flowFromRefToNode(v, bb1, i1, nodeTo) and + nodeFrom != nodeTo ) or // Flow from input node to def - exists(DefinitionExt def | - nodeTo.(SsaDefinitionExtNodeImpl).getDefExt() = def and - def = nodeFrom.(SsaInputNodeImpl).getPhi() and - v = def.getSourceVariable() and - isUseStep = false + exists(DefinitionExt phi | + phi = nodeFrom.(SsaInputNodeImpl).getPhi() and + isUseStep = false and + nodeFrom != nodeTo and + flowIntoPhi(phi, v, _, nodeTo) ) } @@ -1853,8 +2018,10 @@ module Make Input> { // Flow from parameter into entry definition DfInput::ssaDefInitializesParam(def, nodeFrom.(ParameterNode).getParameter()) | - nodeTo.(SsaDefinitionNode).getDefinition() = def and - v = def.getSourceVariable() + v = def.getSourceVariable() and + if DfInput::includeWriteDefsInFlowStep() + then nodeTo.(SsaDefinitionNode).getDefinition() = def + else nodeTo.(ExprNode).getExpr() = DfInput::getARead(def) ) or // Flow from SSA definition to read @@ -1876,7 +2043,7 @@ module Make Input> { pragma[nomagic] private Definition getAPhiInputDef(SsaInputNodeImpl n) { - exists(SsaInputDefinitionExt phi, BasicBlock bb | + exists(SsaPhiExt phi, BasicBlock bb | result = getAPhiInputDef(phi, bb) and n.isInputInto(phi, bb) ) @@ -1970,7 +2137,7 @@ module Make Input> { ) or // guard controls input block to a phi node - exists(SsaInputDefinitionExt phi | + exists(SsaPhiExt phi | def = getAPhiInputDef(result) and result.(SsaInputNodeImpl).isInputInto(phi, bb) | diff --git a/shared/tree-sitter-extractor/Cargo.toml b/shared/tree-sitter-extractor/Cargo.toml index 4c5bcd19941..6bbda6dc83b 100644 --- a/shared/tree-sitter-extractor/Cargo.toml +++ b/shared/tree-sitter-extractor/Cargo.toml @@ -17,7 +17,7 @@ encoding = "0.2" lazy_static = "1.5.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -chrono = { version = "0.4.39", features = ["serde"] } +chrono = { version = "0.4.40", features = ["serde"] } num_cpus = "1.16.0" [dev-dependencies] diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index dac4aee7324..c8eabda8872 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -259,7 +259,8 @@ module Make1 Input1> { private import Input2 /** Gets the type at the empty path of `tm`. */ - pragma[nomagic] + bindingset[tm] + pragma[inline_late] private Type resolveTypeMentionRoot(TypeMention tm) { result = tm.resolveTypeAt(TypePath::nil()) } @@ -268,10 +269,8 @@ module Make1 Input1> { private module BaseTypes { /** * Holds if `baseMention` is a (transitive) base type mention of `sub`, - * and type parameter `tp` (belonging to `sub`) is mentioned (implicitly) - * at `path` inside the type that `baseMention` resolves to. - * - * For example, in + * and `t` is mentioned (implicitly) at `path` inside `baseMention`. For + * example, in * * ```csharp * class C { } @@ -283,88 +282,21 @@ module Make1 Input1> { * class Sub : Mid> { } // Sub extends Base> * ``` * - * - `T3` is mentioned at `0.0` for immediate base type mention `Base>` + * - ``C`1`` is mentioned at `T2` for immediate base type mention `Base>` * of `Mid`, - * - `T4` is mentioned at `0.0` for immediate base type mention `Mid>` - * of `Sub`, and - * - `T4` is mentioned implicitly at `0.0.0` for transitive base type mention + * - `T3` is mentioned at `T2.T1` for immediate base type mention `Base>` + * of `Mid`, + * - ``C`1`` is mentioned at `T3` for immediate base type mention `Mid>` + * of `Sub`, + * - `T4` is mentioned at `T3.T1` for immediate base type mention `Mid>` + * of `Sub`, + * - ``C`1`` is mentioned at `T2` and implicitly at `T2.T1` for transitive base type + * mention `Base>` of `Sub`, and + * - `T4` is mentioned implicitly at `T2.T1.T1` for transitive base type mention * `Base>` of `Sub`. */ pragma[nomagic] - predicate baseTypeMentionHasTypeParameterAt( - Type sub, TypeMention baseMention, TypePath path, TypeParameter tp - ) { - exists(TypeMention immediateBaseMention, TypePath pathToTypeParam | - tp = sub.getATypeParameter() and - immediateBaseMention = getABaseTypeMention(sub) and - tp = immediateBaseMention.resolveTypeAt(pathToTypeParam) - | - // immediate base class - baseMention = immediateBaseMention and - path = pathToTypeParam - or - // transitive base class - exists(Type immediateBase, TypePath prefix, TypePath suffix, TypeParameter mid | - /* - * Example: - * - * - `prefix = "0.0"`, - * - `pathToTypeParam = "0.0"`, - * - `suffix = "0"`, - * - `path = "0.0.0"` - * - * ```csharp - * class C { } - * - * class Base { } - * - * class Mid : Base> { } - * // ^^^ `immediateBase` - * // ^^ `mid` - * // ^^^^^^^^^^^ `baseMention` - * - * class Sub : Mid> { } - * // ^^^ `sub` - * // ^^ `tp` - * // ^^^^^^^^^^ `immediateBaseMention` - * ``` - */ - - immediateBase = resolveTypeMentionRoot(immediateBaseMention) and - baseTypeMentionHasTypeParameterAt(immediateBase, baseMention, prefix, mid) and - pathToTypeParam.isCons(mid, suffix) and - path = prefix.append(suffix) - ) - ) - } - - /** - * Holds if `baseMention` is a (transitive) base type mention of `sub`, - * and `t`, which is not a type parameter of `sub`, is mentioned - * (implicitly) at `path` inside `baseMention`. For example, in - * - * ```csharp - * class C { } - * - * class Base { } - * - * class Mid : Base> { } - * - * class Sub : Mid> { } // Sub extends Base> - * ``` - * - * - ``C`1`` is mentioned at `0` for immediate base type mention `Base>` - * of `Mid`, - * - ``C`1`` is mentioned at `0` for immediate base type mention `Mid>` - * of `Sub`, and - * - ``C`1`` is mentioned at `0` and implicitly at `0.0` for transitive base type - * mention `Base>` of `Sub`. - */ - pragma[nomagic] - predicate baseTypeMentionHasNonTypeParameterAt( - Type sub, TypeMention baseMention, TypePath path, Type t - ) { - not t = sub.getATypeParameter() and + predicate baseTypeMentionHasTypeAt(Type sub, TypeMention baseMention, TypePath path, Type t) { exists(TypeMention immediateBaseMention | pragma[only_bind_into](immediateBaseMention) = getABaseTypeMention(pragma[only_bind_into](sub)) @@ -381,10 +313,10 @@ module Make1 Input1> { /* * Example: * - * - `prefix = "0.0"`, - * - `path0 = "0"`, + * - `prefix = "T2.T1"`, + * - `path0 = "T3"`, * - `suffix = ""`, - * - `path = "0.0"` + * - `path = "T2.T1"` * * ```csharp * class C { } @@ -411,6 +343,20 @@ module Make1 Input1> { ) ) } + + pragma[inline] + predicate baseTypeMentionHasNonTypeParameterAt( + Type sub, TypeMention baseMention, TypePath path, Type t + ) { + not t = sub.getATypeParameter() and baseTypeMentionHasTypeAt(sub, baseMention, path, t) + } + + pragma[inline] + predicate baseTypeMentionHasTypeParameterAt( + Type sub, TypeMention baseMention, TypePath path, TypeParameter tp + ) { + tp = sub.getATypeParameter() and baseTypeMentionHasTypeAt(sub, baseMention, path, tp) + } } private import BaseTypes @@ -578,32 +524,36 @@ module Make1 Input1> { } private module AccessBaseType { - private predicate relevantAccess(Access a, AccessPosition apos) { - exists(Declaration target | + /** + * Holds if inferring types at `a` might depend on the type at `path` of + * `apos` having `base` as a transitive base type. + */ + private predicate relevantAccess(Access a, AccessPosition apos, TypePath path, Type base) { + exists(Declaration target, DeclarationPosition dpos | adjustedAccessType(a, apos, target, _, _) and - target.getDeclaredType(_, _) instanceof TypeParameter + accessDeclarationPositionMatch(apos, dpos) + | + path.isEmpty() and declarationBaseType(target, dpos, base, _, _) + or + typeParameterConstraintHasTypeParameter(target, dpos, path, _, base, _, _) ) } pragma[nomagic] - private Type inferRootType(Access a, AccessPosition apos) { - relevantAccess(a, apos) and - result = a.getInferredType(apos, TypePath::nil()) - } - - pragma[nomagic] - private Type inferTypeAt(Access a, AccessPosition apos, TypeParameter tp, TypePath suffix) { - relevantAccess(a, apos) and + private Type inferTypeAt( + Access a, AccessPosition apos, TypePath prefix, TypeParameter tp, TypePath suffix + ) { + relevantAccess(a, apos, prefix, _) and exists(TypePath path0 | - result = a.getInferredType(apos, path0) and + result = a.getInferredType(apos, prefix.append(path0)) and path0.isCons(tp, suffix) ) } /** - * Holds if `baseMention` is a (transitive) base type mention of the type of - * `a` at position `apos`, and `t` is mentioned (implicitly) at `path` inside - * `base`. For example, in + * Holds if `baseMention` is a (transitive) base type mention of the + * type of `a` at position `apos` at path `pathToSub`, and `t` is + * mentioned (implicitly) at `path` inside `base`. For example, in * * ```csharp * class C { } @@ -619,8 +569,9 @@ module Make1 Input1> { * // ^^^^^^^^^^^^^^^^^^^^^^^^^ `a` * ``` * - * where the method call is an access and `new Sub()` is at an - * access position, which is the receiver of a method call, we have: + * where the method call is an access, `new Sub()` is at the access + * position which is the receiver of a method call, and `pathToSub` is + * `""` we have: * * `baseMention` | `path` | `t` * ------------- | ------------ | --- @@ -632,14 +583,16 @@ module Make1 Input1> { */ pragma[nomagic] predicate hasBaseTypeMention( - Access a, AccessPosition apos, TypeMention baseMention, TypePath path, Type t + Access a, AccessPosition apos, TypePath pathToSub, TypeMention baseMention, TypePath path, + Type t ) { - exists(Type sub | sub = inferRootType(a, apos) | + relevantAccess(a, apos, pathToSub, resolveTypeMentionRoot(baseMention)) and + exists(Type sub | sub = a.getInferredType(apos, pathToSub) | baseTypeMentionHasNonTypeParameterAt(sub, baseMention, path, t) or exists(TypePath prefix, TypePath suffix, TypeParameter tp | baseTypeMentionHasTypeParameterAt(sub, baseMention, prefix, tp) and - t = inferTypeAt(a, apos, tp, suffix) and + t = inferTypeAt(a, apos, pathToSub, tp, suffix) and path = prefix.append(suffix) ) ) @@ -655,7 +608,7 @@ module Make1 Input1> { Access a, AccessPosition apos, Type base, TypePath path, Type t ) { exists(TypeMention tm | - AccessBaseType::hasBaseTypeMention(a, apos, tm, path, t) and + AccessBaseType::hasBaseTypeMention(a, apos, TypePath::nil(), tm, path, t) and base = resolveTypeMentionRoot(tm) ) } @@ -730,6 +683,58 @@ module Make1 Input1> { t = getTypeArgument(a, target, tp, path) } + /** + * Holds if `tp1` and `tp2` are distinct type parameters of `target`, the + * declared type at `dpos` mentions `tp1` at `path1`, `tp1` has a base + * type mention of type `constraint` that mentions `tp2` at the path + * `path2`. + * + * For this example + * ```csharp + * interface IFoo { } + * T1 M(T2 item) where T2 : IFoo { } + * ``` + * with the method declaration being the target and the for the first + * parameter position, we have the following + * - `path1 = ""`, + * - `tp1 = T2`, + * - `constraint = IFoo`, + * - `path2 = "A"`, and + * - `tp2 = T1`. + */ + pragma[nomagic] + private predicate typeParameterConstraintHasTypeParameter( + Declaration target, DeclarationPosition dpos, TypePath path1, TypeParameter tp1, + Type constraint, TypePath path2, TypeParameter tp2 + ) { + tp1 = target.getTypeParameter(_) and + tp2 = target.getTypeParameter(_) and + tp1 != tp2 and + tp1 = target.getDeclaredType(dpos, path1) and + exists(TypeMention tm | + tm = getABaseTypeMention(tp1) and + tm.resolveTypeAt(path2) = tp2 and + constraint = resolveTypeMentionRoot(tm) + ) + } + + pragma[nomagic] + private predicate typeConstraintBaseTypeMatch( + Access a, Declaration target, TypePath path, Type t, TypeParameter tp + ) { + not exists(getTypeArgument(a, target, tp, _)) and + target = a.getTarget() and + exists( + TypeMention base, AccessPosition apos, DeclarationPosition dpos, TypePath pathToTp, + TypePath pathToTp2 + | + accessDeclarationPositionMatch(apos, dpos) and + typeParameterConstraintHasTypeParameter(target, dpos, pathToTp2, _, + resolveTypeMentionRoot(base), pathToTp, tp) and + AccessBaseType::hasBaseTypeMention(a, apos, pathToTp2, base, pathToTp.append(path), t) + ) + } + pragma[inline] private predicate typeMatch( Access a, Declaration target, TypePath path, Type t, TypeParameter tp @@ -743,6 +748,9 @@ module Make1 Input1> { or // We can infer the type of `tp` by going up the type hiearchy baseTypeMatch(a, target, path, t, tp) + or + // We can infer the type of `tp` by a type bound + typeConstraintBaseTypeMatch(a, target, path, t, tp) } /**