Fix Macro Errors for Windows (#34299)

Summary:
Fix macro errors for Windows. Current syntax breaks the build of the React Common project on Windows because the ({...}) syntax is not supported; must be replaced with lambda expressions.

Resolves https://github.com/facebook/react-native/issues/34090

## Changelog

<!-- Help reviewers and the release process by writing your own changelog entry. For an example, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->

[General] [Fixed] - Fix macro errors for Windows.

lyahdav JoshuaGross

Pull Request resolved: https://github.com/facebook/react-native/pull/34299

Test Plan: Build on react-native-windows repo. Tested in RNW app.

Reviewed By: javache

Differential Revision: D38272966

Pulled By: NickGerleman

fbshipit-source-id: e76eac11cde173ef49465d01d793c593017f2ab7
This commit is contained in:
Chiara Mooney
2022-08-01 20:54:59 -07:00
committed by Facebook GitHub Bot
parent cd595bd090
commit fc26dbfce0
4 changed files with 20 additions and 21 deletions
@@ -13,12 +13,12 @@
#include <react/renderer/graphics/conversions.h>
#define GET_FIELD_VALUE(field, fieldName, defaultValue, rawValue) \
(rawValue.hasValue() ? ({ \
(rawValue.hasValue() ? ([&rawValue, &context] { \
decltype(defaultValue) res; \
fromRawValue(context, rawValue, res); \
res; \
}) \
: defaultValue)
return res; \
}()) \
: defaultValue);
#define REBUILD_FIELD_SWITCH_CASE( \
defaults, rawValue, property, field, fieldName) \
@@ -258,17 +258,18 @@ ViewProps::ViewProps(
#endif
{};
#define VIEW_EVENT_CASE(eventType, eventString) \
case CONSTEXPR_RAW_PROPS_KEY_HASH(eventString): { \
ViewEvents defaultViewEvents{}; \
events[eventType] = ({ \
bool res = defaultViewEvents[eventType]; \
if (value.hasValue()) { \
fromRawValue(context, value, res); \
} \
res; \
}); \
return; \
#define VIEW_EVENT_CASE(eventType, eventString) \
case CONSTEXPR_RAW_PROPS_KEY_HASH(eventString): { \
ViewEvents defaultViewEvents{}; \
events[eventType] = [ defaultViewEvents, &value, &context ]() constexpr { \
bool res = defaultViewEvents[eventType]; \
if (value.hasValue()) { \
fromRawValue(context, value, res); \
} \
return res; \
} \
(); \
return; \
}
void ViewProps::setProp(
@@ -119,7 +119,7 @@ class ConcreteComponentDescriptor : public ComponentDescriptor {
rawProps.iterateOverValues([&](RawPropsPropNameHash hash,
const char *propName,
RawValue const &fn) {
shadowNodeProps.get()->setProp(context, hash, propName, fn);
shadowNodeProps.get()->Props::setProp(context, hash, propName, fn);
});
}
@@ -19,14 +19,12 @@
// Get hash at compile-time. sizeof(str) - 1 == strlen
#define CONSTEXPR_RAW_PROPS_KEY_HASH(s) \
({ \
([]() constexpr { \
CLANG_PRAGMA("clang diagnostic push") \
CLANG_PRAGMA("clang diagnostic ignored \"-Wshadow\"") \
constexpr RawPropsPropNameHash propNameHash = \
folly::hash::fnv32_buf(s, sizeof(s) - 1); \
propNameHash; \
return folly::hash::fnv32_buf(s, sizeof(s) - 1); \
CLANG_PRAGMA("clang diagnostic pop") \
})
}())
#define RAW_PROPS_KEY_HASH(s) folly::hash::fnv32_buf(s, std::strlen(s))