<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br><br>Sent from my iPad</div><div><br>On Feb 19, 2017, at 10:39 AM, Adrian Zubarev <<a href="mailto:adrian.zubarev@devandartist.com">adrian.zubarev@devandartist.com</a>> wrote:<br><br></div><blockquote type="cite"><style>
body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        padding:1em;
        margin:auto;
        background:#fefefe;
}
h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
}
h1 {
        color: #000000;
        font-size: 28pt;
}
h2 {
        border-bottom: 1px solid #CCCCCC;
        color: #000000;
        font-size: 24px;
}
h3 {
        font-size: 18px;
}
h4 {
        font-size: 16px;
}
h5 {
        font-size: 14px;
}
h6 {
        color: #777777;
        background-color: inherit;
        font-size: 14px;
}
hr {
        height: 0.2em;
        border: 0;
        color: #CCCCCC;
        background-color: #CCCCCC;
display: inherit;
}
p, blockquote, ul, ol, dl, li, table, pre {
        margin: 15px 0;
}
a, a:visited {
        color: #4183C4;
        background-color: inherit;
        text-decoration: none;
}
#message {
        border-radius: 6px;
        border: 1px solid #ccc;
        display:block;
        width:100%;
        height:60px;
        margin:6px 0px;
}
button, #ws {
        font-size: 12 pt;
        padding: 4px 6px;
        border-radius: 5px;
        border: 1px solid #bbb;
        background-color: #eee;
}
code, pre, #ws, #message {
        font-family: Monaco;
        font-size: 10pt;
        border-radius: 3px;
        background-color: #F8F8F8;
        color: inherit;
}
code {
        border: 1px solid #EAEAEA;
        margin: 0 2px;
        padding: 0 5px;
}
pre {
        border: 1px solid #CCCCCC;
        overflow: auto;
        padding: 4px 8px;
}
pre > code {
        border: 0;
        margin: 0;
        padding: 0;
}
#ws { background-color: #f8f8f8; }
.bloop_markdown table {
border-collapse: collapse;
font-family: Helvetica, arial, freesans, clean, sans-serif;
color: rgb(51, 51, 51);
font-size: 15px; line-height: 25px;
padding: 0; }
.bloop_markdown table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
.bloop_markdown table tr:nth-child(2n) {
background-color: #f8f8f8; }
.bloop_markdown table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
.bloop_markdown table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }
.bloop_markdown table tr th :first-child, table tr td :first-child {
margin-top: 0; }
.bloop_markdown table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }
.bloop_markdown blockquote{
border-left: 4px solid #dddddd;
padding: 0 15px;
color: #777777; }
blockquote > :first-child {
margin-top: 0; }
blockquote > :last-child {
margin-bottom: 0; }
code, pre, #ws, #message {
word-break: normal;
word-wrap: normal;
}
hr {
display: inherit;
}
.bloop_markdown :first-child {
-webkit-margin-before: 0;
}
code, pre, #ws, #message {
font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
}
.send { color:#77bb77; }
.server { color:#7799bb; }
.error { color:#AA0000; }</style><div class="bloop_markdown"><p>Still not what I was asking about.</p>
<ul>
<li>Module <strong>A</strong> contains a single open protocol: <code>open protocol P { func foo() }</code></li>
<li>Module <strong>B</strong> contains a single open class that conforms to <code>P</code>:</li>
</ul>
<pre><code class="swift">open class B : P {
/* what is the default access modifier here? */ func foo()
}
</code></pre>
<p></p></div><div class="bloop_original_html"><style>body{font-family:Helvetica,Arial;font-size:13px}</style><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div></div></blockquote><div><br></div><div>I believe it would be the same with or without the protocol conformance. In any case, this has nothing to do with this proposal. It does not affect open classes or open protocols.</div><br><blockquote type="cite"><div class="bloop_original_html"> <br> <div id="bloop_sign_1487522232166834944" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">-- <br>Adrian Zubarev<br>Sent with Airmail</div></div> <br><p class="airmail_on">Am 19. Februar 2017 um 17:35:04, Matthew Johnson (<a href="mailto:matthew@anandabits.com">matthew@anandabits.com</a>) schrieb:</p> <blockquote type="cite" class="clean_bq"><span><div dir="auto"><div></div><div>
<title></title>
<div><br>
<br>
Sent from my iPhone</div>
<div><br>
On Feb 19, 2017, at 10:28 AM, Adrian Zubarev <<a href="mailto:adrian.zubarev@devandartist.com">adrian.zubarev@devandartist.com</a>>
wrote:<br>
<br></div>
<blockquote type="cite">
<div>
<div class="bloop_markdown">
<p>I really feel I’m blind, I cannot find it. Is the access
modifier of open protocol *members* on open/public classes
<code>public</code> by default, or <code>open</code>?</p>
<ul>
<li>If <code>open</code>, can we downgrade it to
<code>public</code> in an open class?</li>
</ul>
</div>
</div>
</blockquote>
<div><br></div>
I didn't specifically address members of open classes but did
address open classes. This proposal does not have any impact
of the visibility of members of open classes that conform to a
public (nonopen) protocol, including the default.<br>
<blockquote type="cite">
<div>
<div class="bloop_markdown"></div>
<div class="bloop_original_html">
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
<br></div>
<br>
<div id="bloop_sign_1487521505769360896" class="bloop_sign">
<div style="font-family:helvetica,arial;font-size:13px">
-- <br>
Adrian Zubarev<br>
Sent with Airmail</div>
</div>
<br>
<p class="airmail_on">Am 19. Februar 2017 um 17:16:59, Matthew
Johnson (<a href="mailto:matthew@anandabits.com">matthew@anandabits.com</a>)
schrieb:</p>
<blockquote type="cite" class="clean_bq">
<div dir="auto">
<div>
<div><span><br>
<br>
Sent from my iPhone</span></div>
<div><span><br>
On Feb 19, 2017, at 10:11 AM, Adrian Zubarev <<a href="mailto:adrian.zubarev@devandartist.com">adrian.zubarev@devandartist.com</a>>
wrote:<br>
<br></span></div>
<blockquote type="cite">
<div>
<p><span>@Matthew: Have you considered what happens with the access
modifier of an open protocol when an open/public class conforms to
it?</span></p>
</div>
</blockquote>
<div><span><br></span></div>
<span>Yes I covered this in the detailed design section of the
proposal.<br></span>
<blockquote type="cite">
<div>
<pre><span><code class="swift">// Module A
open protocol A {
func foo()
}
// Module B
open class B : A {
(open or public) func foo() {}
// If `open`, can we downgrade to `public`?
// The other way around seems straightforward
}
</code></span></pre></div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<div class="bloop_markdown"></div>
</div>
</blockquote>
</div></div></span></blockquote></div><div class="bloop_markdown"><p></p></div></blockquote></body></html>