NativeScript / ios

NativeScript for iOS and visionOS using V8
https://docs.nativescript.org/guide/ios-marshalling
131 stars 33 forks source link

Metadata-generator creates enums with incorrect values #258

Open CatchABus opened 4 months ago

CatchABus commented 4 months ago

There is the case of metadata-generator creating enums with wrong values if the original value is unsigned. This became apparent with UIRectCornerAllCorners case where value is an unsigned long in obj-c.

UIRectCornerAllCorners = ~0UL

See: https://developer.apple.com/documentation/uikit/uirectcorner/uirectcornerallcorners?language=objc

Unfortunately, generator converts the value into a signed value resulting in -1 and when it's used as a function parameter, it brings unexpected results.

In JavaScript, the proper value would probably be 0xffffffff or 4294967295 to match the unsigned value.

I found this part of generator that looks suspicious: https://github.com/NativeScript/ios/blob/main/metadata-generator/src/Meta/MetaFactory.cpp#L321