From 26a461f26e8e7d0584df2d698e2679839cd853be Mon Sep 17 00:00:00 2001 From: Anand Thakker Date: Thu, 5 Apr 2018 15:45:54 -0400 Subject: [PATCH] Fix style parsing bug for constant expressions Closes #10849 --- .../conversion/data_driven_property_value.hpp | 14 +++++++++++--- mapbox-gl-js | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/mbgl/style/conversion/data_driven_property_value.hpp b/include/mbgl/style/conversion/data_driven_property_value.hpp index 5f4395f35ab..466d4b6402e 100644 --- a/include/mbgl/style/conversion/data_driven_property_value.hpp +++ b/include/mbgl/style/conversion/data_driven_property_value.hpp @@ -46,9 +46,17 @@ struct Converter> { } else { // If an expression is neither zoom- nor feature-dependent, it // should have been reduced to a Literal when it was parsed. - auto literal = dynamic_cast(expression->get()); - assert(literal); - optional constant = fromExpressionValue(literal->getValue()); + optional constant; + if (auto literal = dynamic_cast(expression->get())) { + // cool, it's pre-folded to a literal + constant = fromExpressionValue(literal->getValue()); + } else { + // we didn't manage to fold to a literal during parsing, so evaluate it now + EvaluationContext params(nullptr); + EvaluationResult evaluated((*expression)->evaluate(params)); + assert(evaluated); + constant = fromExpressionValue(*evaluated); + } if (!constant) { return {}; } diff --git a/mapbox-gl-js b/mapbox-gl-js index bbee7e51695..b5839fe06ba 160000 --- a/mapbox-gl-js +++ b/mapbox-gl-js @@ -1 +1 @@ -Subproject commit bbee7e51695184e9b3c0ecb74d314c4ab73d4c27 +Subproject commit b5839fe06ba186a43685e7ebb2417675d92d099c