about summary refs log tree commit diff
path: root/src/compiletest
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-01-03 21:26:31 -0800
committerNiko Matsakis <niko@alum.mit.edu>2012-01-04 15:25:17 -0800
commit1dec1c8813768f86e6c0f581fb0bea07fa70a4c8 (patch)
tree6400a3bb038f502eb48b831fc329cecc4e967171 /src/compiletest
parent70c808d173cfb7315131e6bf75e36fa4c9ee7db1 (diff)
downloadrust-1dec1c8813768f86e6c0f581fb0bea07fa70a4c8.tar.gz
rust-1dec1c8813768f86e6c0f581fb0bea07fa70a4c8.zip
make scanning more efficient by avoiding recomputation
Diffstat (limited to 'src/compiletest')
-rw-r--r--src/compiletest/runtest.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs
index 3fc5fc4c75e..1efc06d91de 100644
--- a/src/compiletest/runtest.rs
+++ b/src/compiletest/runtest.rs
@@ -240,6 +240,10 @@ fn check_expected_errors(expected_errors: [errors::expected_error],
         fatal("process did not return an error status");
     }
 
+    let prefixes = vec::map(expected_errors, {|ee|
+        #fmt("%s:%u:", testfile, ee.line)
+    });
+
     // Scan and extract our error/warning messages,
     // which look like:
     //    filename:line1:col1: line2:col2: *error:* msg
@@ -250,10 +254,9 @@ fn check_expected_errors(expected_errors: [errors::expected_error],
         let was_expected = false;
         vec::iteri(expected_errors) {|i, ee|
             if !found_flags[i] {
-                let needle = #fmt("%s:%u:", testfile, ee.line);
-                #debug["needle=%s ee.kind=%s ee.msg=%s line=%s",
-                       needle, ee.kind, ee.msg, line];
-                if (str::contains(line, needle) &&
+                #debug["prefix=%s ee.kind=%s ee.msg=%s line=%s",
+                       prefixes[i], ee.kind, ee.msg, line];
+                if (str::starts_with(line, prefixes[i]) &&
                     str::contains(line, ee.kind) &&
                     str::contains(line, ee.msg)) {
                     found_flags[i] = true;