/*******************************************************************************
* Copyright (c) 2016 Bruno Medeiros and other Contributors.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Bruno Medeiros - initial API and implementation
* Pieter Penninckx - small refactoring
*******************************************************************************/
package com.github.rustdt.tooling;
import java.util.regex.Pattern;
/**
* Simple regexp-based parser for (error) output lines of rustc up to and including version 1.12.
*
* Parses only single-line errors or the first line of multi-line errors. Can only parse lines in the genre of
*
* test.rs:4:15: 4:16 error: cannot borrow `a` as mutable more than once at a time [E0499]
*
* where the column number (in this case 15) and the end (in this case: 4:16) may be omitted.
*/
public class ClassicRustcRustBuildOutputLineParser extends AbstractRustBuildOutputLineParser {
protected static final Pattern MESSAGE_LINE_Regex = Pattern.compile(
"^([^:\\n]*):" + // file
"(\\d*):((\\d*):)?" +// line:column
"( (\\d*):(\\d*))?" + // end line:column
" (warning|error|note):" + // type
"\\s(.*)$" // error message
);
@Override
protected Pattern getPattern() {
return MESSAGE_LINE_Regex;
}
}