Re: [swift-users] Protocol composition results in EXC_BAD_ACCESS

2017-04-03 Thread Rudolf Adamkovič via swift-users
Because it’s a value and has no identity.

R+

> On 3 Apr 2017, at 17:58, Zhao Xin  wrote:
> 
> Why not making State as a class? EffectiveState should be subclass of State.
> 
> Zhaoxin
> 
> On Mon, Apr 3, 2017 at 11:08 PM, Rudolf Adamkovič via swift-users 
> > wrote:
>> On 3 Apr 2017, at 16:48, Adrian Zubarev > > wrote:
>> 
>> Why do you cast against an existential in first place?
> 
> To avoid force-unwrap at the end here:
> 
> class Store {
> 
> var state: State
> 
> // ...
> 
> func processScheduledActions() {
> 
> guard var effectfulState = state as? Effectful else {
> return
> }
> 
> while let actions = effectfulState.scheduledActions.flush() {
> for action in actions {
> delegate?.store(self, didRequest: action)
> }
> }
> 
> state = effectfulState as! State
> 
> }
> 
> }
> 
> Thank you!
> 
> R+
> 
> 
> ___
> swift-users mailing list
> swift-users@swift.org 
> https://lists.swift.org/mailman/listinfo/swift-users 
> 
> 
> 

___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


Re: [swift-users] Protocol composition results in EXC_BAD_ACCESS

2017-04-03 Thread Rudolf Adamkovič via swift-users
Thanks!

Done:

https://bugs.swift.org/browse/SR-4477 

R+

> On 3 Apr 2017, at 17:53, Joe Groff  wrote:
> 
> 
>> On Apr 3, 2017, at 7:53 AM, Adrian Zubarev > > wrote:
>> 
>> However I kinda think this is a bug. 
>> 
>> CC Joe Groff.
> 
> Yeah, that's a bug. If you haven't yet, could you file it at bugs.swift.org 
> ?
> 
> -Joe

___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


Re: [swift-users] Protocol composition results in EXC_BAD_ACCESS

2017-04-03 Thread Zhao Xin via swift-users
Why not making State as a class? EffectiveState should be subclass of State.

Zhaoxin

On Mon, Apr 3, 2017 at 11:08 PM, Rudolf Adamkovič via swift-users <
swift-users@swift.org> wrote:

> On 3 Apr 2017, at 16:48, Adrian Zubarev 
> wrote:
>
> Why do you cast against an existential in first place?
>
>
> To avoid force-unwrap at the end here:
>
> class Store {
>
> var state: State
>
> // ...
>
> func processScheduledActions() {
>
> guard var effectfulState = state as? Effectful else {
> return
> }
>
> while let actions = effectfulState.scheduledActions.flush() {
> for action in actions {
> delegate?.store(self, didRequest: action)
> }
> }
>
> state = effectfulState as! State
>
>
> }
>
> }
>
> Thank you!
>
> R+
>
>
> ___
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


Re: [swift-users] Protocol composition results in EXC_BAD_ACCESS

2017-04-03 Thread Rudolf Adamkovič via swift-users
> On 3 Apr 2017, at 16:48, Adrian Zubarev  
> wrote:
> 
> Why do you cast against an existential in first place?

To avoid force-unwrap at the end here:

class Store {

var state: State

// ...

func processScheduledActions() {

guard var effectfulState = state as? Effectful else {
return
}

while let actions = effectfulState.scheduledActions.flush() {
for action in actions {
delegate?.store(self, didRequest: action)
}
}

state = effectfulState as! State

}

}

Thank you!

R+

___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


[swift-users] Protocol composition results in EXC_BAD_ACCESS

2017-04-03 Thread Rudolf Adamkovič via swift-users
I'm getting an `EXC_BAD_ACCESS` here:

protocol Something {}

protocol IntContainer {
var ints: [Int] { get set }
}

func processSomething(_ state: Something) {
if let intContainer = state as? Something & IntContainer {
print(intContainer.ints)
}
}

struct MySomething: Something, IntContainer {
var ints: [Int] = []
}

let mySomething = MySomething()
processSomething(mySomething) // EXC_BAD_ACCESS here

The execution stops here:

libswiftCore.dylib`_swift_release_dealloc:
0x11be163e0 <+0>: movq   (%rdi), %rax
->  0x11be163e3 <+3>: jmpq   *-0x10(%rax)
0x11be163e6 <+6>: nopw   %cs:(%rax,%rax)

Any ideas why this is?

P.S. Related StackOverflow question with no good answer:
http://stackoverflow.com/questions/35199077/exc-bad-access-using-protocol-composition

R+___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users