aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2020-12-03 14:00:54 +0000
committerPhilip Herron <herron.philip@googlemail.com>2020-12-03 16:36:05 +0000
commit0394164f3db67a5b7631e30f66d280771017b225 (patch)
tree2443d4f647c3d064c2ef2471a9847b0b95241121 /gcc
parent8993741f97ca3426e22a740070b9a413dcb2fe04 (diff)
downloadgcc-0394164f3db67a5b7631e30f66d280771017b225.zip
gcc-0394164f3db67a5b7631e30f66d280771017b225.tar.gz
gcc-0394164f3db67a5b7631e30f66d280771017b225.tar.bz2
Add failure tests to rust testsuite
We need to have test cases for when the compilation should xfail this will help add more tests for name/type resolutions. This is needed as there is a large code changes on the horizon and this will help spot regressions.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/rust.test/compilable/type_infer2.rs8
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/arrays1.rs4
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/arrays2.rs3
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/bad_type1.rs3
-rw-r--r--gcc/testsuite/rust.test/fail_compilation/func1.rs9
-rw-r--r--gcc/testsuite/rust.test/rust-test.exp37
6 files changed, 39 insertions, 25 deletions
diff --git a/gcc/testsuite/rust.test/compilable/type_infer2.rs b/gcc/testsuite/rust.test/compilable/type_infer2.rs
new file mode 100644
index 0000000..614c67d
--- /dev/null
+++ b/gcc/testsuite/rust.test/compilable/type_infer2.rs
@@ -0,0 +1,8 @@
+fn test(x: i32) -> i32 {
+ return x + 1;
+}
+
+fn main() {
+ let an_integer = 5;
+ let call_test = test(an_integer + 1);
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/arrays1.rs b/gcc/testsuite/rust.test/fail_compilation/arrays1.rs
new file mode 100644
index 0000000..797f1ca
--- /dev/null
+++ b/gcc/testsuite/rust.test/fail_compilation/arrays1.rs
@@ -0,0 +1,4 @@
+fn main() {
+ let xs: [i32; 5] = [1, 2, 3, 4, 5];
+ let a: bool = xs[0];
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/arrays2.rs b/gcc/testsuite/rust.test/fail_compilation/arrays2.rs
new file mode 100644
index 0000000..9ecf322
--- /dev/null
+++ b/gcc/testsuite/rust.test/fail_compilation/arrays2.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let array: [i32; 5] = [1, 2, 3];
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/bad_type1.rs b/gcc/testsuite/rust.test/fail_compilation/bad_type1.rs
new file mode 100644
index 0000000..83e16f3
--- /dev/null
+++ b/gcc/testsuite/rust.test/fail_compilation/bad_type1.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let logical: bool = 123;
+}
diff --git a/gcc/testsuite/rust.test/fail_compilation/func1.rs b/gcc/testsuite/rust.test/fail_compilation/func1.rs
new file mode 100644
index 0000000..5578c27
--- /dev/null
+++ b/gcc/testsuite/rust.test/fail_compilation/func1.rs
@@ -0,0 +1,9 @@
+fn test(x: i32) -> bool {
+ return x + 1;
+}
+
+fn main() {
+ let an_integer = 5;
+
+ let call_test = test(1);
+}
diff --git a/gcc/testsuite/rust.test/rust-test.exp b/gcc/testsuite/rust.test/rust-test.exp
index fca3f16..cc32454 100644
--- a/gcc/testsuite/rust.test/rust-test.exp
+++ b/gcc/testsuite/rust.test/rust-test.exp
@@ -310,23 +310,11 @@ proc dmd2dg { base test } {
}
compilable {
- set out_line "// { dg-final { output-exists } }"
- puts $fdout $out_line
-
- # Check that Ddoc tests also generate a html file.
- if [regexp -- "ddoc.*" $name] {
- set ddocfile "[file rootname $name].html"
- set out_line "// { dg-final { scan-file $ddocfile \"Generated by Ddoc from $test\" } }"
- puts $fdout $out_line
- # Cleanup extra generated files.
- set out_line "// { dg-final { file delete $ddocfile } }"
- puts $fdout $out_line
- }
+ puts $fdout "// { dg-final { output-exists } }"
}
fail_compilation {
- set out_line "// { dg-final { output-exists-not } }"
- puts $fdout $out_line
+ puts $fdout "// { dg-do run { xfail *-*-* } }"
}
}
@@ -336,6 +324,7 @@ proc dmd2dg { base test } {
return $test
}
+
proc rust-permute-options { options } {
set result { }
set n [expr 1<<[llength $options]]
@@ -395,11 +384,6 @@ proc rust-do-test { } {
foreach test [lsort [find $srcdir/$subdir *]] {
regexp -- "(.*)/(.+)/(.+)\.rs$" $test match base dir name ext
set ext "rs"
-
- # Skip invalid test directory
- if { [lsearch "compilable" $dir] == -1 } {
- continue
- }
# Skip invalid test extensions
if { [lsearch "rs" $ext] == -1 } {
@@ -421,12 +405,15 @@ proc rust-do-test { } {
compilable {
for { set i 0 } { $i<[llength $options] } { incr i } {
set flags [lindex $options $i]
- # Compilable test may require checking another kind of output file.
- if [regexp -- "ddoc.*" $name] {
- set dg-do-what-default "compile"
- } else {
- set dg-do-what-default "assemble"
- }
+ set dg-do-what-default "compile"
+ rust-dg-runtest $filename $flags $imports
+ }
+ }
+
+ fail_compilation {
+ for { set i 0 } { $i<[llength $options] } { incr i } {
+ set flags [lindex $options $i]
+ set dg-do-what-default "compile"
rust-dg-runtest $filename $flags $imports
}
}