[flang-commits] [flang] [flang] Reject PARAMETER constants in NAMELIST groups (PR #178960)
Miguel Saldivar via flang-commits
flang-commits at lists.llvm.org
Mon Feb 2 15:56:31 PST 2026
https://github.com/Saldivarcher updated https://github.com/llvm/llvm-project/pull/178960
>From b3c1caafeb49ebc55bdfdb25aec03f497d139a7f Mon Sep 17 00:00:00 2001
From: Miguel Saldivar <miguel.saldivar at hpe.com>
Date: Fri, 30 Jan 2026 14:42:45 -0600
Subject: [PATCH] [flang] Reject PARAMETER constants in NAMELIST groups
The Fortran standard does not allow `PARAMETERS` within a
`namelist-group-object`, it should only allow variables.
An error should be emitted when a `PARAMETER` is found within a
`namelist-group-object`.
---
flang/include/flang/Support/Fortran-features.h | 3 ++-
flang/lib/Semantics/check-namelist.cpp | 9 +++++++++
flang/test/Semantics/namelist02.f90 | 8 ++++++++
3 files changed, 19 insertions(+), 1 deletion(-)
create mode 100644 flang/test/Semantics/namelist02.f90
diff --git a/flang/include/flang/Support/Fortran-features.h b/flang/include/flang/Support/Fortran-features.h
index c847e6d509878..fd0835689e78f 100644
--- a/flang/include/flang/Support/Fortran-features.h
+++ b/flang/include/flang/Support/Fortran-features.h
@@ -80,7 +80,8 @@ ENUM_CLASS(UsageWarning, Portability, PointerToUndefinable,
NullActualForDefaultIntentAllocatable, UseAssociationIntoSameNameSubprogram,
HostAssociatedIntentOutInSpecExpr, NonVolatilePointerToVolatile,
RealConstantWidening, VolatileOrAsynchronousTemporary, UnusedVariable,
- UsedUndefinedVariable, BadValueInDeadCode, AssumedTypeSizeDummy)
+ UsedUndefinedVariable, BadValueInDeadCode, AssumedTypeSizeDummy,
+ NamelistParameter)
using LanguageFeatures = EnumSet<LanguageFeature, LanguageFeature_enumSize>;
using UsageWarnings = EnumSet<UsageWarning, UsageWarning_enumSize>;
diff --git a/flang/lib/Semantics/check-namelist.cpp b/flang/lib/Semantics/check-namelist.cpp
index c2804c5d874e9..3dd9e7fdb8bc5 100644
--- a/flang/lib/Semantics/check-namelist.cpp
+++ b/flang/lib/Semantics/check-namelist.cpp
@@ -28,6 +28,15 @@ void NamelistChecker::Leave(const parser::NamelistStmt &nmlStmt) {
"PUBLIC namelist"_err_en_US,
nmlObjSymbol->name());
}
+ // `namelist-group-object` may only contain variables.
+ if (nmlObjSymbol->attrs().test(Attr::PARAMETER)) {
+ if (context_.ShouldWarn(common::UsageWarning::NamelistParameter)) {
+ context_.Say(nmlObjName.source,
+ "A namelist group object '%s' must not be a "
+ "PARAMETER"_warn_en_US,
+ nmlObjSymbol->name());
+ }
+ }
}
}
}
diff --git a/flang/test/Semantics/namelist02.f90 b/flang/test/Semantics/namelist02.f90
new file mode 100644
index 0000000000000..fd2a9c90077fa
--- /dev/null
+++ b/flang/test/Semantics/namelist02.f90
@@ -0,0 +1,8 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic -Werror
+
+program p
+ implicit none
+ integer, parameter :: k = 3
+ !WARNING: A namelist group object 'k' must not be a PARAMETER
+ namelist /g/ k
+end program
More information about the flang-commits
mailing list