From 34642dab32aa7358434ef62c434de4b38460d226 Mon Sep 17 00:00:00 2001 From: peter klausler Date: Mon, 3 Dec 2018 17:20:28 -0800 Subject: [PATCH] [flang] fixes Original-commit: flang-compiler/f18@d312b2298a36c5676fdac66ec2acbf188dd80f4d Reviewed-on: https://github.com/flang-compiler/f18/pull/234 --- flang/lib/evaluate/expression.h | 3 ++- flang/lib/semantics/expression.cc | 2 +- flang/lib/semantics/expression.h | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/flang/lib/evaluate/expression.h b/flang/lib/evaluate/expression.h index f323e26..2d8feea 100644 --- a/flang/lib/evaluate/expression.h +++ b/flang/lib/evaluate/expression.h @@ -614,7 +614,8 @@ public: EVALUATE_UNION_CLASS_BOILERPLATE(Expr) int GetKind() const { return std::visit( - [](const auto &x) { return decltype(x)::Result::kind; }, u); + [](const auto &x) { return std::decay_t::Result::kind; }, + u); } common::MapTemplate> u; }; diff --git a/flang/lib/semantics/expression.cc b/flang/lib/semantics/expression.cc index 1812e90..d8ab52f 100644 --- a/flang/lib/semantics/expression.cc +++ b/flang/lib/semantics/expression.cc @@ -91,7 +91,7 @@ bool ExpressionAnalysisContext::LogicalConstraint(Expr &expr) { bool ExpressionAnalysisContext::DefaultCharConstraint(Expr &expr) { if (auto *charExpr{std::get_if>(&expr.u)}) { return charExpr->GetKind() == - context.defaultKinds.GetDefaultKind(TypeCategory::Character); + context_.defaultKinds().GetDefaultKind(TypeCategory::Character); } Say("expression must be default CHARACTER"_err_en_US); return false; diff --git a/flang/lib/semantics/expression.h b/flang/lib/semantics/expression.h index 630093e..13133a85 100644 --- a/flang/lib/semantics/expression.h +++ b/flang/lib/semantics/expression.h @@ -92,7 +92,7 @@ extern template std::optional> AnalyzeExpr( // Forward declarations of exposed specializations template -MaybeExpr AnalyzeExpr( +std::optional> AnalyzeExpr( ExpressionAnalysisContext &, const common::Indirection &); template std::optional> AnalyzeExpr( @@ -112,7 +112,7 @@ std::optional> AnalyzeExpr( // Indirections are silently traversed by AnalyzeExpr(). template -MaybeExpr AnalyzeExpr( +std::optional> AnalyzeExpr( ExpressionAnalysisContext &context, const common::Indirection &x) { return AnalyzeExpr(context, *x); } -- 2.7.4