<div dir="ltr">On Tue, Feb 21, 2017 at 8:32 PM, Robert Widmann <span dir="ltr">&lt;<a href="mailto:devteam.codafi@gmail.com" target="_blank">devteam.codafi@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>There’s an important distinction between the ability to wall off, and this particular instance of doing so.  By definition, a module allows for the encapsulation and export of a subset of an API, the same way access modifiers allow types to expose an interface.  If the sub-parts of that API must interact, they must by definition share the same concerns and belong together under the same submodule.  If their implementations require separation then further subdivisions can be made with further submodules.  This is the design practice encouraged, and put to good use, by every other language with modules since the heyday of Modula, and breaking that contract by creating unnecessary parent divisions to introduce headaches for yourself is just another case of anti-modular use of a modular system.  There’s nothing we can do to stop you from asking for this, but that also doesn’t excuse the poor design choice here - especially when it can be rectified by reshuffling your own dependency graph.</div></div></blockquote><div><br></div><div>Indeed, I won&#39;t disagree with you wrt _modules_. I notice you titled this thread &quot;submodules&quot; but propose a syntax that uses the word `module`. Left unsaid, I&#39;d imagine, is that you regard a submodule as a module-within-a-module.</div><div><br></div><div>This is *not*, as I understand it, what most people on this list are asking for wrt _submodules_. Instead, they are asking for a unit of code greater than a file but less than a module. To parallel that new facility, they want an access level greater than fileprivate but less than internal. This draft proposal (in its failure to acknowledge this frequent ask) explicitly but _silently_ rejects those motivations.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div class="h5"><div><blockquote type="cite"><div>On Feb 21, 2017, at 9:19 PM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:</div><br class="m_-5707430555427360491Apple-interchange-newline"><div><div dir="ltr">On Tue, Feb 21, 2017 at 8:15 PM, Robert Widmann via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><div class="m_-5707430555427360491h5"><blockquote type="cite"><div>On Feb 21, 2017, at 7:46 AM, Brent Royal-Gordon via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_-5707430555427360491m_-5209089359769303238Apple-interchange-newline"><div><div><blockquote type="cite">On Feb 21, 2017, at 1:28 AM, Daniel Duan via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br><br>It has been my hope that a lightweight module system will remove the need for `private` *and* `fileprivate`.<br></blockquote><br>I really doubt it will. `private`/`fileprivate` works because you can also access `internal` at the same time.<br><br>What I mean by that is, think about code like this:<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>// Foo.swift<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public class Foo {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public init() { … }<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>func doBar() -&gt; Quux {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>return helper(in: randomRange())<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>private func helper(in range: Range&lt;Int&gt;) -&gt; Quux {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>…<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>// Bar.swift<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public class Bar {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public static let shared = Bar()<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>func baz(with foo: Foo) {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>let quux = foo.doBar()<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>process(quux)<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>private func process(_ quux: Quux) {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>…<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><br>These classes have `public` APIs that are externally visible, `internal` APIs for communicating with each other, and `private` APIs for implementation details. Now try to reproduce the same design with submodules and `public`/`internal` only:<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public import MyMod.Foo<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public import MyMod.Bar<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>module Foo {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public class Foo {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public init() { … }<br><br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>??? func doBar() -&gt; Quux {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>return helper(in: randomRange())<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>func helper(in range: Range&lt;Int&gt;) -&gt; Quux {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>…<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>// Bar.swift<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>module Bar {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public class Bar {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public static let shared = Bar()<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>??? func baz(with foo: Foo) {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>let quux = foo.doBar()<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>process(quux)<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>func process(_ quux: Quux) {<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>…<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><br>The `doBar()` and `baz()` methods have to be either exposed to third parties or kept away from yourself. That&#39;s just not viable.<br><br></div></div></blockquote><div><br></div></div></div><div>If they must communicate, they can be a part of the same (sub)module.  This makes filling in these annotations trivial.  Nobody actually uses modules to wall off their own APIs from themselves like this, they use submodules to encapsulate the internal parts and surface public APIs in the parent.</div></div></div></blockquote><div><br></div><div>I think you&#39;ll find a ton of people on this list who would want to use submodules precisely to wall off their own APIs from themselves. Witness the hundreds of messages about new syntax to do just that.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><br></div><div><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>module Bar {<span><br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public class Foo {<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public init() { … }<br><blockquote type="cite"></blockquote><font color="#5856d6"><br></font><blockquote type="cite"></blockquote><font color="#5856d6"><br></font><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span></span>internal func doBar() -&gt; Quux {<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>return helper(in: randomRange())<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><blockquote type="cite"></blockquote><font color="#5856d6"><br></font><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>internal func helper(in range: Range&lt;Int&gt;) -&gt; Quux {<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>…<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><blockquote type="cite"></blockquote><font color="#5856d6"><br></font><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>// Bar.swift<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>extension Bar {<span><br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public class Bar {<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>public static let shared = Bar()<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span></span>internal func baz(with foo: Foo) {<span><br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>let quux = foo.doBar()<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>process(quux)<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span></span>internal func process(_ quux: Quux) {<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>…<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><blockquote type="cite"></blockquote><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}<br><span class="m_-5707430555427360491m_-5209089359769303238Apple-tab-span" style="white-space:pre-wrap">        </span>}</div><span><br><blockquote type="cite"><div><div>-- <br>Brent Royal-Gordon<br>Architechies<br><br>______________________________<wbr>_________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br></div></div></blockquote></span></div><br></div><br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div></div>
</div></blockquote></div><br></div></div></div></blockquote></div><br></div></div>