[flang-commits] [flang] [flang][semantic] Implement semantic checks and new data structure (PR #203030)
Eugene Epshteyn via flang-commits
flang-commits at lists.llvm.org
Wed Jul 1 08:08:43 PDT 2026
================
@@ -343,11 +350,138 @@ void ArraySpecAnalyzer::Analyze(const parser::ExplicitShapeSpec &x) {
std::get<parser::SpecificationExpr>(x.t));
}
+std::optional<ArraySpecAnalyzer::ExplicitShapeBoundsResult>
+ArraySpecAnalyzer::checkExplicitShapeBoundsSpec(
+ const parser::ExplicitShapeBoundsSpec &x) {
+ const auto &lowerBoundOpt{std::get<0>(x.t)};
+ const auto &upperBound{std::get<1>(x.t)};
+
+ // Analyze, validate, fold, and wrap one bound expression in a Bound.
+ // Returns the Bound and, for rank-1, the constant extent; for scalar
+ // the extent is 0 (meaning "broadcast").
+ bool hasError{false};
+ auto analyzeBound =
+ [&](const auto &parseBound,
+ bool isUpper) -> std::optional<std::pair<Bound, std::int64_t>> {
+ MaybeExpr expr{AnalyzeExpr(context_, parseBound.thing)};
----------------
eugeneepshteyn wrote:
I understand what you are saying, but with time such preconditions tend to change in the ways we cannot predict now. If not having expr here is "inconceivable", then let's add an assert/CHECK.
https://github.com/llvm/llvm-project/pull/203030
More information about the flang-commits
mailing list