diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java
index 6e581d5c43a..e18f30268f7 100644
--- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java
+++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GCCErrorParserTests.java
@@ -218,4 +218,22 @@ public class GCCErrorParserTests extends GenericErrorParserTests {
"required from here", "conversion from 'long int' to 'float' may change value [-Wconversion]" },
new String[] { GCC_ERROR_PARSER_ID });
}
+
+ public void testGccErrorMessages_InConstexprExpansion() throws IOException {
+ runParserTest(
+ new String[] { "../can/CANBus.h: In instantiation of 'constexpr void Test::setupBitrate(T)':",
+ "../can/CANBus.h:113:6: required from 'static auto& Test::getInstance()'",
+ "../can/CAN.cpp:19:27: required from here",
+ "../can/CANBus.h:72:17: in 'constexpr' expansion of 'instance.Test::Test()'",
+ "../can/CANBus.h:173:92: warning: unused parameter 'bitrate' [-Wunused-parameter]",
+ " 173 | constexpr void setupBitrate(T bitrate) noexcept {" },
+ 0, // errors
+ 1, //warnings
+ 3, //infos
+ new String[] { "CAN.cpp", "CANBus.h" },
+ new String[] { "required from 'static auto& Test::getInstance()'", "required from here",
+ "in 'constexpr' expansion of 'instance.Test::Test()'",
+ "unused parameter 'bitrate' [-Wunused-parameter]" },
+ new String[] { GCC_ERROR_PARSER_ID });
+ }
}
diff --git a/core/org.eclipse.cdt.core/plugin.properties b/core/org.eclipse.cdt.core/plugin.properties
index fbcdc43c132..8cf6be710bb 100644
--- a/core/org.eclipse.cdt.core/plugin.properties
+++ b/core/org.eclipse.cdt.core/plugin.properties
@@ -58,6 +58,7 @@ CDTGNUCErrorParser.regex.ForEachFunctionItAppearsIn=(.*?):(\\d+):(\\d+:)? .*for
CDTGNUCErrorParser.regex.ReportedOnlyOncePerInputFile=(.*?):(\\d+):(\\d+:)? .*this will be reported only once per input file.*
CDTGNUCErrorParser.regex.InstantiatedFromHere=(.*?):(\\d+):(\\d+:)?\\s*(.*((instantiated)|(required)) from .*)
CDTGNUCErrorParser.regex.SkippingInstantiationContexts=(.*?):(\\d+):(\\d+:)?\\s*(\\[\\s*skipping \\d+ instantiation context.*)
+CDTGNUCErrorParser.regex.InConstexprExpansion=(.*?):(\\d+):(\\d+:)?\\s*(in 'constexpr' expansion of.*)
CDTGNUCErrorParser.regex.GenericInfo=(.*?):(\\d+):(\\d+:)?\\s*(([Nn]ote)|(NOTE)|([Ii]nfo)|(INFO)): (.*)
CDTGNUCErrorParser.regex.ParseErrorBefore=(.*?):(\\d+):(\\d+:)? (parse error before.*[`'"](.*)['"].*)
CDTGNUCErrorParser.regex.ErrorUndeclared=(.*?):(\\d+):(\\d+:)? [Ee]rror: ([`'"](.*)['"] undeclared .*)
diff --git a/core/org.eclipse.cdt.core/plugin.xml b/core/org.eclipse.cdt.core/plugin.xml
index d7f02eb4e65..8e1bcb7822c 100644
--- a/core/org.eclipse.cdt.core/plugin.xml
+++ b/core/org.eclipse.cdt.core/plugin.xml
@@ -201,6 +201,14 @@
regex="%CDTGNUCErrorParser.regex.SkippingInstantiationContexts"
severity="Info">
+
+