[swift-users] expression too complex

davelist at mac.com davelist at mac.com
Thu Jun 16 17:32:24 CDT 2016


Yes, Erica, your version works. I had just split it up into:

   let temp1 = (pt.x - p0.x) * (p1.y - p0.y)
   let temp2 = (pt.y - p0.y) * (p1.x - p0.x)
   return (temp1 - temp2) < 0.0

which also works.

Filed: SR-1794

Is that where I should also file the CGContext endPage() method not working (I filed it at bugreport.apple.com)?

Thanks,
Dave Reed


> On Jun 16, 2016, at 5:20 PM, Erica Sadun <erica at ericasadun.com> wrote:
> 
> func foo () -> Bool {
>     return Double((pt.x - p0.x) * (p1.y - p0.y) - (pt.y - p0.y) * (p1.x - p0.x)) < 0.0
> }
> 
> See if that works and then file a bug report?
> 
> -- E
> 
>> On Jun 16, 2016, at 2:59 PM, Dave Reed via swift-users <swift-users at swift.org> wrote:
>> 
>> 
>> Joe, 
>> 
>> I had an expression that worked fine with Swift2.2 but Swift3 (Xcode 8 version) complains it's too complex:
>> 
>> The variables are of type CGPoint and the function returns a Bool.
>> 
>>    return (pt.x - p0.x) * (p1.y - p0.y) - (pt.y - p0.y) * (p1.x - p0.x) < 0.0
>> 
>> Thanks,
>> Dave
>> 
>> 
>>> On Jun 6, 2016, at 6:15 PM, Joe Groff via swift-users <swift-users at swift.org> wrote:
>>> 
>>> 
>>>> On Jun 6, 2016, at 3:13 PM, Saagar Jha <saagarjha28 at gmail.com> wrote:
>>>> 
>>>> I’ve seen that this tends to happen with operators that are really overloaded-stuff like +, *, etc. The compiler seems to take longer to figure out which function to use.
>>> 
>>> Yeah. The type checker has gotten better about making these situations with lots of overload operators tractable in common cases. Over the remaining course of Swift 3, we're also looking to rearchitect the standard library so that there are fewer generic global operator overloads, moving the polymorphism into protocol methods instead, which should further reduce the burden on the type checker.
>>> 
>>> -Joe
>>> 
>>>> On Mon, Jun 6, 2016 at 3:09 PM Joe Groff via swift-users <swift-users at swift.org> wrote:
>>>> 
>>>>> On Jun 6, 2016, at 3:06 PM, G B via swift-users <swift-users at swift.org> wrote:
>>>>> 
>>>>> Is progress being made on the type checker to get the compiler to stop whinging about the complexity of expressions?
>>>> 
>>>> Yes, a lot of cases work much better in Swift 3. You might give these a try in a nightly build. Please file a bug if you continue to see this in Swift 3 though.
>>>> 
>>>> -Joe
>>>> 
>>>>> 
>>>>> I can’t really trim down the full project to isolate a good test case, but I’m getting a compiler error on this line of code:
>>>>> let v=T.Vector4Type([axis[0]*s, axis[1]*s, axis[2]*s, cos(a/2.0)])
>>>>> 
>>>>> 
>>>>> Interestingly, this line compiled fine (everything is the same except the last list element is moved to the front):
>>>>> let v=T.Vector4Type([cos(a/2.0), axis[0]*s, axis[1]*s, axis[2]*s])
>>>>> 
>>>>> 
>>>>> 
>>>>> The initializer that this code is embedded in is this:
>>>>> public init(axis:T.Vector3Type, angle a:T){
>>>>>  let s=sin(a/2.0)
>>>>>  let v=T.Vector4Type([axis[0]*s, axis[1]*s, axis[2]*s, cos(a/2.0)])
>>>>>  let l=v.length()
>>>>>  self.init(v/l)
>>>>> }
>>>>> 
>>>>> I’m running this in a playground, I don’t know if that makes a difference.
>>>>> 
>>>>> I’m willing to wait a little longer for the complier to do its job if it means I don’t have to break my code down to one operation per line.
>>>>> _______________________________________________
>>>>> swift-users mailing list
>>>>> swift-users at swift.org
>>>>> https://lists.swift.org/mailman/listinfo/swift-users
>>>> 
>>>> _______________________________________________
>>>> swift-users mailing list
>>>> swift-users at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-users
>>>> -- 
>>>> -Saagar Jha
>>> 
>>> _______________________________________________
>>> swift-users mailing list
>>> swift-users at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-users
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 



More information about the swift-users mailing list