Objective-C block to delegate mapping issue

The block argument:

void (^)(void)   // A block that takes no arguments

and

void (^)()    // A block that takes any number of arguments

are both mapped to delegate:

delegate void()

I ran into this issue when trying to port this code:

RAC(self, createEnabled) = [RACSignal 
combineLatest:@[ RACObserve(self, password), RACObserve(self, passwordConfirmation) ] 
reduce:^(NSString *password, NSString *passwordConfirm) {
        return @([passwordConfirm isEqualToString:password]);}];

Which was mapped by FXGen to:

public static ReactiveCocoa.RACSignal combineLatest(this ReactiveCocoa.RACSignal @this, Foundation.INSFastEnumeration signals) reduce(delegate rtl.id() reduceBlock);

Is it a known issue or it just me missing something very basic here?

It will be great that there’ll be an article in wiki to give a summary of any other “lost in translation” kind of language mapping issues.

the issue is that this is the first time I’ve seen it used like this, to pass an any block to something. At the moment the compiler (and importer) treats both as having 0 parameters. I’m going to log a research issue on how to best solve this for both the compiler & importer.

Thanks, logged as bugs://66866: map void(^)() as any delegate