Ok, cool. Thanks for the response. I'll file it in the Swift bug tracker.

> On Aug 7, 2017, at 3:23 PM, Jordan Rose <[email protected]> wrote:
> 
> Either way is fine. I suspect this is a bug with the transformation the Swift 
> compiler performs when compiling for a playground, rather than with the 
> machinery that goes with running the playground, but I haven’t looked into it.
> 
> Jordan
> 
> 
>> On Aug 7, 2017, at 13:22, Joe DeCapo <[email protected]> wrote:
>> 
>> Since it's Playground bug, should I file it in Apple's bug reporter rather 
>> than Swift's?
>> 
>>> On Aug 7, 2017, at 3:12 PM, Jordan Rose <[email protected]> wrote:
>>> 
>>> I’d say that’s a bug! Mind filing it at https://bugs.swift.org ?
>>> 
>>> Thanks,
>>> Jordan
>>> 
>>>> On Aug 4, 2017, at 12:41, Joe DeCapo via swift-users 
>>>> <[email protected]> wrote:
>>>> 
>>>> Hi everyone,
>>>> 
>>>> I'm not sure if there's a more appropriate place to ask this question, but 
>>>> I figured at the very least I could get pointed in the right direction. 
>>>> I've tried searching online and haven't been able to find anything 
>>>> addressing this.
>>>> 
>>>> I was trying to use the `defer` statement in a Playground, and was 
>>>> surprised to find that it never prints anything in the preview pane on the 
>>>> side. I was expecting the evaluation of the code in the `defer` statement 
>>>> to show up in line with the statements, even though they're executed after 
>>>> the last line in the function. I made a very simple playground that 
>>>> modifies a global variable and prints the value in the `defer` statement, 
>>>> and when I print the global variable after calling my function it shows 
>>>> the correct updated value, so the code in the `defer` statement is getting 
>>>> run as expected. Here's my sample code with the Playground output in 
>>>> comments on the side:
>>>> 
>>>> var x = 3                  // 3
>>>> func doSomething() {
>>>> print(1)                   // "1\n"
>>>> defer {
>>>>     x += 1
>>>>     print(x)
>>>> }
>>>> print(2)                   // "2\n"
>>>> }
>>>> doSomething()
>>>> print(x)                   // "4\n"
>>>> 
>>>> I was expecting something like this:
>>>> 
>>>> var x = 3                  // 3
>>>> func doSomething() {
>>>> print(1)                   // "1\n"
>>>> defer {
>>>>     x += 1                 // 4
>>>>     print(x)                       // "4\n"
>>>> }
>>>> print(2)                   // "2\n"
>>>> }
>>>> doSomething()
>>>> print(x)                   // "4\n"
>>>> 
>>>> Is there some deep reason why code in `defer` statements doesn't show 
>>>> anything in the preview pane in Playgrounds?
>>>> 
>>>> -Joe
>>>> 
>>>> <Defer.playground>
>>>> 
>>>> _______________________________________________
>>>> swift-users mailing list
>>>> [email protected]
>>>> https://lists.swift.org/mailman/listinfo/swift-users
>>> 
>> 
> 

_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to