@@ -4791,3 +4791,330 @@ End:
4791
4791
Return(v6)
4792
4792
4793
4793
//! > lowering_diagnostics
4794
+
4795
+ //! > ==========================================================================
4796
+
4797
+ //! > Array pop_front known empty array.
4798
+
4799
+ //! > test_runner_name
4800
+ test_match_optimizer
4801
+
4802
+ //! > function
4803
+ fn foo() -> Option<felt252> {
4804
+ let mut arr = array![];
4805
+ arr.pop_front()
4806
+ }
4807
+
4808
+ //! > function_name
4809
+ foo
4810
+
4811
+ //! > module_code
4812
+
4813
+ //! > semantic_diagnostics
4814
+
4815
+ //! > before
4816
+ Parameters:
4817
+ blk0 (root):
4818
+ Statements:
4819
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
4820
+ End:
4821
+ Match(match core::array::array_pop_front::<core::felt252>(v0) {
4822
+ Option::Some(v1, v2) => blk1,
4823
+ Option::None(v3) => blk2,
4824
+ })
4825
+
4826
+ blk1:
4827
+ Statements:
4828
+ (v4: core::felt252) <- core::box::unbox::<core::felt252>(v2)
4829
+ (v5: core::option::Option::<core::felt252>) <- Option::Some(v4)
4830
+ End:
4831
+ Goto(blk3, {v5 -> v6})
4832
+
4833
+ blk2:
4834
+ Statements:
4835
+ (v7: ()) <- struct_construct()
4836
+ (v8: core::option::Option::<core::felt252>) <- Option::None(v7)
4837
+ End:
4838
+ Goto(blk3, {v8 -> v6})
4839
+
4840
+ blk3:
4841
+ Statements:
4842
+ End:
4843
+ Return(v6)
4844
+
4845
+ //! > after
4846
+ Parameters:
4847
+ blk0 (root):
4848
+ Statements:
4849
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
4850
+ End:
4851
+ Goto(blk2, {})
4852
+
4853
+ blk1:
4854
+ Statements:
4855
+ (v4: core::felt252) <- core::box::unbox::<core::felt252>(v2)
4856
+ (v5: core::option::Option::<core::felt252>) <- Option::Some(v4)
4857
+ End:
4858
+ Goto(blk3, {v5 -> v6})
4859
+
4860
+ blk2:
4861
+ Statements:
4862
+ (v7: ()) <- struct_construct()
4863
+ (v8: core::option::Option::<core::felt252>) <- Option::None(v7)
4864
+ End:
4865
+ Goto(blk3, {v8 -> v6})
4866
+
4867
+ blk3:
4868
+ Statements:
4869
+ End:
4870
+ Return(v6)
4871
+
4872
+ //! > lowering_diagnostics
4873
+
4874
+ //! > ==========================================================================
4875
+
4876
+ //! > Array pop_front known non-empty array.
4877
+
4878
+ //! > test_runner_name
4879
+ test_match_optimizer
4880
+
4881
+ //! > function
4882
+ fn foo() -> Option<felt252> {
4883
+ let mut arr = array![1];
4884
+ arr.pop_front()
4885
+ }
4886
+
4887
+ //! > function_name
4888
+ foo
4889
+
4890
+ //! > module_code
4891
+
4892
+ //! > semantic_diagnostics
4893
+
4894
+ //! > before
4895
+ Parameters:
4896
+ blk0 (root):
4897
+ Statements:
4898
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
4899
+ (v1: core::felt252) <- 1
4900
+ (v2: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v0, v1)
4901
+ End:
4902
+ Match(match core::array::array_pop_front::<core::felt252>(v2) {
4903
+ Option::Some(v3, v4) => blk1,
4904
+ Option::None(v5) => blk2,
4905
+ })
4906
+
4907
+ blk1:
4908
+ Statements:
4909
+ (v6: core::felt252) <- core::box::unbox::<core::felt252>(v4)
4910
+ (v7: core::option::Option::<core::felt252>) <- Option::Some(v6)
4911
+ End:
4912
+ Goto(blk3, {v7 -> v8})
4913
+
4914
+ blk2:
4915
+ Statements:
4916
+ (v9: ()) <- struct_construct()
4917
+ (v10: core::option::Option::<core::felt252>) <- Option::None(v9)
4918
+ End:
4919
+ Goto(blk3, {v10 -> v8})
4920
+
4921
+ blk3:
4922
+ Statements:
4923
+ End:
4924
+ Return(v8)
4925
+
4926
+ //! > after
4927
+ Parameters:
4928
+ blk0 (root):
4929
+ Statements:
4930
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
4931
+ (v1: core::felt252) <- 1
4932
+ (v2: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v0, v1)
4933
+ End:
4934
+ Match(match core::array::array_pop_front::<core::felt252>(v2) {
4935
+ Option::Some(v3, v4) => blk1,
4936
+ Option::None(v5) => blk2,
4937
+ })
4938
+
4939
+ blk1:
4940
+ Statements:
4941
+ (v6: core::felt252) <- 1
4942
+ (v7: core::option::Option::<core::felt252>) <- Option::Some(v6)
4943
+ End:
4944
+ Goto(blk3, {v7 -> v8})
4945
+
4946
+ blk2:
4947
+ Statements:
4948
+ (v9: ()) <- struct_construct()
4949
+ (v10: core::option::Option::<core::felt252>) <- Option::None(v9)
4950
+ End:
4951
+ Goto(blk3, {v10 -> v8})
4952
+
4953
+ blk3:
4954
+ Statements:
4955
+ End:
4956
+ Return(v8)
4957
+
4958
+ //! > lowering_diagnostics
4959
+
4960
+ //! > ==========================================================================
4961
+
4962
+ //! > Span pop_front known empty.
4963
+
4964
+ //! > test_runner_name
4965
+ test_match_optimizer
4966
+
4967
+ //! > function
4968
+ fn foo() -> Option<@felt252> {
4969
+ let mut span = array![].span();
4970
+ span.pop_front()
4971
+ }
4972
+
4973
+ //! > function_name
4974
+ foo
4975
+
4976
+ //! > module_code
4977
+
4978
+ //! > semantic_diagnostics
4979
+
4980
+ //! > before
4981
+ Parameters:
4982
+ blk0 (root):
4983
+ Statements:
4984
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
4985
+ (v1: core::array::Array::<core::felt252>, v2: @core::array::Array::<core::felt252>) <- snapshot(v0)
4986
+ End:
4987
+ Match(match core::array::array_snapshot_pop_front::<core::felt252>(v2) {
4988
+ Option::Some(v3, v4) => blk1,
4989
+ Option::None(v5) => blk2,
4990
+ })
4991
+
4992
+ blk1:
4993
+ Statements:
4994
+ (v6: @core::felt252) <- core::box::unbox::<@core::felt252>(v4)
4995
+ (v7: core::option::Option::<@core::felt252>) <- Option::Some(v6)
4996
+ End:
4997
+ Goto(blk3, {v7 -> v8})
4998
+
4999
+ blk2:
5000
+ Statements:
5001
+ (v9: ()) <- struct_construct()
5002
+ (v10: core::option::Option::<@core::felt252>) <- Option::None(v9)
5003
+ End:
5004
+ Goto(blk3, {v10 -> v8})
5005
+
5006
+ blk3:
5007
+ Statements:
5008
+ End:
5009
+ Return(v8)
5010
+
5011
+ //! > after
5012
+ Parameters:
5013
+ blk0 (root):
5014
+ Statements:
5015
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
5016
+ (v1: core::array::Array::<core::felt252>, v2: @core::array::Array::<core::felt252>) <- snapshot(v0)
5017
+ End:
5018
+ Goto(blk2, {})
5019
+
5020
+ blk1:
5021
+ Statements:
5022
+ (v6: @core::felt252) <- core::box::unbox::<@core::felt252>(v4)
5023
+ (v7: core::option::Option::<@core::felt252>) <- Option::Some(v6)
5024
+ End:
5025
+ Goto(blk3, {v7 -> v8})
5026
+
5027
+ blk2:
5028
+ Statements:
5029
+ (v9: ()) <- struct_construct()
5030
+ (v10: core::option::Option::<@core::felt252>) <- Option::None(v9)
5031
+ End:
5032
+ Goto(blk3, {v10 -> v8})
5033
+
5034
+ blk3:
5035
+ Statements:
5036
+ End:
5037
+ Return(v8)
5038
+
5039
+ //! > lowering_diagnostics
5040
+
5041
+ //! > ==========================================================================
5042
+
5043
+ //! > Span pop_back known empty.
5044
+
5045
+ //! > test_runner_name
5046
+ test_match_optimizer
5047
+
5048
+ //! > function
5049
+ fn foo() -> Option<@felt252> {
5050
+ let mut span = array![].span();
5051
+ span.pop_back()
5052
+ }
5053
+
5054
+ //! > function_name
5055
+ foo
5056
+
5057
+ //! > module_code
5058
+
5059
+ //! > semantic_diagnostics
5060
+
5061
+ //! > before
5062
+ Parameters:
5063
+ blk0 (root):
5064
+ Statements:
5065
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
5066
+ (v1: core::array::Array::<core::felt252>, v2: @core::array::Array::<core::felt252>) <- snapshot(v0)
5067
+ End:
5068
+ Match(match core::array::array_snapshot_pop_back::<core::felt252>(v2) {
5069
+ Option::Some(v3, v4) => blk1,
5070
+ Option::None(v5) => blk2,
5071
+ })
5072
+
5073
+ blk1:
5074
+ Statements:
5075
+ (v6: @core::felt252) <- core::box::unbox::<@core::felt252>(v4)
5076
+ (v7: core::option::Option::<@core::felt252>) <- Option::Some(v6)
5077
+ End:
5078
+ Goto(blk3, {v7 -> v8})
5079
+
5080
+ blk2:
5081
+ Statements:
5082
+ (v9: ()) <- struct_construct()
5083
+ (v10: core::option::Option::<@core::felt252>) <- Option::None(v9)
5084
+ End:
5085
+ Goto(blk3, {v10 -> v8})
5086
+
5087
+ blk3:
5088
+ Statements:
5089
+ End:
5090
+ Return(v8)
5091
+
5092
+ //! > after
5093
+ Parameters:
5094
+ blk0 (root):
5095
+ Statements:
5096
+ (v0: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
5097
+ (v1: core::array::Array::<core::felt252>, v2: @core::array::Array::<core::felt252>) <- snapshot(v0)
5098
+ End:
5099
+ Goto(blk2, {})
5100
+
5101
+ blk1:
5102
+ Statements:
5103
+ (v6: @core::felt252) <- core::box::unbox::<@core::felt252>(v4)
5104
+ (v7: core::option::Option::<@core::felt252>) <- Option::Some(v6)
5105
+ End:
5106
+ Goto(blk3, {v7 -> v8})
5107
+
5108
+ blk2:
5109
+ Statements:
5110
+ (v9: ()) <- struct_construct()
5111
+ (v10: core::option::Option::<@core::felt252>) <- Option::None(v9)
5112
+ End:
5113
+ Goto(blk3, {v10 -> v8})
5114
+
5115
+ blk3:
5116
+ Statements:
5117
+ End:
5118
+ Return(v8)
5119
+
5120
+ //! > lowering_diagnostics
0 commit comments