aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2019-10-13 18:05:52 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2019-10-14 09:21:15 +0000
commit9035a8b17e8c33ed8bee550d139111a63442416c (patch)
tree2b8553ab8f22ad81e4ef0b1271f5674f2aab2c7e
parent6d089f33f7719f96614ac01f19587393a2dc8dc9 (diff)
BareMetal: Handle missed SDCC assembler errors
... in a form like: autovec_sdcc.a51:7: Error: <o> .org in REL area or directive / mnemonic error autovec_sdcc.a51:8: Error: <o> .org in REL area or directive / mnemonic error autovec_sdcc.a51:8: Error: <q> missing or improper operators, terminators, or delimiters Fixes: QTCREATORBUG-23084 Change-Id: I346b1970a90bc515a647477d089e66e742567733 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/plugins/baremetal/sdccparser.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/plugins/baremetal/sdccparser.cpp b/src/plugins/baremetal/sdccparser.cpp
index 46dfa71463..c7c436422a 100644
--- a/src/plugins/baremetal/sdccparser.cpp
+++ b/src/plugins/baremetal/sdccparser.cpp
@@ -110,7 +110,7 @@ void SdccParser::stdError(const QString &line)
return;
}
- re.setPattern("^(.+\\.\\S+):(\\d+): (syntax error): (.+)$");
+ re.setPattern("^(.+\\.\\S+):(\\d+): (Error|syntax error): (.+)$");
match = re.match(lne);
if (match.hasMatch()) {
enum CaptureIndex { FilePathIndex = 1, LineNumberIndex,
@@ -208,6 +208,18 @@ void BareMetalPlugin::testSdccOutputParsers_data()
// Compiler messages.
+ QTest::newRow("Assembler error")
+ << QString::fromLatin1("c:\\foo\\main.c:63: Error: Some error")
+ << OutputParserTester::STDERR
+ << QString()
+ << QString::fromLatin1("c:\\foo\\main.c:63: Error: Some error\n")
+ << (Tasks() << Task(Task::Error,
+ QLatin1String("Some error"),
+ Utils::FilePath::fromUserInput(QLatin1String("c:\\foo\\main.c")),
+ 63,
+ categoryCompile))
+ << QString();
+
QTest::newRow("Compiler single line warning")
<< QString::fromLatin1("c:\\foo\\main.c:63: warning 123: Some warning")
<< OutputParserTester::STDERR