From d4c9b21bae5702dff6670dddf771385103e70504 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Mon, 1 Oct 2018 14:06:49 -0700 Subject: [core, tests] Don't break text-field support "identity functions" --- src/mbgl/style/conversion/function.cpp | 3 +++ test/style/conversion/function.test.cpp | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/mbgl/style/conversion/function.cpp b/src/mbgl/style/conversion/function.cpp index 34ac52ec1b..5877d0eb7c 100644 --- a/src/mbgl/style/conversion/function.cpp +++ b/src/mbgl/style/conversion/function.cpp @@ -700,6 +700,9 @@ optional> convertFunctionToExpression(type::Type typ [&] (const type::Array& array) -> optional> { return assertion(array, get(literal(*property))); }, + [&] (const type::FormattedType&) -> optional> { + return format(get(literal(*property))); + }, [&] (const auto&) -> optional> { assert(false); // No properties use this type. return nullopt; diff --git a/test/style/conversion/function.test.cpp b/test/style/conversion/function.test.cpp index 8ebdcdb9bb..93a9a7e608 100644 --- a/test/style/conversion/function.test.cpp +++ b/test/style/conversion/function.test.cpp @@ -92,3 +92,21 @@ TEST(StyleConversion, TokenStrings) { ASSERT_EQ(*convertTokenStringToExpression("{token} {token"), *concat(vec(get(literal("token")), literal(" "), literal("{token")))); ASSERT_EQ(*convertTokenStringToExpression("{token {token}"), *concat(vec(literal("{token "), get(literal("token"))))); } + + +TEST(StyleConversion, FormattedIdentityFunction) { + // See https://github.com/mapbox/mapbox-gl-js/issues/7311 + // We never introduced this bug on gl-native, but we _almost_ did + Error error; + + auto parseFunction = [&](const std::string& json) { + return convertJSON>(json, error, true, false); + }; + + using namespace mbgl::style::expression::dsl; + + auto fn1 = parseFunction(R"({ "property": "name", "type": "identity" })"); + ASSERT_TRUE(bool(fn1)); + ASSERT_TRUE(fn1->isExpression()); + ASSERT_EQ(fn1->asExpression().getExpression(), *format(get(literal("name")))); +} -- cgit v1.2.1