diff options
author | Philip Herron <philip.herron@embecosm.com> | 2020-12-03 14:00:54 +0000 |
---|---|---|
committer | Philip Herron <herron.philip@googlemail.com> | 2020-12-03 16:36:05 +0000 |
commit | 0394164f3db67a5b7631e30f66d280771017b225 (patch) | |
tree | 2443d4f647c3d064c2ef2471a9847b0b95241121 | |
parent | 8993741f97ca3426e22a740070b9a413dcb2fe04 (diff) | |
download | gcc-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.
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 } } |