IDE: Water
Version: Elements Version 11.0.0.2657 (develop) built on talax, 20210806-145551. Commit 7bbcc2d.
Target (If relevant): .NET
Description: When using obscure unicode characters which are allowed for custom operators in the swift language, such as ⨳
and ⨲
, they are compiled to the same name and cause a conflict
Example code:
infix operator ⨳
infix operator ⨲
func ⨳(a: Int, b: Int) -> Int {
4
}
func ⨲(a: Int, b: Int) -> Int {
4
}
Expected Behavior: These methods have different names in swift, so i’d expect them to compile to different IL method names that can be unambiguously referenced.
Actual Behavior: The compiler gives me an error for “Duplicate method” because both will compile to just op_
.
Special cases that already exist in .NET like ==
→ op_Equality
are handled properly, and using less obscure characters also works (i.e. =-+!*%<>&|^~
→ op_EqMinPlusLNotMulModLtGtAndOrXorNot
).
Also, isn’t custom operator information like precedence groups lost in compilation (and inaccessible if you reference an assembly)?