Skip to content

Commit dad85ba

Browse files
Nathan Lanzameta-codesync[bot]
authored andcommitted
Remove getMapBuffer() from placeholder StateData (#57213)
Summary: Pull Request resolved: #57213 `StateData` is the placeholder data type for shadow nodes that have no state. It declared `getMapBuffer()` but never defined it, which breaks the build under clang-22. `ConcreteState<DataT>::getMapBuffer()` calls `getData().getMapBuffer()` only when the `StateDataWithMapBuffer` concept is satisfied, and otherwise returns `MapBufferBuilder::EMPTY()`. Because `StateData` declared `getMapBuffer()`, it satisfied the concept, so `ConcreteState<StateData>::getMapBuffer()` referenced the undefined `StateData::getMapBuffer()`. Whether a class template's virtual members are implicitly instantiated is unspecified ([temp.inst]/11); clang-22 instantiates this override, turning the missing definition into an undefined-symbol link error. Remove `getMapBuffer()` from `StateData` so the concept is no longer satisfied and the `EMPTY()` fallback is used — the same way `getJNIReference()` is already handled for this placeholder type. `getDynamic()` stays, since `ConcreteState` calls it unconditionally. Changelog: [Internal] Reviewed By: javache Differential Revision: D95506209 fbshipit-source-id: 71e767bb19dce5b6097d49654b3701896a783f5b
1 parent d26f7b3 commit dad85ba

4 files changed

Lines changed: 4 additions & 7 deletions

File tree

packages/react-native/ReactCommon/react/renderer/core/StateData.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111

1212
#ifdef RN_SERIALIZABLE_STATE
1313
#include <folly/dynamic.h>
14-
#include <react/renderer/mapbuffer/MapBuffer.h>
15-
#include <react/renderer/mapbuffer/MapBufferBuilder.h>
1614
#endif
1715

1816
namespace facebook::react {
@@ -27,8 +25,10 @@ struct StateData final {
2725
#ifdef RN_SERIALIZABLE_STATE
2826
StateData() = default;
2927
StateData(const StateData &previousState, folly::dynamic data) {}
30-
folly::dynamic getDynamic() const;
31-
MapBuffer getMapBuffer() const;
28+
folly::dynamic getDynamic() const
29+
{
30+
return {};
31+
}
3232
#endif
3333
};
3434

scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7933,7 +7933,6 @@ struct facebook::react::Size {
79337933
struct facebook::react::StateData {
79347934
public StateData() = default;
79357935
public StateData(const facebook::react::StateData& previousState, folly::dynamic data);
7936-
public facebook::react::MapBuffer getMapBuffer() const;
79377936
public folly::dynamic getDynamic() const;
79387937
public using Shared = std::shared_ptr<const void>;
79397938
}

scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7697,7 +7697,6 @@ struct facebook::react::Size {
76977697
struct facebook::react::StateData {
76987698
public StateData() = default;
76997699
public StateData(const facebook::react::StateData& previousState, folly::dynamic data);
7700-
public facebook::react::MapBuffer getMapBuffer() const;
77017700
public folly::dynamic getDynamic() const;
77027701
public using Shared = std::shared_ptr<const void>;
77037702
}

scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7924,7 +7924,6 @@ struct facebook::react::Size {
79247924
struct facebook::react::StateData {
79257925
public StateData() = default;
79267926
public StateData(const facebook::react::StateData& previousState, folly::dynamic data);
7927-
public facebook::react::MapBuffer getMapBuffer() const;
79287927
public folly::dynamic getDynamic() const;
79297928
public using Shared = std::shared_ptr<const void>;
79307929
}

0 commit comments

Comments
 (0)