difftreelog
fix static analyzer reports hoisting possibility for comp specs
in: master
This was done on purpose, I wanted to change the message here in the future so it indicates that it is not the local that is unused, but that it is possible to extract loop-invariant overs, but decided to implement this optimization on another level (automatic loop_invariant overs caching)
8 files changed
crates/jrsonnet-evaluator/src/analysis_tests/issue224.jsonnetdiffbeforeafterbothno changes
crates/jrsonnet-evaluator/src/analysis_tests/issue224_hoisting.jsonnetdiffbeforeafterbothno changes
crates/jrsonnet-evaluator/src/analyze.rsdiffbeforeafterboth1959 };1959 };1960 let mut pending = alloc.finish();1960 let mut pending = alloc.finish();196119611962 let var_analysis = AnalysisResult::default();1962 let mut var_analysis = over_taint;1963 var_analysis.depend_on_local(pending.stack.depth);1963 pending.record_spec_init(&l_destruct, var_analysis);1964 pending.record_spec_init(&l_destruct, var_analysis);196419651965 let body_frame = pending.finish();1966 let body_frame = pending.finish();1998 };1999 };1999 let mut pending = alloc.finish();2000 let mut pending = alloc.finish();200020012001 let var_analysis = AnalysisResult::default();2002 let mut var_analysis = over_taint;2003 var_analysis.depend_on_local(pending.stack.depth);2002 pending.record_spec_init(&LDestruct::Full(key_slot), var_analysis);2004 pending.record_spec_init(&LDestruct::Full(key_slot), var_analysis);2003 pending.record_spec_init(&l_value, var_analysis);2005 pending.record_spec_init(&l_value, var_analysis);20042006crates/jrsonnet-evaluator/src/snapshots/jrsonnet_evaluator__analyze__tests__snapshots@issue224.jsonnet.snapdiffbeforeafterbothno changes
crates/jrsonnet-evaluator/src/snapshots/jrsonnet_evaluator__analyze__tests__snapshots@issue224_hoisting.jsonnet.snapdiffbeforeafterbothno changes
crates/jrsonnet-evaluator/src/snapshots/jrsonnet_evaluator__analyze__tests__snapshots@loop_invariant.jsonnet.snapdiffbeforeafterboth1---1---2source: crates/jrsonnet-evaluator/src/analyze.rs2source: crates/jrsonnet-evaluator/src/analyze.rs3assertion_line: 21754expression: rendered3expression: rendered5input_file: crates/jrsonnet-evaluator/src/analysis_tests/loop_invariant.jsonnet4input_file: crates/jrsonnet-evaluator/src/analysis_tests/loop_invariant.jsonnet6---5---11local_dependent_depth: 010local_dependent_depth: 012errored: true11errored: true13--- diagnostics ---12--- diagnostics ---14 · ╭──────────────────────────────── undefined local: std13 · ╭──── undefined local: std15 · │ ╭──── undefined local: std161 │ [ i < j for i in std.range(1, 1000) for j in std.range(1, 1000)] 141 │ [ i < j for i in std.range(1, 1000) for j in std.range(1, 1000)] 17 · ╰── local could be hoisted to an outer scope: j15 · ╰──── undefined local: std182 │ 162 │ 19--- lir ---17--- lir ---20ArrComp(18ArrComp(tests/go_testdata_golden_override/arrcomp_if4.jsonnet.goldendiffbeforeafterboth1static analysis errors1static analysis errors2 arrcomp_if4.jsonnet:1:33 error: undefined local: y2 arrcomp_if4.jsonnet:1:33 error: undefined local: y3 arrcomp_if4.jsonnet:1:44 warning: local could be hoisted to an outer scope: ytests/golden/issue224.jsonnetdiffbeforeafterbothno changes