private bool TryExtractFunction(ISymbol symbol, string moduleName, [NotNullWhen(returnValue: true)] out ReactFunction?function) { if (TryExtractCallback(symbol, moduleName, ReactTypes.ReactFunctionAttribute, out var callbackParameters, out var name, out var declaredModuleName)) { function = new ReactFunction(symbol, callbackParameters, name, declaredModuleName); return(true); } function = null; return(false); }
internal StatementSyntax AddFunction(ReactFunction function) { // generates: // moduleBuilder.AddInitializer((IReactContext reactContext) => // module.MyEvent = (ArgType0 arg0, ArgType1 arg1, ...) => new ReactContext(reactContext).EmitJsFunction("moduleName", "eventName", arg0, arg1, ...); return(InvocationStatement( MemberAccessExpression(ReactNativeNames.ModuleBuilder, ReactNativeNames.AddInitializer), ParenthesizedLambdaExpression( parameterList: ParameterList( Parameter(ReactNativeNames.ReactContextLocalName).WithType(ReactTypes.IReactContext.ToTypeSyntax())), block: null, expressionBody: GenerateCallback(function, ReactNativeNames.CallJSFunctionFunctionName)))); }