# SE-0366: Move Function + "Use After Move" Diagnostic

**URL:** <https://forums.swift.org/t/se-0366-move-function-use-after-move-diagnostic/59202>\
**Category:** Proposal Reviews\
**Tags:** ownership, performance, arc\
**Created:** [July 25, 2022, 4:03pm UTC](https://forums.swift.org/t/se-0366-move-function-use-after-move-diagnostic/59202 "2022-07-25T16:03:14Z")\
**Posts on this page:** 1\
**Showing post:** 97

<div class="post-metadata">

**Author:** ![masters3d](https://avatars.discourse-cdn.com/v4/letter/m/c4cdca/32.png) [@masters3d](https://forums.swift.org/u/masters3d)\
**Post date:** [July 30, 2022, 3:48pm UTC](https://forums.swift.org/t/se-0366-move-function-use-after-move-diagnostic/59202/97 "2022-07-30T15:48:32Z")

</div>

If this feature is to be an advance feature I think having a contextual short keyword should not be a goal. what if instead of a keyword we had a block?

I haven’t seen it discussed in this thread but I thought that having a block where the semantics change from implicit copy to always move would be nice

> [@\[Pitch\] Move Function + "Use After Move" Diagnostic](https://forums.swift.org/t/pitch-move-function-use-after-move-diagnostic/53983/202):
>
> An excellent question. My impression could be mistaken, but to me this pitch comes off a bit like a piecemeal attempt to “do something about ownership” without filling in the complete picture. Swift didn't include non-copyable types in its original design for understandable reasons, but now that design gap is beginning to cost the language a lot (in particular, it is an obstacle to complete C++ interop), and because it is a fundamental piece of the object model. IMO it needs to be addressed h…

```swift
movedefault {

var a = b // b moved to a

var c = b // // b moved to c

// after this block variables are dropped unless they were passed to other functions. 
}

```

---

_[View the full topic](https://forums.swift.org/t/se-0366-move-function-use-after-move-diagnostic/59202)._
