From 24be553ece5ef889180597afe64802858dfa393c Mon Sep 17 00:00:00 2001 From: CEL Dev Team Date: Tue, 1 Sep 2026 10:41:21 -0700 Subject: [PATCH] No public description PiperOrigin-RevId: 974580706 --- checker/internal/type_checker_impl.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/checker/internal/type_checker_impl.cc b/checker/internal/type_checker_impl.cc index bca187417..51c59593e 100644 --- a/checker/internal/type_checker_impl.cc +++ b/checker/internal/type_checker_impl.cc @@ -610,9 +610,11 @@ void ResolveVisitor::PostVisitMap(const Expr& expr, const MapExpr& map) { for (const auto& entry : map.entries()) { const Expr* value = &entry.value(); Type value_type = GetDeducedType(value); + OptionalType opt_value_type; if (entry.optional()) { if (value_type.IsOptional()) { - value_type = value_type.GetOptional().GetParameter(); + opt_value_type = value_type.GetOptional(); + value_type = opt_value_type.GetParameter(); } else { ReportTypeMismatch(entry.value().id(), OptionalType(arena_, value_type), value_type); @@ -648,9 +650,11 @@ void ResolveVisitor::PostVisitList(const Expr& expr, const ListExpr& list) { for (const auto& element : list.elements()) { const Expr* value = &element.expr(); Type value_type = GetDeducedType(value); + OptionalType opt_value_type; if (element.optional()) { if (value_type.IsOptional()) { - value_type = value_type.GetOptional().GetParameter(); + opt_value_type = value_type.GetOptional(); + value_type = opt_value_type.GetParameter(); } else { ReportTypeMismatch(element.expr().id(), OptionalType(arena_, value_type), value_type); @@ -1203,8 +1207,10 @@ void ResolveVisitor::HandleOptSelect(const Expr& expr) { } Type operand_type = GetDeducedType(operand); + OptionalType opt_operand_type; if (operand_type.IsOptional()) { - operand_type = operand_type.GetOptional().GetParameter(); + opt_operand_type = operand_type.GetOptional(); + operand_type = opt_operand_type.GetParameter(); } std::optional field_type = CheckFieldType(