Convert, Dispose, IOListLeadingComma, AbbreviatedEditDescriptor,
ProgramParentheses, PercentRefAndVal, OmitFunctionDummies, CrayPointer,
Hollerith, ArithmeticIF, Assign, AssignedGOTO, Pause, OpenMP,
- CruftAfterAmpersand, ClassicCComments, AdditionalFormats, BigIntLiterals)
+ CruftAfterAmpersand, ClassicCComments, AdditionalFormats, BigIntLiterals,
+ RealDoControls)
using LanguageFeatures =
common::EnumSet<LanguageFeature, LanguageFeature_enumSize>;
}
void CheckDoControl(parser::CharBlock sourceLocation, bool isReal) {
- if ((isReal) && (!context_.warnOnNonstandardUsage())) {
+ bool warn = context_.warnOnNonstandardUsage() ||
+ context_.ShouldWarn(parser::LanguageFeature::RealDoControls);
+ bool enabled = context_.IsEnabled(parser::LanguageFeature::RealDoControls);
+ if (isReal && enabled && !(warn)) {
// No messages for the default case
- } else if (isReal && context_.warnOnNonstandardUsage() &&
- (!context_.warningsAreErrors())) {
+ } else if (isReal && enabled && warn && !context_.warningsAreErrors()) {
context_.Say(sourceLocation, "DO controls should be INTEGER"_en_US);
} else {
context_.Say(sourceLocation, "DO controls should be INTEGER"_err_en_US);