diff options
author | Philip Herron <philip.herron@embecosm.com> | 2021-01-20 10:31:22 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2021-01-20 10:31:26 +0000 |
commit | 9e733f4de4908026a47a62307a9e9a3bf06ce1b1 (patch) | |
tree | 75a1a4b0f54e7cf9665888840d5d9a5064454c33 /gcc | |
parent | e2b761b13e6ccd3a7af4100183bb13e32b5b0da0 (diff) | |
download | gcc-9e733f4de4908026a47a62307a9e9a3bf06ce1b1.zip gcc-9e733f4de4908026a47a62307a9e9a3bf06ce1b1.tar.gz gcc-9e733f4de4908026a47a62307a9e9a3bf06ce1b1.tar.bz2 |
Fix usage of parameters and the type resolver
Parameter types can be resolved to their base type in combination rules.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/typecheck/rust-tyty-rules.h | 6 | ||||
-rw-r--r-- | gcc/testsuite/rust.test/compilable/parameter_usage1.rs | 7 |
2 files changed, 8 insertions, 5 deletions
diff --git a/gcc/rust/typecheck/rust-tyty-rules.h b/gcc/rust/typecheck/rust-tyty-rules.h index 0d8d856..1eaf3e9 100644 --- a/gcc/rust/typecheck/rust-tyty-rules.h +++ b/gcc/rust/typecheck/rust-tyty-rules.h @@ -70,11 +70,7 @@ public: virtual void visit (ParamType &type) override { - Location ref_locus = mappings->lookup_location (type.get_ref ()); - Location def_locus = mappings->lookup_location (base->get_ref ()); - rust_error_at (ref_locus, "expected [%s] got [%s]", - base->as_string ().c_str (), type.as_string ().c_str ()); - rust_error_at (def_locus, "declared here"); + type.get_base_type ()->accept_vis (*this); } virtual void visit (ArrayType &type) override diff --git a/gcc/testsuite/rust.test/compilable/parameter_usage1.rs b/gcc/testsuite/rust.test/compilable/parameter_usage1.rs new file mode 100644 index 0000000..7bba6c6 --- /dev/null +++ b/gcc/testsuite/rust.test/compilable/parameter_usage1.rs @@ -0,0 +1,7 @@ +fn test(a: i32, b: i32) -> i32 { + a + b +} + +fn main() { + let a = test(1, 4); +} |