aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2021-01-20 10:31:22 +0000
committerPhilip Herron <philip.herron@embecosm.com>2021-01-20 10:31:26 +0000
commit9e733f4de4908026a47a62307a9e9a3bf06ce1b1 (patch)
tree75a1a4b0f54e7cf9665888840d5d9a5064454c33 /gcc
parente2b761b13e6ccd3a7af4100183bb13e32b5b0da0 (diff)
downloadgcc-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.h6
-rw-r--r--gcc/testsuite/rust.test/compilable/parameter_usage1.rs7
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);
+}