<div dir="ltr"><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail_default" style="font-family:verdana,sans-serif;color:rgb(7,55,99)">
<font size="4"><font face="monospace">For locals, it's pretty clear we don't have to answer, because
        locals cannot be accessed unless they are DA at the point of
        access.  But for fields, we have a problem -- and for arrays, a
        bigger one.  We can try to require that fields have
        initializers, but there are all sorts of situations in which a
        field can be read before its initializer runs.  And arrays are
        much worse.</font></font>

</span></blockquote><div><br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">I'm sorry, Brian, are you saying that *the compiler* can't enforce definite-assignment on non-final fields and arrays
when declared with a non-nullable no-zero type like String! or Rational!? <br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">The user-model I layed 
out 

(my last no-subject email) depends on getting compiler errors like these:<br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default"><br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">class C {</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  String null_str;</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  String! hello_str = "hello";</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">
 // error: field not initialized, String has no zero value:

</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  String! zero_str;<br><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default"></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Integer null_int;</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">// OK: Integer is has a zero value:

</div>

</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Integer! _0_int;</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Optional<String> null_opt;</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">
// OK: Optional has a zero value

</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Optional!<String> empty_opt;
<div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default"></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">// OK: Optional.of returns an Optional!<T><br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">
<div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default"></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Optional!<String> helloStr_opt = Optional.of("hello");</div>

</div>

</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Rational null_ratio;</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  
Rational! _2Thirds_ratio = new Rational(2, 3);

</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">
// error: field not initialized, Rational has no zero value:

</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Rational! zero_ratio;</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Double[] _3_nulls = new Double[3];</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  Double![] _3_zeros = new Double![3];<br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  String[] _2_nulls = new String[2];<br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  
String![] _2_strings = {"a", "b"};</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">
// error: array components not initialized, String has no zero value: <br></div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  String![] _2_zeroStrings = 
new String![2];</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  String![] nonNullable_strings = nonNullableStrings_array();</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">// error: cannot convert from String[] to String![]</div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default">  String![] nullable_strings = nullableStrings_array();

</div><div>}</div><div><div style="font-family:verdana,sans-serif;color:rgb(7,55,99)" class="gmail_default"><br></div></div></div>