Skip to content

Commit 6a80a3f

Browse files
committed
respect modules files
1 parent 236e978 commit 6a80a3f

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

flang/include/flang/Evaluate/common.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,13 +257,13 @@ class FoldingContext {
257257
}
258258
template <typename... A>
259259
parser::Message *Warn(common::LanguageFeature feature, A &&...args) {
260-
return messages_.Warn(/*isInModuleFile=*/false, languageFeatures_, feature,
261-
std::forward<A>(args)...);
260+
return messages_.Warn(
261+
IsInModuleFile(), languageFeatures_, feature, std::forward<A>(args)...);
262262
}
263263
template <typename... A>
264264
parser::Message *Warn(common::UsageWarning warning, A &&...args) {
265-
return messages_.Warn(/*isInModuleFile=*/false, languageFeatures_, warning,
266-
std::forward<A>(args)...);
265+
return messages_.Warn(
266+
IsInModuleFile(), languageFeatures_, warning, std::forward<A>(args)...);
267267
}
268268
std::optional<parser::CharBlock> moduleFileName() const {
269269
return moduleFileName_;
@@ -272,6 +272,7 @@ class FoldingContext {
272272
moduleFileName_ = n;
273273
return *this;
274274
}
275+
bool IsInModuleFile() const { return moduleFileName_.has_value(); }
275276

276277
ConstantSubscript &StartImpliedDo(parser::CharBlock, ConstantSubscript = 1);
277278
std::optional<ConstantSubscript> GetImpliedDo(parser::CharBlock) const;

flang/include/flang/Parser/message.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ class Messages {
339339
const common::LanguageFeatureControl &control,
340340
common::LanguageFeature feature, A &&...args) {
341341
if (!isInModuleFile && control.ShouldWarn(feature)) {
342-
return &addWarning(feature, std::forward<A>(args)...);
342+
return &AddWarning(feature, std::forward<A>(args)...);
343343
}
344344
return nullptr;
345345
}
@@ -349,7 +349,7 @@ class Messages {
349349
const common::LanguageFeatureControl &control,
350350
common::UsageWarning warning, A &&...args) {
351351
if (!isInModuleFile && control.ShouldWarn(warning)) {
352-
return &addWarning(warning, std::forward<A>(args)...);
352+
return &AddWarning(warning, std::forward<A>(args)...);
353353
}
354354
return nullptr;
355355
}
@@ -371,11 +371,11 @@ class Messages {
371371

372372
private:
373373
template <typename... A>
374-
Message &addWarning(common::UsageWarning warning, A &&...args) {
374+
Message &AddWarning(common::UsageWarning warning, A &&...args) {
375375
return messages_.emplace_back(warning, std::forward<A>(args)...);
376376
}
377377
template <typename... A>
378-
Message &addWarning(common::LanguageFeature feature, A &&...args) {
378+
Message &AddWarning(common::LanguageFeature feature, A &&...args) {
379379
return messages_.emplace_back(feature, std::forward<A>(args)...);
380380
}
381381
std::list<Message> messages_;

flang/lib/Evaluate/fold-integer.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,8 +1440,10 @@ Expr<Type<TypeCategory::Integer, KIND>> FoldIntrinsicFunction(
14401440
context.targetCharacteristics().GetByteSize(TypeCategory::Real,
14411441
context.defaults().GetDefaultKind(TypeCategory::Real))};
14421442
if (intBytes != realBytes) {
1443-
context.Warn(common::UsageWarning::FoldingValueChecks,
1444-
*context.moduleFileName(),
1443+
// Using the low-level API to bypass the module file check in this case.
1444+
context.messages().Warn(
1445+
/*isInModuleFile=*/false, context.languageFeatures(),
1446+
common::UsageWarning::FoldingValueChecks, *context.moduleFileName(),
14451447
"NUMERIC_STORAGE_SIZE from ISO_FORTRAN_ENV is not well-defined when default INTEGER and REAL are not consistent due to compiler options"_warn_en_US);
14461448
}
14471449
return Expr<T>{8 * std::min(intBytes, realBytes)};

0 commit comments

Comments
 (0)