From 70365f2d04f662e82e7c02f38af696a352d940f0 Mon Sep 17 00:00:00 2001 From: Ruslan Shestopalyuk Date: Fri, 4 Aug 2023 07:40:07 -0700 Subject: [PATCH] Fix compilation warnings related to YogaShadowNode (#38781) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/38781 ## Changelog: [Internal] - These pop up when compiling with `/Wall`, fixes two legitimate warnings around using YogaShadowNode/Props in RN. The `suggestedIndex` in `ShadowNode::replaceChild` (and the overriden one in `YogaLayoutableShadowNode`) is used in a way around the code that suggests that it **is** expected to be negative (checking for non-negativity, assigning -1 as default etc), so having it as a `size_t` type argument both makes things confusing and generates the warning. I believe it's a good idea to be consistent and use the same type for the index throughout. In majority of the cases it's `int32_t` as of now. Reviewed By: rozele Differential Revision: D48059620 fbshipit-source-id: c4bab91f5c66c62d00947f96cb48906a8499f282 --- .../renderer/components/view/YogaLayoutableShadowNode.cpp | 2 +- .../react/renderer/components/view/YogaLayoutableShadowNode.h | 2 +- .../react/renderer/components/view/YogaStylableProps.cpp | 3 +-- .../ReactCommon/react/renderer/core/ShadowNode.cpp | 2 +- .../react-native/ReactCommon/react/renderer/core/ShadowNode.h | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp index 08f15ec203c..12c8ebd1255 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp @@ -251,7 +251,7 @@ void YogaLayoutableShadowNode::appendChild( void YogaLayoutableShadowNode::replaceChild( ShadowNode const &oldChild, ShadowNode::Shared const &newChild, - size_t suggestedIndex) { + int32_t suggestedIndex) { LayoutableShadowNode::replaceChild(oldChild, newChild, suggestedIndex); ensureUnsealed(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h b/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h index 9456b0ccc0b..d59e515487b 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.h @@ -55,7 +55,7 @@ class YogaLayoutableShadowNode : public LayoutableShadowNode { void replaceChild( ShadowNode const &oldChild, ShadowNode::Shared const &newChild, - size_t suggestedIndex = -1) override; + int32_t suggestedIndex = -1) override; void updateYogaChildren(); diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp index 79f294bef76..b92ae8c68a6 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp @@ -105,6 +105,7 @@ void YogaStylableProps::setProp( const char *propName, RawValue const &value) { static const auto ygDefaults = YGStyle{}; + static const auto defaults = YogaStylableProps{}; Props::setProp(context, hash, propName, value); @@ -133,8 +134,6 @@ void YogaStylableProps::setProp( REBUILD_FIELD_YG_EDGES(padding, "padding", ""); REBUILD_FIELD_YG_EDGES(border, "border", "Width"); - static const auto defaults = YogaStylableProps{}; - // Aliases RAW_SET_PROP_SWITCH_CASE(inset, "inset"); RAW_SET_PROP_SWITCH_CASE(insetBlock, "insetBlock"); diff --git a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp index f8782c879f0..8c6497d728a 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp +++ b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.cpp @@ -236,7 +236,7 @@ void ShadowNode::appendChild(const ShadowNode::Shared &child) { void ShadowNode::replaceChild( ShadowNode const &oldChild, ShadowNode::Shared const &newChild, - size_t suggestedIndex) { + int32_t suggestedIndex) { ensureUnsealed(); cloneChildrenIfShared(); diff --git a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h index 4e428b25997..6cb054ea39e 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h @@ -168,7 +168,7 @@ class ShadowNode : public Sealable, virtual void replaceChild( ShadowNode const &oldChild, Shared const &newChild, - size_t suggestedIndex = -1); + int32_t suggestedIndex = -1); /* * Performs all side effects associated with mounting/unmounting in one place.