Correct fix for #1041 and #1038#1083
Conversation
…xes linux error
| } | ||
|
|
||
| #if os(Linux) | ||
| #else |
There was a problem hiding this comment.
This gives an impression that Linux platform is not finished.
I would prefer more explicit unary not comparison here.
#if !os(Linux)
#endif
|
Hey @seriyvolk83 I've just noticed your PR, any reason for rolling back the fix? |
I don’t remember, but seems the first commit has change that is excessive because on Linux the method are already implemented, no need to add ‘.<‘ like methods. The only change is needed is to have ‘#if’ condition to skip definitions that are presented on Linux. It should compile on both platforms. |
|
Btw, #1088 is wrong fix, these mew methods will never be used. Linux has these methods implemented and it’s the reason the code is not complied. |
|
What is the status of this? |
|
any update on this? |
|
Hey y'all couldn't we just replace the failing operator overrides with standard functions? Example:Change this func < (lhs: NSNumber, rhs: NSNumber) -> Bool {
switch (lhs.isBool, rhs.isBool) {
case (false, true): return false
case (true, false): return false
default: return lhs.compare(rhs) == .orderedAscending
}
}To this func lt(lhs: NSNumber, rhs: NSNumber) -> Bool {
switch (lhs.isBool, rhs.isBool) {
case (false, true): return false
case (true, false): return false
default: return lhs.compare(rhs) == .orderedAscending
}
}And then any time we compare two We would just need to do that for any of those places where the compiler fails in linux land. |
|
I bring this up cuz I'm currently working on a cross platform client library for Swift and this is how I got around this issue. Willing to make a PR if this approach looks good to y'all |
The PR should summarize what was changed and why. Here are some questions to
help you if you're not sure:
none. It just removes the duplicated code from Linux version (NSNumber comparators)
Linux support
ambiguous use of operator '<' #1041 and Compilation breaks in Swift 5.1 Ubuntu 16.04 #1038