Deprecate YGConfigSetUseLegacyStretchBehaviour (#37117)

Summary:
X-link: https://github.com/facebook/react-native/pull/37117

Pull Request resolved: https://github.com/facebook/yoga/pull/1265

This deprecates `YGConfigSetUseLegacyStretchBehaviour` and `YGConfigGetUseLegacyStretchBehaviour`and points users to errata APIs instead. Using the C API will fire deprecation warnings, which should create errors in builds with `-Werror`, though they can be ignored if truly needed (like we do with the language bindings which need to expose their own deprecated interface).

Reviewed By: rshest

Differential Revision: D45337198

fbshipit-source-id: 7f069623e38834171f5702382bbf47c37a556a22
This commit is contained in:
Nick Gerleman
2023-04-30 08:20:05 -07:00
committed by Facebook GitHub Bot
parent 893b3e3957
commit f32d37a3d5
5 changed files with 31 additions and 3 deletions

View File

@@ -102,7 +102,10 @@ static void jni_YGConfigSetUseLegacyStretchBehaviourJNI(
jlong nativePointer,
jboolean useLegacyStretchBehaviour) {
const YGConfigRef config = _jlong2YGConfigRef(nativePointer);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
YGConfigSetUseLegacyStretchBehaviour(config, useLegacyStretchBehaviour);
#pragma clang diagnostic pop
}
static void jni_YGConfigSetErrataJNI(

View File

@@ -33,7 +33,10 @@ void Config::setPointScaleFactor(float pixelsInPoint) {
}
void Config::setUseLegacyStretchBehaviour(bool useLegacyStretchBehaviour) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
YGConfigSetUseLegacyStretchBehaviour(m_config, useLegacyStretchBehaviour);
#pragma clang diagnostic pop
}
void Config::setErrata(int errata) {
@@ -50,7 +53,10 @@ bool Config::isExperimentalFeatureEnabled(int feature) const {
}
bool Config::useLegacyStretchBehaviour() const {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"
return YGConfigGetUseLegacyStretchBehaviour(m_config);
#pragma clang diagnostic pop
}
int Config::getErrata() const {

View File

@@ -118,7 +118,7 @@ TEST(YogaTest, assert_webdefault_values_reset) {
TEST(YogaTest, assert_legacy_stretch_behaviour) {
YGConfig* config = YGConfigNew();
YGConfigSetUseLegacyStretchBehaviour(config, true);
YGConfigSetErrata(config, YGErrataStretchFlexBasis);
const YGNodeRef root = YGNodeNewWithConfig(config);
YGNodeStyleSetWidth(root, 500);
YGNodeStyleSetHeight(root, 500);

View File

@@ -19,6 +19,14 @@
#define YG_EXTERN_C_END
#endif
#if defined(__cplusplus)
#define YG_DEPRECATED(message) [[deprecated(message)]]
#elif defined(_MSC_VER)
#define YG_DEPRECATED(message) __declspec(depreacted(message))
#else
#define YG_DEPRECATED(message) __attribute__((deprecated(message)))
#endif
#ifdef _WINDLL
#define WIN_EXPORT __declspec(dllexport)
#else

View File

@@ -323,8 +323,19 @@ WIN_EXPORT void YGConfigSetPointScaleFactor(
// resulted in implicit behaviour similar to align-self: stretch; Because this
// was such a long-standing bug we must allow legacy users to switch back to
// this behaviour.
WIN_EXPORT bool YGConfigGetUseLegacyStretchBehaviour(YGConfigRef config);
WIN_EXPORT void YGConfigSetUseLegacyStretchBehaviour(
WIN_EXPORT YG_DEPRECATED(
"Please use "
"\"YGConfigGetErrata()\"") bool YGConfigGetUseLegacyStretchBehaviour(YGConfigRef
config);
WIN_EXPORT
YG_DEPRECATED(
"\"YGConfigSetUseLegacyStretchBehaviour\" will be removed in the next "
"release. Usage should be replaced with \"YGConfigSetErrata(YGErrataAll)\" "
"to opt out of all future breaking conformance fixes, or "
"\"YGConfigSetErrata(YGErrataStretchFlexBasis)\" to opt out of the "
"specific conformance fix previously disabled by "
"\"UseLegacyStretchBehaviour\".")
void YGConfigSetUseLegacyStretchBehaviour(
YGConfigRef config,
bool useLegacyStretchBehaviour);