Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(940)

Unified Diff: docs/language/dartLangSpec.tex

Issue 206883003: Ensure warnings are given on logical boolean expressions and for loops where booleans are expected … (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/language/dartLangSpec.tex
===================================================================
--- docs/language/dartLangSpec.tex (revision 34201)
+++ docs/language/dartLangSpec.tex (working copy)
@@ -733,7 +733,7 @@
\EXTERNAL{}? operatorSignature;
((\EXTERNAL{} \STATIC{}?))? functionSignature;
\STATIC{} (\FINAL{} $|$ \CONST{}) type? staticFinalDeclarationList;
- \CONST{} type? staticFinalDeclarationList;
+% \CONST{} type? staticFinalDeclarationList;
\FINAL{} type? initializedIdentifierList;
\STATIC{}? (\VAR{} $|$ type) initializedIdentifierList
.
@@ -1160,7 +1160,7 @@
\commentary{These bindings are usually determined by the instance creation expression that invoked the constructor (directly or indirectly). However, they may also be determined by a reflective call,.
}
-If $k$ is redirecting, then its redirect clause has the form
+If $k$ is redirecting then its redirect clause has the form
\THIS{}$.g(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$
@@ -1345,6 +1345,20 @@
A {\em potentially constant expression} is an expression $e$ that would be a valid constant expression if all formal parameters of $e$'s immediately enclosing constant constructor were treated as compile-time constants that were guaranteed to evaluate to an integer, boolean or string value as required by their immediately enclosing superexpression.
\commentary{
+Note that a parameter that is not used in an superexpression that is restricted to certain types can be a constant of any type. For example}
Lasse Reichstein Nielsen 2014/03/21 08:29:00 Long sentence. Add comma after "certain types"?
+
+\begin{dartCode}
+\CLASS{} A \{
+ \FINAL{} m;
+ \CONST{} A(this.m);
+\}
+\end{dartCode}
+
+\commentary{can be instantiated via \cd{\CONST{} A(\CONST []);}}
+
+
+
+\commentary{
The difference between a potentially constant expression and a compile-time constant expression (\ref{const}) deserves some explanation.
The key issue is whether one treats the formal parameters of a constructor as compile-time constants.
@@ -1894,6 +1908,7 @@
\begin{itemize}
\item A type parameter cannot be used to name a constructor in an instance creation expression (\ref{instanceCreation}).
\item A type parameter cannot be used as a superclass or superinterface (\ref{superclasses}, \ref{superinterfaces}, \ref{interfaceSuperinterfaces}).
Lasse Reichstein Nielsen 2014/03/21 08:29:00 Or a mixin?
gbracha 2014/03/21 21:53:23 That is always implied. A mixin always acts as a s
+\item A type parameter cannot be used as a generic.
Lasse Reichstein Nielsen 2014/03/21 08:29:00 A generic what? "Generic" is generally used as an
gbracha 2014/03/21 21:53:23 I'll add 'class" in the next rev.
\end{itemize}
The normative versions of these are given in the appropriate sections of this specification. Some of these restrictions may be lifted in the future.
@@ -2246,7 +2261,7 @@
\subsubsection{Boolean Conversion}
\label{booleanConversion}
-{\em Boolean conversion} maps any object $o$ into a boolean. Boolean conversion is defined by the function
+{\em Boolean conversion} maps any object $o$ into a boolean. Boolean conversion is defined by the function application
\begin{dartCode}
(bool v)\{
@@ -3512,7 +3527,7 @@
then the type of $v$ is known to be $T$ in $e_2$.
- It is a static type warning if the type of $e_1$ may not be assigned to \code{bool}. The static type of $c$ is the least upper bound (\ref{leastUpperBounds}) of the static type of $e_2$ and the static type of $e_3$.
+ It is a static type warning if the static type of $e_1$ may not be assigned to \code{bool}. The static type of $c$ is the least upper bound (\ref{leastUpperBounds}) of the static type of $e_2$ and the static type of $e_3$.
\subsection{ Logical Boolean Expressions}
@@ -3554,7 +3569,7 @@
\end{itemize}
then the type of $v$ is known to be $T$ in $e_2$.
-The static type of a logical boolean expression is \code{bool}.
+It is a static warning if the static types of both $e_1$ and $e_2$ may not be assigned to \cd{bool}. The static type of a logical boolean expression is \code{bool}.
\subsection{ Equality}
@@ -3906,7 +3921,6 @@
{\bf BUILT\_IN\_IDENTIFIER:} \ABSTRACT{};
\AS{};
-% \ASSERT{};
\DEFERRED{};
\DYNAMIC{};
\EXPORT{};
@@ -3924,11 +3938,11 @@
.
{\bf IDENTIFIER\_START:}IDENTIFIER\_START\_NO\_DOLLAR;
- '\$'
+ `\$'
.
{\bf IDENTIFIER\_START\_NO\_DOLLAR:}LETTER;
- '\_'
+ `\_'
.
{\bf IDENTIFIER\_PART\_NO\_DOLLAR:}IDENTIFIER\_START\_NO\_DOLLAR;
@@ -4333,8 +4347,8 @@
Instead, each iteration has its own distinct variable. The first iteration uses the variable created by the initial declaration. The expression executed at the end of each iteration uses a fresh variable $v^{\prime\prime}$, bound to the value of the current iteration variable, and then modifies $v^{\prime\prime}$ as required for the next iteration.
}
+It is a static warning if the static type of $c$ may not be assigned to \cd{bool}.
-
%A for statement of the form \code{ \FOR{} ($d$ ; $c$; $e$) $s$} is equivalent to the the following code:
%\code{
@@ -4380,7 +4394,7 @@
The expression $e$ is evaluated to an object $o$. Then, $o$ is subjected to boolean conversion (\ref{booleanConversion}), producing an object $r$. If $r$ is \TRUE{}, then the statement $\{s\}$ is executed and then the while statement is re-executed recursively. If $r$ is \FALSE{}, execution of the while statement is complete.
-It is a static type warning if the type of $e$ may not be assigned to \code{bool}.
+It is a static type warning if the static type of $e$ may not be assigned to \code{bool}.
\subsection{Do}
@@ -4399,7 +4413,7 @@
The statement $\{s\}$ is executed. Then, the expression $e$ is evaluated to an object $o$. Then, $o$ is subjected to boolean conversion (\ref{booleanConversion}), producing an object $r$. If $r$ is \FALSE{}, execution of the do statement is complete. If $r$ is \TRUE{}, then the do statement is re-executed recursively.
-It is a static type warning if the type of $e$ may not be assigned to \code{bool}.
+It is a static type warning if the static type of $e$ may not be assigned to \code{bool}.
\subsection{Switch}
\label{switch}
@@ -4880,7 +4894,8 @@
\EXTERNAL{}? getterSignature `{\escapegrammar ;}';
\EXTERNAL{}? setterSignature `{\escapegrammar ;}';
functionSignature functionBody;
- returnType? getOrSet identifier formalParameterList functionBody;
+ returnType? \GET{} identifier functionBody;
+ returnType? \SET{} identifier formalParameterList functionBody;
(\FINAL{} $|$ \CONST{}) type? staticFinalDeclarationList `{\escapegrammar ;}';
variableDeclaration `{\escapegrammar ;}'
.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698