Skip to content

Commit f850025

Browse files
committed
Rust: Add another type inference test
1 parent cca458c commit f850025

File tree

2 files changed

+65
-42
lines changed

2 files changed

+65
-42
lines changed

rust/ql/test/library-tests/type-inference/main.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2862,6 +2862,17 @@ mod block_types {
28622862
fn f3() -> i32 {
28632863
return 0;
28642864
} // should only have type `i32`, not `()`
2865+
2866+
#[rustfmt::skip]
2867+
fn f4(cond: bool) -> i32 {
2868+
let a = { // $ MISSING: certainType=a:()
2869+
if cond {
2870+
return 12;
2871+
};
2872+
};
2873+
println!("a: {:?}", a);
2874+
0
2875+
}
28652876
}
28662877

28672878
mod blanket_impl;

rust/ql/test/library-tests/type-inference/type-inference.expected

Lines changed: 54 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6474,48 +6474,60 @@ inferType
64746474
| main.rs:2859:9:2859:9 | 0 | | {EXTERNAL LOCATION} | i32 |
64756475
| main.rs:2862:20:2864:5 | { ... } | | {EXTERNAL LOCATION} | i32 |
64766476
| main.rs:2863:16:2863:16 | 0 | | {EXTERNAL LOCATION} | i32 |
6477-
| main.rs:2872:11:2907:1 | { ... } | | file://:0:0:0:0 | () |
6478-
| main.rs:2873:5:2873:21 | ...::f(...) | | file://:0:0:0:0 | () |
6479-
| main.rs:2874:5:2874:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
6480-
| main.rs:2875:5:2875:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
6481-
| main.rs:2875:20:2875:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
6482-
| main.rs:2875:41:2875:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
6483-
| main.rs:2876:5:2876:35 | ...::f(...) | | file://:0:0:0:0 | () |
6484-
| main.rs:2877:5:2877:41 | ...::f(...) | | file://:0:0:0:0 | () |
6485-
| main.rs:2878:5:2878:45 | ...::test(...) | | file://:0:0:0:0 | () |
6486-
| main.rs:2879:5:2879:30 | ...::f(...) | | file://:0:0:0:0 | () |
6487-
| main.rs:2880:5:2880:33 | ...::f(...) | | file://:0:0:0:0 | () |
6488-
| main.rs:2881:5:2881:21 | ...::f(...) | | file://:0:0:0:0 | () |
6489-
| main.rs:2882:5:2882:27 | ...::f(...) | | file://:0:0:0:0 | () |
6490-
| main.rs:2883:5:2883:32 | ...::f(...) | | file://:0:0:0:0 | () |
6491-
| main.rs:2884:5:2884:23 | ...::f(...) | | file://:0:0:0:0 | () |
6492-
| main.rs:2885:5:2885:36 | ...::f(...) | | file://:0:0:0:0 | () |
6493-
| main.rs:2886:5:2886:35 | ...::f(...) | | file://:0:0:0:0 | () |
6494-
| main.rs:2887:5:2887:29 | ...::f(...) | | file://:0:0:0:0 | () |
6495-
| main.rs:2888:5:2888:23 | ...::f(...) | | file://:0:0:0:0 | () |
6496-
| main.rs:2889:5:2889:24 | ...::f(...) | | file://:0:0:0:0 | () |
6497-
| main.rs:2890:5:2890:17 | ...::f(...) | | file://:0:0:0:0 | () |
6498-
| main.rs:2891:5:2891:18 | ...::f(...) | | file://:0:0:0:0 | () |
6499-
| main.rs:2892:5:2892:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future |
6500-
| main.rs:2892:5:2892:15 | ...::f(...) | Output | file://:0:0:0:0 | () |
6501-
| main.rs:2893:5:2893:19 | ...::f(...) | | file://:0:0:0:0 | () |
6502-
| main.rs:2894:5:2894:17 | ...::f(...) | | file://:0:0:0:0 | () |
6503-
| main.rs:2895:5:2895:14 | ...::f(...) | | file://:0:0:0:0 | () |
6504-
| main.rs:2896:5:2896:27 | ...::f(...) | | file://:0:0:0:0 | () |
6505-
| main.rs:2897:5:2897:15 | ...::f(...) | | file://:0:0:0:0 | () |
6506-
| main.rs:2898:5:2898:43 | ...::f(...) | | file://:0:0:0:0 | () |
6507-
| main.rs:2899:5:2899:15 | ...::f(...) | | file://:0:0:0:0 | () |
6508-
| main.rs:2900:5:2900:17 | ...::f(...) | | file://:0:0:0:0 | () |
6509-
| main.rs:2901:5:2901:23 | ...::test(...) | | file://:0:0:0:0 | () |
6510-
| main.rs:2902:5:2902:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () |
6511-
| main.rs:2903:5:2903:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () |
6512-
| main.rs:2904:5:2904:20 | ...::test(...) | | file://:0:0:0:0 | () |
6513-
| main.rs:2905:5:2905:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
6514-
| main.rs:2905:5:2905:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
6515-
| main.rs:2905:5:2905:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait |
6516-
| main.rs:2905:5:2905:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
6517-
| main.rs:2905:16:2905:19 | true | | {EXTERNAL LOCATION} | bool |
6518-
| main.rs:2906:5:2906:23 | ...::f(...) | | file://:0:0:0:0 | () |
6477+
| main.rs:2867:11:2867:14 | cond | | {EXTERNAL LOCATION} | bool |
6478+
| main.rs:2867:30:2875:5 | { ... } | | {EXTERNAL LOCATION} | i32 |
6479+
| main.rs:2869:13:2871:13 | if cond {...} | | file://:0:0:0:0 | () |
6480+
| main.rs:2869:16:2869:19 | cond | | {EXTERNAL LOCATION} | bool |
6481+
| main.rs:2870:24:2870:25 | 12 | | {EXTERNAL LOCATION} | i32 |
6482+
| main.rs:2873:18:2873:26 | "a: {:?}\\n" | | file://:0:0:0:0 | & |
6483+
| main.rs:2873:18:2873:26 | "a: {:?}\\n" | &T | {EXTERNAL LOCATION} | str |
6484+
| main.rs:2873:18:2873:29 | ...::_print(...) | | file://:0:0:0:0 | () |
6485+
| main.rs:2873:18:2873:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
6486+
| main.rs:2873:18:2873:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
6487+
| main.rs:2873:18:2873:29 | { ... } | | file://:0:0:0:0 | () |
6488+
| main.rs:2874:9:2874:9 | 0 | | {EXTERNAL LOCATION} | i32 |
6489+
| main.rs:2883:11:2918:1 | { ... } | | file://:0:0:0:0 | () |
6490+
| main.rs:2884:5:2884:21 | ...::f(...) | | file://:0:0:0:0 | () |
6491+
| main.rs:2885:5:2885:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
6492+
| main.rs:2886:5:2886:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
6493+
| main.rs:2886:20:2886:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
6494+
| main.rs:2886:41:2886:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
6495+
| main.rs:2887:5:2887:35 | ...::f(...) | | file://:0:0:0:0 | () |
6496+
| main.rs:2888:5:2888:41 | ...::f(...) | | file://:0:0:0:0 | () |
6497+
| main.rs:2889:5:2889:45 | ...::test(...) | | file://:0:0:0:0 | () |
6498+
| main.rs:2890:5:2890:30 | ...::f(...) | | file://:0:0:0:0 | () |
6499+
| main.rs:2891:5:2891:33 | ...::f(...) | | file://:0:0:0:0 | () |
6500+
| main.rs:2892:5:2892:21 | ...::f(...) | | file://:0:0:0:0 | () |
6501+
| main.rs:2893:5:2893:27 | ...::f(...) | | file://:0:0:0:0 | () |
6502+
| main.rs:2894:5:2894:32 | ...::f(...) | | file://:0:0:0:0 | () |
6503+
| main.rs:2895:5:2895:23 | ...::f(...) | | file://:0:0:0:0 | () |
6504+
| main.rs:2896:5:2896:36 | ...::f(...) | | file://:0:0:0:0 | () |
6505+
| main.rs:2897:5:2897:35 | ...::f(...) | | file://:0:0:0:0 | () |
6506+
| main.rs:2898:5:2898:29 | ...::f(...) | | file://:0:0:0:0 | () |
6507+
| main.rs:2899:5:2899:23 | ...::f(...) | | file://:0:0:0:0 | () |
6508+
| main.rs:2900:5:2900:24 | ...::f(...) | | file://:0:0:0:0 | () |
6509+
| main.rs:2901:5:2901:17 | ...::f(...) | | file://:0:0:0:0 | () |
6510+
| main.rs:2902:5:2902:18 | ...::f(...) | | file://:0:0:0:0 | () |
6511+
| main.rs:2903:5:2903:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future |
6512+
| main.rs:2903:5:2903:15 | ...::f(...) | Output | file://:0:0:0:0 | () |
6513+
| main.rs:2904:5:2904:19 | ...::f(...) | | file://:0:0:0:0 | () |
6514+
| main.rs:2905:5:2905:17 | ...::f(...) | | file://:0:0:0:0 | () |
6515+
| main.rs:2906:5:2906:14 | ...::f(...) | | file://:0:0:0:0 | () |
6516+
| main.rs:2907:5:2907:27 | ...::f(...) | | file://:0:0:0:0 | () |
6517+
| main.rs:2908:5:2908:15 | ...::f(...) | | file://:0:0:0:0 | () |
6518+
| main.rs:2909:5:2909:43 | ...::f(...) | | file://:0:0:0:0 | () |
6519+
| main.rs:2910:5:2910:15 | ...::f(...) | | file://:0:0:0:0 | () |
6520+
| main.rs:2911:5:2911:17 | ...::f(...) | | file://:0:0:0:0 | () |
6521+
| main.rs:2912:5:2912:23 | ...::test(...) | | file://:0:0:0:0 | () |
6522+
| main.rs:2913:5:2913:41 | ...::test_all_patterns(...) | | file://:0:0:0:0 | () |
6523+
| main.rs:2914:5:2914:49 | ...::box_patterns(...) | | file://:0:0:0:0 | () |
6524+
| main.rs:2915:5:2915:20 | ...::test(...) | | file://:0:0:0:0 | () |
6525+
| main.rs:2916:5:2916:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
6526+
| main.rs:2916:5:2916:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
6527+
| main.rs:2916:5:2916:20 | ...::f(...) | T | main.rs:2787:5:2789:5 | dyn MyTrait |
6528+
| main.rs:2916:5:2916:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
6529+
| main.rs:2916:16:2916:19 | true | | {EXTERNAL LOCATION} | bool |
6530+
| main.rs:2917:5:2917:23 | ...::f(...) | | file://:0:0:0:0 | () |
65196531
| pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option |
65206532
| pattern_matching.rs:13:26:133:1 | { ... } | T | file://:0:0:0:0 | () |
65216533
| pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option |

0 commit comments

Comments
 (0)