Remove folly import in GenerateModuleObjCpp

Summary:
Changelog:

[iOS][Changed]
Replaced folly::Optional with std::optional from C++17 in Objc module generator.

Reviewed By: philIip

Differential Revision: D32367103

fbshipit-source-id: f0d254c4add7d6d2e0bdbceb09a852b4a01ea8c7
This commit is contained in:
Erich Graham
2022-03-22 17:10:18 -07:00
committed by Facebook GitHub Bot
parent d9f8ac2bc0
commit 45e2941367
12 changed files with 154 additions and 156 deletions
@@ -79,15 +79,15 @@ function toObjCType(
): string {
const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation);
const isRequired = !nullable && !isOptional;
const wrapFollyOptional = (type: string) => {
return isRequired ? type : `folly::Optional<${type}>`;
const wrapOptional = (type: string) => {
return isRequired ? type : `std::optional<${type}>`;
};
switch (typeAnnotation.type) {
case 'ReservedTypeAnnotation':
switch (typeAnnotation.name) {
case 'RootTag':
return wrapFollyOptional('double');
return wrapOptional('double');
default:
(typeAnnotation.name: empty);
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
@@ -95,15 +95,15 @@ function toObjCType(
case 'StringTypeAnnotation':
return 'NSString *';
case 'NumberTypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'FloatTypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'Int32TypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'DoubleTypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'BooleanTypeAnnotation':
return wrapFollyOptional('bool');
return wrapOptional('bool');
case 'GenericObjectTypeAnnotation':
return isRequired ? 'id<NSObject> ' : 'id<NSObject> _Nullable ';
case 'ArrayTypeAnnotation':
@@ -111,7 +111,7 @@ function toObjCType(
return isRequired ? 'id<NSObject> ' : 'id<NSObject> _Nullable ';
}
return wrapFollyOptional(
return wrapOptional(
`std::vector<${toObjCType(
hasteModuleName,
typeAnnotation.elementType,
@@ -123,7 +123,7 @@ function toObjCType(
hasteModuleName,
structName,
);
return wrapFollyOptional(`${namespacedStructName}::Builder`);
return wrapOptional(`${namespacedStructName}::Builder`);
default:
(typeAnnotation.type: empty);
throw new Error(
@@ -144,7 +144,7 @@ function toObjCValue(
function wrapPrimitive(type: string) {
return !isRequired
? `${value}.hasValue() ? @((${type})${value}.value()) : nil`
? `${value}.has_value() ? @((${type})${value}.value()) : nil`
: `@(${value})`;
}
@@ -199,7 +199,7 @@ function toObjCValue(
);
case 'TypeAliasTypeAnnotation':
return !isRequired
? `${value}.hasValue() ? ${value}.value().buildUnsafeRawValue() : nil`
? `${value}.has_value() ? ${value}.value().buildUnsafeRawValue() : nil`
: `${value}.buildUnsafeRawValue()`;
default:
(typeAnnotation.type: empty);
@@ -70,15 +70,15 @@ function toObjCType(
): string {
const [typeAnnotation, nullable] = unwrapNullable(nullableTypeAnnotation);
const isRequired = !nullable && !isOptional;
const wrapFollyOptional = (type: string) => {
return isRequired ? type : `folly::Optional<${type}>`;
const wrapOptional = (type: string) => {
return isRequired ? type : `std::optional<${type}>`;
};
switch (typeAnnotation.type) {
case 'ReservedTypeAnnotation':
switch (typeAnnotation.name) {
case 'RootTag':
return wrapFollyOptional('double');
return wrapOptional('double');
default:
(typeAnnotation.name: empty);
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
@@ -86,22 +86,22 @@ function toObjCType(
case 'StringTypeAnnotation':
return 'NSString *';
case 'NumberTypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'FloatTypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'Int32TypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'DoubleTypeAnnotation':
return wrapFollyOptional('double');
return wrapOptional('double');
case 'BooleanTypeAnnotation':
return wrapFollyOptional('bool');
return wrapOptional('bool');
case 'GenericObjectTypeAnnotation':
return isRequired ? 'id<NSObject> ' : 'id<NSObject> _Nullable';
case 'ArrayTypeAnnotation':
if (typeAnnotation.elementType == null) {
return isRequired ? 'id<NSObject> ' : 'id<NSObject> _Nullable';
}
return wrapFollyOptional(
return wrapOptional(
`facebook::react::LazyVector<${toObjCType(
hasteModuleName,
typeAnnotation.elementType,
@@ -113,7 +113,7 @@ function toObjCType(
hasteModuleName,
structName,
);
return wrapFollyOptional(namespacedStructName);
return wrapOptional(namespacedStructName);
default:
(typeAnnotation.type: empty);
throw new Error(
@@ -190,7 +190,7 @@ function toObjCValue(
);
return !isRequired
? `(${value} == nil ? folly::none : folly::make_optional(${namespacedStructName}(${value})))`
? `(${value} == nil ? std::nullopt : std::make_optional(${namespacedStructName}(${value})))`
: `${namespacedStructName}(${value})`;
default:
(typeAnnotation.type: empty);
@@ -82,7 +82,7 @@ const HeaderFileTemplate = ({
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>
` +
@@ -26,7 +26,7 @@ Map {
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>
@@ -77,7 +77,7 @@ Map {
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>
namespace JS {
@@ -134,11 +134,11 @@ namespace JS {
namespace JS {
namespace NativeSampleTurboModule {
struct SpecOptionalsA {
folly::Optional<double> optionalNumberProperty() const;
folly::Optional<facebook::react::LazyVector<double>> optionalArrayProperty() const;
folly::Optional<JS::NativeSampleTurboModule::SpecOptionalsAOptionalObjectProperty> optionalObjectProperty() const;
std::optional<double> optionalNumberProperty() const;
std::optional<facebook::react::LazyVector<double>> optionalArrayProperty() const;
std::optional<JS::NativeSampleTurboModule::SpecOptionalsAOptionalObjectProperty> optionalObjectProperty() const;
id<NSObject> _Nullable optionalGenericObjectProperty() const;
folly::Optional<bool> optionalBooleanTypeProperty() const;
std::optional<bool> optionalBooleanTypeProperty() const;
SpecOptionalsA(NSDictionary *const v) : _v(v) {}
private:
@@ -169,9 +169,9 @@ namespace JS {
namespace NativeSampleTurboModule {
struct SpecGetArraysOptions {
facebook::react::LazyVector<double> arrayOfNumbers() const;
folly::Optional<facebook::react::LazyVector<double>> optionalArrayOfNumbers() const;
std::optional<facebook::react::LazyVector<double>> optionalArrayOfNumbers() const;
facebook::react::LazyVector<NSString *> arrayOfStrings() const;
folly::Optional<facebook::react::LazyVector<NSString *>> optionalArrayOfStrings() const;
std::optional<facebook::react::LazyVector<NSString *>> optionalArrayOfStrings() const;
facebook::react::LazyVector<JS::NativeSampleTurboModule::SpecGetArraysOptionsArrayOfObjectsElement> arrayOfObjects() const;
SpecGetArraysOptions(NSDictionary *const v) : _v(v) {}
@@ -250,27 +250,27 @@ inline double JS::NativeSampleTurboModule::SpecOptionalsAOptionalObjectProperty:
id const p = _v[@\\"y\\"];
return RCTBridgingToDouble(p);
}
inline folly::Optional<double> JS::NativeSampleTurboModule::SpecOptionalsA::optionalNumberProperty() const
inline std::optional<double> JS::NativeSampleTurboModule::SpecOptionalsA::optionalNumberProperty() const
{
id const p = _v[@\\"optionalNumberProperty\\"];
return RCTBridgingToOptionalDouble(p);
}
inline folly::Optional<facebook::react::LazyVector<double>> JS::NativeSampleTurboModule::SpecOptionalsA::optionalArrayProperty() const
inline std::optional<facebook::react::LazyVector<double>> JS::NativeSampleTurboModule::SpecOptionalsA::optionalArrayProperty() const
{
id const p = _v[@\\"optionalArrayProperty\\"];
return RCTBridgingToOptionalVec(p, ^double(id itemValue_0) { return RCTBridgingToDouble(itemValue_0); });
}
inline folly::Optional<JS::NativeSampleTurboModule::SpecOptionalsAOptionalObjectProperty> JS::NativeSampleTurboModule::SpecOptionalsA::optionalObjectProperty() const
inline std::optional<JS::NativeSampleTurboModule::SpecOptionalsAOptionalObjectProperty> JS::NativeSampleTurboModule::SpecOptionalsA::optionalObjectProperty() const
{
id const p = _v[@\\"optionalObjectProperty\\"];
return (p == nil ? folly::none : folly::make_optional(JS::NativeSampleTurboModule::SpecOptionalsAOptionalObjectProperty(p)));
return (p == nil ? std::nullopt : std::make_optional(JS::NativeSampleTurboModule::SpecOptionalsAOptionalObjectProperty(p)));
}
inline id<NSObject> _Nullable JS::NativeSampleTurboModule::SpecOptionalsA::optionalGenericObjectProperty() const
{
id const p = _v[@\\"optionalGenericObjectProperty\\"];
return p;
}
inline folly::Optional<bool> JS::NativeSampleTurboModule::SpecOptionalsA::optionalBooleanTypeProperty() const
inline std::optional<bool> JS::NativeSampleTurboModule::SpecOptionalsA::optionalBooleanTypeProperty() const
{
id const p = _v[@\\"optionalBooleanTypeProperty\\"];
return RCTBridgingToOptionalBool(p);
@@ -285,7 +285,7 @@ inline facebook::react::LazyVector<double> JS::NativeSampleTurboModule::SpecGetA
id const p = _v[@\\"arrayOfNumbers\\"];
return RCTBridgingToVec(p, ^double(id itemValue_0) { return RCTBridgingToDouble(itemValue_0); });
}
inline folly::Optional<facebook::react::LazyVector<double>> JS::NativeSampleTurboModule::SpecGetArraysOptions::optionalArrayOfNumbers() const
inline std::optional<facebook::react::LazyVector<double>> JS::NativeSampleTurboModule::SpecGetArraysOptions::optionalArrayOfNumbers() const
{
id const p = _v[@\\"optionalArrayOfNumbers\\"];
return RCTBridgingToOptionalVec(p, ^double(id itemValue_0) { return RCTBridgingToDouble(itemValue_0); });
@@ -295,7 +295,7 @@ inline facebook::react::LazyVector<NSString *> JS::NativeSampleTurboModule::Spec
id const p = _v[@\\"arrayOfStrings\\"];
return RCTBridgingToVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); });
}
inline folly::Optional<facebook::react::LazyVector<NSString *>> JS::NativeSampleTurboModule::SpecGetArraysOptions::optionalArrayOfStrings() const
inline std::optional<facebook::react::LazyVector<NSString *>> JS::NativeSampleTurboModule::SpecGetArraysOptions::optionalArrayOfStrings() const
{
id const p = _v[@\\"optionalArrayOfStrings\\"];
return RCTBridgingToOptionalVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); });
@@ -335,7 +335,7 @@ Map {
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>
@@ -386,7 +386,7 @@ Map {
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>
namespace JS {
@@ -442,9 +442,9 @@ namespace JS {
struct Options {
JS::AliasTurboModule::OptionsOffset offset() const;
JS::AliasTurboModule::OptionsSize size() const;
folly::Optional<JS::AliasTurboModule::OptionsDisplaySize> displaySize() const;
std::optional<JS::AliasTurboModule::OptionsDisplaySize> displaySize() const;
NSString *resizeMode() const;
folly::Optional<bool> allowExternalStorage() const;
std::optional<bool> allowExternalStorage() const;
Options(NSDictionary *const v) : _v(v) {}
private:
@@ -512,17 +512,17 @@ inline JS::AliasTurboModule::OptionsSize JS::AliasTurboModule::Options::size() c
id const p = _v[@\\"size\\"];
return JS::AliasTurboModule::OptionsSize(p);
}
inline folly::Optional<JS::AliasTurboModule::OptionsDisplaySize> JS::AliasTurboModule::Options::displaySize() const
inline std::optional<JS::AliasTurboModule::OptionsDisplaySize> JS::AliasTurboModule::Options::displaySize() const
{
id const p = _v[@\\"displaySize\\"];
return (p == nil ? folly::none : folly::make_optional(JS::AliasTurboModule::OptionsDisplaySize(p)));
return (p == nil ? std::nullopt : std::make_optional(JS::AliasTurboModule::OptionsDisplaySize(p)));
}
inline NSString *JS::AliasTurboModule::Options::resizeMode() const
{
id const p = _v[@\\"resizeMode\\"];
return RCTBridgingToOptionalString(p);
}
inline folly::Optional<bool> JS::AliasTurboModule::Options::allowExternalStorage() const
inline std::optional<bool> JS::AliasTurboModule::Options::allowExternalStorage() const
{
id const p = _v[@\\"allowExternalStorage\\"];
return RCTBridgingToOptionalBool(p);
@@ -557,7 +557,7 @@ Map {
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>
namespace JS {
@@ -568,8 +568,8 @@ namespace JS {
NSString *groupName() const;
NSString *groupTypes() const;
NSString *assetType() const;
folly::Optional<double> maxSize() const;
folly::Optional<facebook::react::LazyVector<NSString *>> mimeTypes() const;
std::optional<double> maxSize() const;
std::optional<facebook::react::LazyVector<NSString *>> mimeTypes() const;
GetPhotosParams(NSDictionary *const v) : _v(v) {}
private:
@@ -609,11 +609,11 @@ namespace facebook {
namespace JS {
namespace NativeExceptionsManager {
struct StackFrame {
folly::Optional<double> column() const;
std::optional<double> column() const;
NSString *file() const;
folly::Optional<double> lineNumber() const;
std::optional<double> lineNumber() const;
NSString *methodName() const;
folly::Optional<bool> collapse() const;
std::optional<bool> collapse() const;
StackFrame(NSDictionary *const v) : _v(v) {}
private:
@@ -732,17 +732,17 @@ inline NSString *JS::NativeCameraRollManager::GetPhotosParams::assetType() const
id const p = _v[@\\"assetType\\"];
return RCTBridgingToOptionalString(p);
}
inline folly::Optional<double> JS::NativeCameraRollManager::GetPhotosParams::maxSize() const
inline std::optional<double> JS::NativeCameraRollManager::GetPhotosParams::maxSize() const
{
id const p = _v[@\\"maxSize\\"];
return RCTBridgingToOptionalDouble(p);
}
inline folly::Optional<facebook::react::LazyVector<NSString *>> JS::NativeCameraRollManager::GetPhotosParams::mimeTypes() const
inline std::optional<facebook::react::LazyVector<NSString *>> JS::NativeCameraRollManager::GetPhotosParams::mimeTypes() const
{
id const p = _v[@\\"mimeTypes\\"];
return RCTBridgingToOptionalVec(p, ^NSString *(id itemValue_0) { return RCTBridgingToString(itemValue_0); });
}
inline folly::Optional<double> JS::NativeExceptionsManager::StackFrame::column() const
inline std::optional<double> JS::NativeExceptionsManager::StackFrame::column() const
{
id const p = _v[@\\"column\\"];
return RCTBridgingToOptionalDouble(p);
@@ -752,7 +752,7 @@ inline NSString *JS::NativeExceptionsManager::StackFrame::file() const
id const p = _v[@\\"file\\"];
return RCTBridgingToString(p);
}
inline folly::Optional<double> JS::NativeExceptionsManager::StackFrame::lineNumber() const
inline std::optional<double> JS::NativeExceptionsManager::StackFrame::lineNumber() const
{
id const p = _v[@\\"lineNumber\\"];
return RCTBridgingToOptionalDouble(p);
@@ -762,7 +762,7 @@ inline NSString *JS::NativeExceptionsManager::StackFrame::methodName() const
id const p = _v[@\\"methodName\\"];
return RCTBridgingToString(p);
}
inline folly::Optional<bool> JS::NativeExceptionsManager::StackFrame::collapse() const
inline std::optional<bool> JS::NativeExceptionsManager::StackFrame::collapse() const
{
id const p = _v[@\\"collapse\\"];
return RCTBridgingToOptionalBool(p);
@@ -847,7 +847,7 @@ Map {
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>
namespace JS {
@@ -953,7 +953,7 @@ Map {
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <folly/Optional.h>
#import <optional>
#import <vector>