From 1dec1c8813768f86e6c0f581fb0bea07fa70a4c8 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 3 Jan 2012 21:26:31 -0800 Subject: [PATCH] make scanning more efficient by avoiding recomputation --- src/compiletest/runtest.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 3fc5fc4c75eb..1efc06d91de4 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;