From 5491fdf559ec68039a218bab6bf41901611554f0 Mon Sep 17 00:00:00 2001 From: Peixin-Qiao Date: Wed, 1 Jun 2022 14:38:46 +0800 Subject: [PATCH] [flang] Add semantic check for named constant as function result Similar to procedure argument, the function result cannot be one named constant. Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D126693 --- flang/lib/Semantics/check-declarations.cpp | 4 ++++ flang/test/Semantics/declarations01.f90 | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100644 flang/test/Semantics/declarations01.f90 diff --git a/flang/lib/Semantics/check-declarations.cpp b/flang/lib/Semantics/check-declarations.cpp index 6b559545e448..805d89075e3f 100644 --- a/flang/lib/Semantics/check-declarations.cpp +++ b/flang/lib/Semantics/check-declarations.cpp @@ -351,6 +351,10 @@ void CheckHelper::Check(const Symbol &symbol) { "A dummy argument may not have the SAVE attribute"_err_en_US); } } else if (IsFunctionResult(symbol)) { + if (IsNamedConstant(symbol)) { + messages_.Say( + "A function result may not also be a named constant"_err_en_US); + } if (!symbol.test(Symbol::Flag::InDataStmt) /*caught elsewhere*/ && IsSaved(symbol)) { messages_.Say( diff --git a/flang/test/Semantics/declarations01.f90 b/flang/test/Semantics/declarations01.f90 new file mode 100644 index 000000000000..f3673a7ed0d1 --- /dev/null +++ b/flang/test/Semantics/declarations01.f90 @@ -0,0 +1,8 @@ +! RUN: %python %S/test_errors.py %s %flang_fc1 +! test named constant declarations + +function f1() result(x) + !ERROR: A function result may not also be a named constant + integer, parameter :: x = 1 +end +