diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp index 8d817f077880b..b957f773816b1 100644 --- a/flang/lib/Semantics/expression.cpp +++ b/flang/lib/Semantics/expression.cpp @@ -4613,8 +4613,9 @@ evaluate::Expr AnalyzeKindSelector( SemanticsContext &context, common::TypeCategory category, const std::optional &selector) { evaluate::ExpressionAnalyzer analyzer{context}; + CHECK(context.location().has_value()); auto restorer{ - analyzer.GetContextualMessages().SetLocation(context.location().value())}; + analyzer.GetContextualMessages().SetLocation(*context.location())}; return analyzer.AnalyzeKindSelector(category, selector); } diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp index 36deab969456d..04e465acf1246 100644 --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -8247,6 +8247,7 @@ void ResolveNamesVisitor::FinishSpecificationPart( if (const auto *statement{std::get_if< parser::Statement>>( &decl.u)}) { + messageHandler().set_currStmtSource(statement->source); AnalyzeStmtFunctionStmt(statement->statement.value()); } }