diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-01-03 21:26:31 -0800 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-01-04 15:25:17 -0800 |
| commit | 1dec1c8813768f86e6c0f581fb0bea07fa70a4c8 (patch) | |
| tree | 6400a3bb038f502eb48b831fc329cecc4e967171 /src/compiletest | |
| parent | 70c808d173cfb7315131e6bf75e36fa4c9ee7db1 (diff) | |
| download | rust-1dec1c8813768f86e6c0f581fb0bea07fa70a4c8.tar.gz rust-1dec1c8813768f86e6c0f581fb0bea07fa70a4c8.zip | |
make scanning more efficient by avoiding recomputation
Diffstat (limited to 'src/compiletest')
| -rw-r--r-- | src/compiletest/runtest.rs | 11 |
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; |
