Fortran: Warn when dependency scanning fails to parse a source file
We expect to handle all relevant statements and ignore those that we do not understand. Warn if this process ever fails. Otherwise dependency information may be silently left out.
This commit is contained in:
parent
8317ea01aa
commit
e11cd31fa0
|
@ -130,6 +130,12 @@ bool cmDependsFortran::WriteDependencies(const std::set<std::string>& sources,
|
||||||
if (cmFortran_yyparse(parser.Scanner) != 0) {
|
if (cmFortran_yyparse(parser.Scanner) != 0) {
|
||||||
// Failed to parse the file. Report failure to write dependencies.
|
// Failed to parse the file. Report failure to write dependencies.
|
||||||
okay = false;
|
okay = false;
|
||||||
|
/* clang-format off */
|
||||||
|
std::cerr <<
|
||||||
|
"warning: failed to parse dependencies from Fortran source "
|
||||||
|
"'" << src << "': " << parser.Error << std::endl
|
||||||
|
;
|
||||||
|
/* clang-format on */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return okay;
|
return okay;
|
||||||
|
|
|
@ -146,6 +146,9 @@ struct cmFortranParser_s
|
||||||
// Buffer for string literals.
|
// Buffer for string literals.
|
||||||
std::string TokenString;
|
std::string TokenString;
|
||||||
|
|
||||||
|
// Error message text if a parser error occurs.
|
||||||
|
std::string Error;
|
||||||
|
|
||||||
// Flag for whether lexer is reading from inside an interface.
|
// Flag for whether lexer is reading from inside an interface.
|
||||||
bool InInterface;
|
bool InInterface;
|
||||||
|
|
||||||
|
|
|
@ -164,11 +164,9 @@ int cmFortranParser_GetOldStartcond(cmFortranParser* parser)
|
||||||
return parser->OldStartcond;
|
return parser->OldStartcond;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmFortranParser_Error(cmFortranParser* /*unused*/, const char* /*unused*/)
|
void cmFortranParser_Error(cmFortranParser* parser, const char* msg)
|
||||||
{
|
{
|
||||||
// If there is a parser error just ignore it. The source will not
|
parser->Error = msg ? msg : "unknown error";
|
||||||
// compile and the user will edit it. Then dependencies will have
|
|
||||||
// to be regenerated anyway.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmFortranParser_RuleUse(cmFortranParser* parser, const char* name)
|
void cmFortranParser_RuleUse(cmFortranParser* parser, const char* name)
|
||||||
|
|
Loading…
Reference in New Issue