<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 15 Feb 2023, at 18:18, Remi Forax <<a href="mailto:forax@univ-mlv.fr" class="">forax@univ-mlv.fr</a>> wrote:</div>
<div class="">
<div class="">
<div style="font-family: arial, helvetica, sans-serif; font-size: 12pt;" class="">
<div class=""><br class="">
</div>
<div data-marker="__QUOTED_TEXT__" class="">
<div class="">What is the behaviors of the compiler for<br data-mce-bogus="1" class="">
</div>
<div class=""><br data-mce-bogus="1" class="">
</div>
<div class="">
<div class=""> var hello() { }</div>
<div class=""> var hello() { return; }</div>
<div class=""> var hello() { return null; }</div>
<div class=""> var foo;<br data-mce-bogus="1" class="">
</div>
var foo = null;</div>
<div class=""><br data-mce-bogus="1" class="">
</div>
<div class="">
<div class=""> record hello() { }</div>
<div class=""> record hello() { return; }</div>
<div class=""> record hello() { return null; }</div>
<div class=""> record foo;<br data-mce-bogus="1" class="">
</div>
<div class=""> record foo = null;</div>
<div class=""><br data-mce-bogus="1" class="">
</div>
<div class=""> record main() { }<br data-mce-bogus="1" class="">
</div>
<div class=""> record main() { return; }<br data-mce-bogus="1" class="">
</div>
<div class=""> static record main() { }<br data-mce-bogus="1" class="">
</div>
<div class=""> static record main() { return; }<br data-mce-bogus="1" class="">
</div>
<div class=""> record main;<br data-mce-bogus="1" class="">
</div>
<div class=""> record main = null;<br data-mce-bogus="1" class="">
</div>
</div>
<div class=""><br data-mce-bogus="1" class="">
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
<div class=""><br class="">
</div>
<div class="">All of these except for `record hello() {}`, `record main() {}`, and `static record main() {}` are compile-time errors.</div>
<div class=""><br class="">
</div>
<div class="">An implicit class is compiled as if the entire content of the file (except import statements) are enclosed in a final class declaration with some unknown name. Because there is no name, you can’t declare a constructor (or use a method reference
to a static method). The meaning of all members is interpreted in the usual way.</div>
<div class=""><br class="">
</div>
<div class="">The only special rules are that an implicit class must be in the unnamed package and it must contain a main entry point (if it didn’t have an entry point there would be no way of using the class — you can’t invoke a static method on it from some
other class or instantiate it because it’s unnamed).</div>
<div class=""><br class="">
</div>
<div class="">— Ron</div>
</body>
</html>