+ # Start of an include stack.
+ [ qr/^In file included from .*[,:]$/ => sub {
+ my ($msg) = @_;
+ $location = "$msg\n";
+ } ],
+
+ # Continuation of an include stack.
+ [ qr/^ from .*[,:]$/ => sub {
+ my ($msg) = @_;
+ $location .= "$msg\n";
+ } ],
+
+ # A function, method, constructor, or destructor is the site of a problem
+ [ qr/In ((con|de)structor|(member )?function)/ => sub {
+ my ($msg) = @_;
+ # If a complete location string is waiting then probably we dropped an error, so drop the location for a new one.
+ if ($location =~ m/In ((con|de)structor|(member )?function)/) {
+ $location = "$msg\n";
+ } else {
+ $location .= "$msg\n";
+ }
+ } ],
+