In (Apple) Swift, the distinction between a C function pointer and a stateful (objc) block pointer is made by:
@convention(c) (String) -> Int // vs. @convention(block) (String) -> Int
@BlockPointer public SomeBlock = (Int) -> (String); // E5 Attributes are not allowed here // vs. // E477 Declaration expected @FunctionPointer public SomeFunc = (Int) -> (String);
Which, based on the errors should be:
@FunctionPointer public typealias SomeFunction = (String) -> Int // vs. @BlockPointer public typealias SomeBlock = (String) -> Int
However, as Oxygene uses native type modifiers
block to distinguish these cases, and the Aspects are not possible to specify inline, Elements should use Swift’s native way to distinguish these cases.