<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">This IMHO isn't a bug as the behavior is not completely defined. Joanna mentioned that Args is not generic, but it actually is, once you address it from global namespace - as it inherits the T type (while not used anywhere):</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: Menlo; color: rgb(62, 30, 129); background-color: rgb(255, 255, 255);" class="">NSStringFromClass<span style="color: #000000" class="">(</span><span style="color: #4f8187" class="">Event</span><span style="color: #000000" class="">&lt;</span><span style="color: #703daa" class="">NSString</span><span style="color: #000000" class="">&gt;.</span><span style="color: #4f8187" class="">Args</span><span style="color: #000000" class="">.</span><span style="color: #ba2da2" class="">self</span><span style="color: #000000" class="">)</span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; color: rgb(62, 30, 129); background-color: rgb(255, 255, 255);" class="">NSStringFromClass<span style="color: #000000" class="">(</span><span style="color: #4f8187" class="">Event</span><span style="color: #000000" class="">&lt;</span><span style="color: #703daa" class="">NSDate</span><span style="color: #000000" class="">&gt;.</span><span style="color: #4f8187" class="">Args</span><span style="color: #000000" class="">.</span><span style="color: #ba2da2" class="">self</span><span style="color: #000000" class="">)</span></div></div><div style="margin: 0px; line-height: normal; font-family: Menlo; color: rgb(62, 30, 129); background-color: rgb(255, 255, 255);" class=""><span style="color: #000000" class=""><br class=""></span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; color: rgb(62, 30, 129); background-color: rgb(255, 255, 255);" class=""><span style="color: #000000" class="">--&gt;</span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; color: rgb(62, 30, 129); background-color: rgb(255, 255, 255);" class=""><span style="color: #000000" class=""><br class=""></span></div><div style="margin: 0px; line-height: normal; font-family: Menlo; color: rgb(62, 30, 129); background-color: rgb(255, 255, 255);" class=""><div style="margin: 0px; font-size: 11px; line-height: normal; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><b class="">_TtGCC14__lldb_expr_375Event4ArgsCSo8NSString__</b></span></div><div style="margin: 0px; font-size: 11px; line-height: normal; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><b class="">_TtGCC14__lldb_expr_375Event4ArgsCSo6NSDate__</b></span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><b class=""><br class=""></b></span></div></div><div class="">Which is the root of the problem - you are currently not actually using the same class under different event types. It then makes a static property an issue as you are not able to distinguish these two scenarios with current language:</div><div class=""><br class=""></div><div class="">- is the stored property the same for all variations of the Args class?</div><div class="">- or does each type has its own stored property?</div><div class=""><br class=""></div><div class="">I can think of cases for both. And this is (from what I understood is the core of the problem).</div><div class=""><br class=""></div><div class="">@Joanna - in this particular case, I don't see the benefit of Args.empty over Args() as you currently create a new instance all the time. If the arguments are not intended to be generic, much better solution is to do something like:</div><div class=""><br class=""></div><div class="">class EventArgs {</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>public static let empty = Args()</div><div class="">}</div><div class=""><br class=""></div><div class="">class Event&lt;T&gt; {</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>typealias Args = EventArgs</div><div class="">}</div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 17, 2017, at 11:59 PM, Félix Cloutier via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">I always thought that this was a bug, but I can't find it on <a href="http://bugs.swift.org" class="">bugs.swift.org</a>, so I'd love to know if it's meant to stay this way or not.<br class=""><br class=""><blockquote type="cite" class="">Le 16 sept. 2017 à 06:32, Joanna Carter via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; a écrit :<br class=""><br class="">Greetings<br class=""><br class="">Old chestnut, sort of partially solved but still problems.<br class=""><br class="">Now we can nest types in generic types, what I want is :<br class=""><br class="">class Event&lt;typeT&gt;<br class="">{<br class=""> class Args<br class=""> {<br class=""> &nbsp;&nbsp;public static let empty = Args() // error : Static stored properties not supported in generic types<br class=""> }<br class="">}<br class=""><br class="">But the static let is not directly in the generic class.<br class=""><br class="">So, I end up doing another convoluted workaround in the shape of :<br class=""><br class="">class Event&lt;typeT&gt;<br class="">{<br class=""> class Args<br class=""> {<br class=""> &nbsp;&nbsp;public static var empty: Args<br class=""> &nbsp;&nbsp;{<br class=""> &nbsp;&nbsp;&nbsp;&nbsp;return Args()<br class=""> &nbsp;&nbsp;}<br class=""> }<br class="">}<br class=""><br class="">The main difference is that I have to create a new instance on every call to Args.empty instead of returning the same one.<br class=""><br class="">Is this an oversight or as intended, with the hope of fixing it in a future version<br class=""><br class="">Joanna<br class=""><br class="">--<br class="">Joanna Carter<br class="">Carter Consulting<br class=""><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></blockquote><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></div></blockquote></div><br class=""></body></html>