| <!DOCTYPE html |
| PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "../xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| <link rel="stylesheet" type="text/css" href="../css/ot.css" /> |
| <link rel="stylesheet" type="text/css" href="../css/otjld.css" /> |
| <title>OT/J Language Definition v1.3.1</title> |
| </head> |
| <body class="otdt"> |
| <div id="content"> |
| <table class="nav"> |
| <tr> |
| <td class="back"><a id="top"></a><a href="s9.html" rel="prev"><< §9 Value Dependent Classes</a></td> |
| <td class="top"><a href="index.html" rel="contents">↑ Table of Contents ↑</a></td> |
| <td class="next"><a href="sB.html" rel="next">§B Changes between versions >></a></td> |
| </tr> |
| </table> |
| <div class="chapter" id="sA"> |
| <div class="headl"> |
| <div class="headr"> |
| <h1>§A OT/J Syntax</h1> |
| </div> |
| </div> |
| <div id="toc-box"> |
| <ul class="toc-box"> |
| <li><a href="sA.html">§A OT/J Syntax</a></li> |
| <li><a href="#sA.0">§A.0 Keywords</a></li> |
| <li><a href="#sA.1">§A.1 Class definitions</a></li> |
| <li><a href="#sA.2">§A.2 Modifiers</a></li> |
| <li><a href="#sA.3">§A.3 Method bindings</a></li> |
| <li><a href="#sA.4">§A.4 Parameter mappings</a></li> |
| <li><a href="#sA.5">§A.5 Statements</a></li> |
| <li><a href="#sA.6">§A.6 Types</a></li> |
| <li><a href="#sA.7">§A.7 Guard predicates</a></li> |
| <li><a href="#sA.8">§A.8 Precedence declaration</a></li> |
| <li><a href="#sA.9">§A.9 Value dependent types</a></li> |
| <li><a href="#sA.10">§A.10 Packages and imports</a></li> |
| </ul> |
| </div> |
| <div class="intro"> |
| <h3>Notation</h3> |
| <p>The following grammar rules extend the Java grammar given in the |
| <a href="http://java.sun.com/docs/books/jls/second_edition/html/syntax.doc.html" |
| class="ext">Java Language Specification</a>. |
| We adopt the conventions of printing non-terminal symbols in italic font |
| (e.g., <tt><em>ClassDeclaration</em></tt>), |
| and terminal symbols in roman font (e.g., <tt>class</tt>). |
| Names printed in black refer to definitions from the original Java grammar. |
| Object Teams additions are printed in <strong class="blue">blue boldface</strong>. |
| For those rules that simply add a new option to an existing rule, |
| the original options are indicated by an ellipse (<code>...</code>). |
| |
| </p> |
| </div> |
| <div class="sect depth2" id="sA.0"> |
| <h2 class="sect">§A.0 Keywords<a class="img" href="sA.html#sA.0" |
| title="PermaLink to §A.0 Keywords"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <p>The keywords introduced by OT/J have different scopes, which means outside their |
| given scope these keywords can be used for regular identifiers. Only these names |
| are keywords unconditionally: |
| |
| </p> |
| <div class="listing plain"><pre>readonly, team, within</pre></div> |
| <div class="sect depth3" id="sA.0.1"> |
| <h3 class="sect">§A.0.1 Scoped keywords<a class="img" href="sA.html#sA.0.1" |
| title="PermaLink to §A.0.1 Scoped keywords"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#sA.0">↑ §A.0</a></span></h3> |
| <p>The following names are keywords in OT/J only if they appear within a team or role class, |
| ie., after the keyword <strong class="blue">team</strong> has been recognized: |
| |
| </p> |
| <div class="listing plain"><pre>as, base, callin, playedBy, precedence, tsuper, with, when</pre></div> |
| <p>These names are keywords only in the context of a callin or callout binding |
| respectively (<a href="#sA.3" title="§A.3 Method bindings" class="sect">§A.3</a>): |
| |
| </p> |
| <div class="listing plain"><pre>after, before, replace, get, set</pre></div> |
| </div> |
| <div class="sect depth3" id="sA.0.2"> |
| <h3 class="sect">§A.0.2 Inheriting scoped keywords<a class="img" href="sA.html#sA.0.2" |
| title="PermaLink to §A.0.2 Inheriting scoped keywords"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#sA.0">↑ §A.0</a></span></h3> |
| <p>While regular Java classes may use the scoped keywords |
| (<a href="#sA.0.1" title="§A.0.1 Scoped keywords" class="sect">§A.0.1</a>) of OT/J freely, it is an error if a role class |
| inherits a feature whose name is a scoped keyword. |
| |
| </p> |
| </div> |
| <div class="sect depth3" id="sA.0.3"> |
| <h3 class="sect">§A.0.3 Internal names<a class="img" href="sA.html#sA.0.3" |
| title="PermaLink to §A.0.3 Internal names"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#sA.0">↑ §A.0</a></span></h3> |
| <p>Compiler and runtime environment generate internal methods and fields which start with |
| the prefix <code>_OT$</code>. It is illegal to use any of these methods and fields within client code. |
| |
| </p> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.1"> |
| <h2 class="sect">§A.1 Class definitions<a class="img" href="sA.html#sA.1" |
| title="PermaLink to §A.1 Class definitions"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <p>Class definitions add two new keywords <code>team</code> and |
| <code>playedBy</code>. Classes which use these keywords are called |
| <strong>teams</strong> and <strong>bound roles</strong>, respectively. |
| Any class that inherits from a bound role class (either by an |
| <code>extends</code> clause or by implicit inheritance, cf. |
| <a href="s1.html#s1.3.1.c" |
| title="§1.3.1.(c) Overriding and implicit inheritance" |
| class="sect">§1.3.1.(c)</a>) is again a bound role class. |
| |
| </p> |
| <table class="syntaxrule" id="sA.1.1"> |
| <tr> |
| <td class="sect">§ A.1.1</td> |
| <td class="rule"><span class="title">ClassDeclaration</span><br /><em>[Modifiers] </em><strong class="blue"><em>[</em>team<em>]</em></strong> class <em>Identifier [</em>extends <em>Type] [</em>implements <em>TypeList]</em><br /><span class="indent5"></span><strong class="blue"><em>[</em>playedBy <em>Type] [Guard]</em></strong><em> ClassBody</em></td> |
| </tr> |
| </table> |
| <div class="constraints"> |
| <h5 class="constraints">Contextual constraints:</h5> |
| <ol class="constraints"> |
| <li>A class which has a <code>playedBy</code> clause (a <strong>bound |
| role</strong> class) may not be declared static and |
| must be directly contained in a class that has the |
| <code>team</code> modifier (a <strong>team</strong> class). |
| </li> |
| <li>A class which inherits from a team class must have the |
| <code>team</code> modifier, too. |
| </li> |
| <li>A class which has a guard (see <a href="s5.html#s5.4" title="§5.4 Guard predicates" class="sect">§5.4</a>) |
| must be a team or a role. |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.2"> |
| <h2 class="sect">§A.2 Modifiers<a class="img" href="sA.html#sA.2" |
| title="PermaLink to §A.2 Modifiers"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <p>The rule for method modifiers adds one keyword: <code>callin</code>: |
| |
| </p> |
| <table class="syntaxrule" id="sA.2.1"> |
| <tr> |
| <td class="sect">§ A.2.1</td> |
| <td class="rule"><span class="title">Modifier</span><br />... <br /><strong class="blue">callin</strong></td> |
| </tr> |
| </table> |
| <div class="constraints"> |
| <h5 class="constraints">Contextual constraints:</h5> |
| <ol class="constraints"> |
| <li>The class of a method which has the <code>callin</code> modifier |
| may not be declared static and must be directly contained in a team class. |
| </li> |
| <li>A method that has the <code>callin</code> modifier may not |
| appear in an explicit method call (rule Apply in JLS). |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.3"> |
| <h2 class="sect">§A.3 Method bindings<a class="img" href="sA.html#sA.3" |
| title="PermaLink to §A.3 Method bindings"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <p>The rule of items declarable in a class body is augmented by method |
| bindings: |
| |
| </p> |
| <table class="syntaxrule" id="sA.3.1"> |
| <tr> |
| <td class="sect">§ A.3.1</td> |
| <td class="rule"><span class="title">ClassBodyDeclaration</span><br />... <br /><strong class="blue"><em>CalloutBinding</em></strong><br /><strong class="blue"><em>CallinBinding</em></strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.3.2"> |
| <tr> |
| <td class="sect">§ A.3.2</td> |
| <td class="rule"><span class="title">CalloutBinding</span><br /><em>[Modifier] [TypeArguments] <strong class="blue">MethodSpec CalloutKind MethodSpec CalloutParameterMappings</strong></em><br /><em>[Modifier] [TypeArguments] <strong class="blue">MethodSpec CalloutKind CalloutModifier FieldSpec</strong></em></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.3.3"> |
| <tr> |
| <td class="sect">§ A.3.3</td> |
| <td class="rule"><span class="title">Callin binding</span><br /><em>[ Identifier </em>:<em> ] [TypeArguments]</em><strong class="blue"><em> MethodSpec</em> <- <em>CallinModifier MethodSpecs </em><br /><span class="indent5"></span> |
| [<em>Guard</em>]<em> CallinParameterMappings</em></strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.3.4"> |
| <tr> |
| <td class="sect">§ A.3.4</td> |
| <td class="rule"><span class="title">MethodSpec</span><br /><em>Identifier</em><br /><em>ResultType MethodDeclarator</em><br /><em>ConstructorDeclarator</em></td> |
| </tr> |
| </table> |
| <div class="note"> |
| Note, that <em>ResultType</em>, <em>MethodDeclarator</em> and <em>ConstructorDeclarator</em> are not explicit in the |
| overall syntax of the Java language specification. For convenience we refer to the definition in |
| sections <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4" |
| class="ext">8.4. Method Declarations</a> |
| and <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8" |
| class="ext">8.8. Constructor Declarations</a> |
| of the Java language specification. |
| |
| </div> |
| <table class="syntaxrule" id="sA.3.5"> |
| <tr> |
| <td class="sect">§ A.3.5</td> |
| <td class="rule"><span class="title">MethodSpecs</span><br /><strong class="blue"><em>MethodSpec [</em>, <em>MethodSpecs]</em></strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.3.6"> |
| <tr> |
| <td class="sect">§ A.3.6</td> |
| <td class="rule"><span class="title">CalloutKind</span><br /><strong class="blue">-><br />=></strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.3.7"> |
| <tr> |
| <td class="sect">§ A.3.7</td> |
| <td class="rule"><span class="title">CallinModifier</span><br /><strong class="blue">before</strong><br /><strong class="blue">after</strong><br /><strong class="blue">replace</strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.3.8"> |
| <tr> |
| <td class="sect">§ A.3.8</td> |
| <td class="rule"><span class="title">CalloutModifier</span><br /><strong class="blue">get</strong><br /><strong class="blue">set</strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.3.9"> |
| <tr> |
| <td class="sect">§ A.3.9</td> |
| <td class="rule"><span class="title">FieldSpec</span><br /><em>[Type] Identifier</em></td> |
| </tr> |
| </table> |
| <div class="constraints"> |
| <h5 class="constraints">Contextual constraints:</h5> |
| <ol class="constraints"> |
| <li><code>CalloutBinding</code>s and <code>CallinBinding</code>s |
| may occur only in bound role classes. |
| </li> |
| <li>A <code>CalloutBinding</code> or <code>CallinBinding</code> |
| may not mix identifiers and full signatures (<code>MethodDeclarationHead</code>) |
| for its method specifiers (<code>MethodSpec</code>). |
| <br /> |
| Binding a full method signature to a field requires the <code>FieldSpec</code> |
| to include the <code>Type</code>. |
| </li> |
| <li>The method specifier at the left hand side of a |
| <code>CallinBinding</code> which has the <code>replace</code> modifier |
| must refer to a method that has the <code>callin</code> modifier. |
| </li> |
| <li>The <code>Modifier</code> of a callout binding can only be one of the visility |
| modifiers <code>public</code>, <code>protected</code> or <code>private</code>. |
| A short callout binding (i.e., without signatures) must not specify |
| a visibility modifier. |
| </li> |
| <li>A <code>MethodSpec</code> of the shape <code>ConstructorDeclarator</code> is |
| legal only on the right hand side of a callin after binding (see <a href="s4.html#s4.1.i" title="§4.1.(i) Callin to constructor" |
| class="sect">§4.1.(i)</a>). |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.4"> |
| <h2 class="sect">§A.4 Parameter mappings<a class="img" href="sA.html#sA.4" |
| title="PermaLink to §A.4 Parameter mappings"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <table class="syntaxrule" id="sA.4.1"> |
| <tr> |
| <td class="sect">§ A.4.1</td> |
| <td class="rule"><span class="title">CalloutParameterMappings</span><br /><strong class="blue">with { <em>CalloutParameterMappingList [,]</em> }</strong><br /><strong class="blue">;</strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.4.2"> |
| <tr> |
| <td class="sect">§ A.4.2</td> |
| <td class="rule"><span class="title">CallinParameterMappings</span><br /><strong class="blue">with { <em>CallinParameterMappingList [,]</em> }</strong><br /><strong class="blue">;</strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.4.3"> |
| <tr> |
| <td class="sect">§ A.4.3</td> |
| <td class="rule"><span class="title">CalloutParameterMappingList</span><br /><strong class="blue"><em>CalloutParameterMapping [</em>,<em> CalloutParameterMappingList]</em></strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.4.4"> |
| <tr> |
| <td class="sect">§ A.4.4</td> |
| <td class="rule"><span class="title">CallinParameterMappingList</span><br /><strong class="blue"><em>CallinParameterMapping [</em>,<em> CallinParameterMappingList]</em></strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.4.5"> |
| <tr> |
| <td class="sect">§ A.4.5</td> |
| <td class="rule"><span class="title">CalloutParameterMapping</span><br /><em>Expression</em><strong class="blue"> -> </strong><em>Identifier</em><br /><strong class="blue">result <- </strong><em>Expression</em></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.4.6"> |
| <tr> |
| <td class="sect">§ A.4.6</td> |
| <td class="rule"><span class="title">CallinParameterMapping</span><br /><em>Identifier</em><strong class="blue"> <- </strong><em>Expression</em><br /><em>Expression</em><strong class="blue"> -> </strong><strong class="blue">result</strong></td> |
| </tr> |
| </table> |
| <div class="note"> |
| <h5>Note:</h5> |
| By defining ";" as an option for parameter mappings, the grammar enforces that |
| method bindings without a parameter mapping are terminated by a ";". |
| Also method bindings with parameter mappings may optionally be terminated by a ";", |
| which in that case is interpreted as an empty member declaration, following the |
| same pattern how non-abstract methods in Java may optionally have a trailing ";". |
| |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.5"> |
| <h2 class="sect">§A.5 Statements<a class="img" href="sA.html#sA.5" |
| title="PermaLink to §A.5 Statements"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <table class="syntaxrule" id="sA.5.1"> |
| <tr> |
| <td class="sect">§ A.5.1</td> |
| <td class="rule"><span class="title">Statement</span><br />... <br /><em><strong class="blue">Within</strong><br /><strong class="blue">BaseCall</strong><br /><strong class="blue">TSuperCall</strong></em></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.5.2"> |
| <tr> |
| <td class="sect">§ A.5.2</td> |
| <td class="rule"><span class="title">Within</span><br /><strong class="blue">within</strong> ( <em>Expression</em> ) <em>Statement</em></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.5.3"> |
| <tr> |
| <td class="sect">§ A.5.3</td> |
| <td class="rule"><span class="title">BaseCall</span><br /><strong class="blue">base</strong> . <em>Identifier</em> ( <em>Arguments<sub>opt</sub></em> ) |
| <br /><strong class="blue">base</strong> ( <em>Arguments<sub>opt</sub></em> ) |
| |
| </td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.5.4"> |
| <tr> |
| <td class="sect">§ A.5.4</td> |
| <td class="rule"><span class="title">TSuperCall</span><br /><strong class="blue">tsuper</strong> . <em>Identifier</em> ( <em>Arguments<sub>opt</sub></em> ) |
| <br /><strong class="blue">tsuper</strong> ( <em>Arguments<sub>opt</sub></em> ) |
| |
| </td> |
| </tr> |
| </table> |
| <div class="constraints"> |
| <h5 class="constraints">Contextual constraints:</h5> |
| <ol class="constraints"> |
| <li>The expression of a <code>Within</code> must evaluate |
| to an instance of a team class. |
| </li> |
| <li>The first form of a <code>BaseCall</code> may occur only |
| in the body of a method that has the <code>callin</code> modifier. |
| The identifier must be the name of the enclosing method. |
| </li> |
| <li>The second form of a <code>BaseCall</code> may occur only in a constructor of a |
| bound role class. |
| </li> |
| <li>The first form of a <code>TSuperCall</code> may occur only in a method of |
| a role class. |
| </li> |
| <li>The second form of a <code>TSuperCall</code> may occur only in a constructor of a |
| role class. |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.6"> |
| <h2 class="sect">§A.6 Types<a class="img" href="sA.html#sA.6" title="PermaLink to §A.6 Types"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <table class="syntaxrule" id="sA.6.1"> |
| <tr> |
| <td class="sect">§ A.6.1</td> |
| <td class="rule"><span class="title">Type</span><br />... <br /><strong class="blue"><em>LiftingType</em></strong><br /><strong class="blue"><em>AnchoredType</em></strong></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.6.2"> |
| <tr> |
| <td class="sect">§ A.6.2</td> |
| <td class="rule"><span class="title">LiftingType</span><br /><em>Type</em><strong class="blue"> as </strong><em>Type</em></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.6.3"> |
| <tr> |
| <td class="sect">§ A.6.3</td> |
| <td class="rule"><span class="title">AnchoredType</span><br /><strong class="blue"><em>Path</em></strong>.<em>Type</em></td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.6.4"> |
| <tr> |
| <td class="sect">§ A.6.4</td> |
| <td class="rule"><span class="title">Path</span><br /><em>Identifier</em><br /><strong class="blue"><em>Path</em></strong>.<em>Identifier</em></td> |
| </tr> |
| </table> |
| <div class="constraints"> |
| <h5 class="constraints">Contextual constraints:</h5> |
| <ol class="constraints"> |
| <li id="sA.6.a"><span class="title">Location</span><br /> |
| A <code>LiftingType</code> may only occur in the parameter list |
| of a method of a team class. |
| |
| </li> |
| <li id="sA.6.b"><span class="title">Role in scope</span><br /> |
| The right hand side type in a <code>LiftingType</code> |
| must be a class directly contained in the enclosing team class |
| (the class may be acquired by <a href="s1.html#s1.3.1.c" |
| title="§1.3.1.(c) Overriding and implicit inheritance" |
| class="sect">implicit inheritance (§1.3.1.(c))</a>). |
| |
| </li> |
| <li id="sA.6.c"><span class="title">Team path</span><br /><em>Note, that the syntax of §A.6.3/4 is deprecated in favor of <a href="#sA.9" title="§A.9 Value dependent types" class="sect">§A.9</a></em>. |
| <br /> |
| The path in an <code>AnchoredType</code> must refer to an instance of a team class. |
| Each identifier in the path must be declared with the <code>final</code> modifier. |
| |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.7"> |
| <h2 class="sect">§A.7 Guard predicates<a class="img" href="sA.html#sA.7" |
| title="PermaLink to §A.7 Guard predicates"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <table class="syntaxrule" id="sA.7.1"> |
| <tr> |
| <td class="sect">§ A.7.1</td> |
| <td class="rule"><span class="title">Guard</span><br /><strong class="blue"><em>[</em>base<em>]</em> when</strong> ( <em>Expression</em> ) |
| |
| </td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.7.2"> |
| <tr> |
| <td class="sect">§ A.7.2</td> |
| <td class="rule"><span class="title">MethodDeclaration</span><br />...<br /><em>MethodHeader <strong class="blue">[Guard]</strong> MethodBody</em></td> |
| </tr> |
| </table> |
| <p>Other rules referring to <em><code>Guard</code></em>: |
| <a href="#sA.1.1" title="§A.1.1 ClassDeclaration" class="sect">ClassDeclaration (§A.1.1)</a>, |
| <a href="#sA.3.3" title="§A.3.3 Callin binding" class="sect">CallinBinding (§A.3.3)</a></p> |
| <div class="constraints"> |
| <h5 class="constraints">Contextual constraints:</h5> |
| <ol class="constraints"> |
| <li>The <code>Expression</code> in a guard must have type <code>boolean</code>. |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.8"> |
| <h2 class="sect">§A.8 Precedence declaration<a class="img" href="sA.html#sA.8" |
| title="PermaLink to §A.8 Precedence declaration"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <table class="syntaxrule" id="sA.8.1"> |
| <tr> |
| <td class="sect">§ A.8.1</td> |
| <td class="rule"><span class="title">PrecedenceDeclaration</span><br /><strong class="blue">precedence [after] </strong><em> CallinNameList</em> ; |
| |
| </td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.8.2"> |
| <tr> |
| <td class="sect">§ A.8.2</td> |
| <td class="rule"><span class="title">CallinNameList</span><br /><em>Name [, CallinNameList]</em></td> |
| </tr> |
| </table> |
| </div> |
| <div class="sect depth2" id="sA.9"> |
| <h2 class="sect">§A.9 Value dependent types<a class="img" href="sA.html#sA.9" |
| title="PermaLink to §A.9 Value dependent types"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <table class="syntaxrule" id="sA.9.1"> |
| <tr> |
| <td class="sect">§ A.9.1</td> |
| <td class="rule"><span class="title">TypeParameter</span><br /><em>TypeVariable [TypeBound]</em><br /><strong class="blue"><em>ReferenceType Name</em></strong></td> |
| </tr> |
| </table> |
| <p>See <a href="http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#108850" |
| class="ext">JLS 3 §4.4</a></p> |
| <table class="syntaxrule" id="sA.9.2"> |
| <tr> |
| <td class="sect">§ A.9.2</td> |
| <td class="rule"><span class="title">ActualTypeArgument</span><br /><em>ReferenceType</em><br /><em>Wildcard</em><br /><strong class="blue"><em>@Name</em></strong></td> |
| </tr> |
| </table> |
| <p>See <a href="http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#107353" |
| class="ext">JLS 3 §4.5.1</a></p> |
| <div class="constraints"> |
| <h5 class="constraints">Contextual constraints:</h5> |
| <ol class="constraints"> |
| <li id="sA.9.a"><span class="title">ActualTypeParameter</span><br /> |
| An <code>ActualTypeArgument</code> of the form <code>@Name</code> may only occur |
| as a parameter of a simple name type reference. |
| |
| </li> |
| </ol> |
| </div> |
| </div> |
| <div class="sect depth2" id="sA.10"> |
| <h2 class="sect">§A.10 Packages and imports<a class="img" href="sA.html#sA.10" |
| title="PermaLink to §A.10 Packages and imports"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png" |
| alt="" /></a><span class="toplink"><a href="#top">↑ §A</a></span></h2> |
| <table class="syntaxrule" id="sA.10.1"> |
| <tr> |
| <td class="sect">§ A.10.1</td> |
| <td class="rule"><span class="title">PackageDeclaration</span><br />...<br /><strong class="blue">team </strong>package<em> QualifiedName</em> ; |
| |
| </td> |
| </tr> |
| </table> |
| <table class="syntaxrule" id="sA.10.2"> |
| <tr> |
| <td class="sect">§ A.10.2</td> |
| <td class="rule"><span class="title">Import</span><br />...<br /><strong>import </strong><strong class="blue">base </strong><em>QualifiedName</em> ; |
| |
| </td> |
| </tr> |
| </table> |
| </div> |
| </div> |
| <table class="nav"> |
| <tr> |
| <td class="back"><a href="s9.html" rel="prev"><< §9 Value Dependent Classes</a></td> |
| <td class="top"><a href="index.html" rel="contents">↑ Table of Contents ↑</a></td> |
| <td class="next"><a href="sB.html" rel="next">§B Changes between versions >></a></td> |
| </tr> |
| </table> |
| </div> |
| <div id="footer"> |
| <hr /><a class="w3c img" href="http://jigsaw.w3.org/css-validator/check/referer" |
| shape="rect"><img src="../images/valid-css2-blue.png" alt="Valid CSS!" height="31" width="88" /></a><a class="w3c img" href="http://validator.w3.org/check?uri=referer" shape="rect"><img src="../images/valid-xhtml10-blue.png" alt="Valid XHTML 1.0 Strict" height="31" |
| width="88" /></a><address>© Stephan Herrmann, Christine Hundt, Marco Mosconi</address> |
| OT/J version 1.3.1 — last modified: 2013-05-28 |
| </div> |
| </body> |
| </html> |