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

Side by Side Diff: docs/language/dartLangSpec.tex

Issue 804993005: Fix circular dependency between null equality and identity. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 \documentclass{article} 1 \documentclass{article}
2 \usepackage{epsfig} 2 \usepackage{epsfig}
3 \usepackage{color} 3 \usepackage{color}
4 \usepackage{dart} 4 \usepackage{dart}
5 \usepackage{bnf} 5 \usepackage{bnf}
6 \usepackage{hyperref} 6 \usepackage{hyperref}
7 \usepackage{lmodern} 7 \usepackage{lmodern}
8 \newcommand{\code}[1]{{\sf #1}} 8 \newcommand{\code}[1]{{\sf #1}}
9 \title{Dart Programming Language Specification \\ 9 \title{Dart Programming Language Specification \\
10 {\large Version 1.9}} 10 {\large Version 1.9}}
(...skipping 4271 matching lines...) Expand 10 before | Expand all | Expand 10 after
4282 4282
4283 \LMHash{} 4283 \LMHash{}
4284 An {\em equality expression} is either a relational expression (\ref{relationalE xpressions}), or an invocation of an equality operator on either \SUPER{} or an expression $e_1$, with argument $e_2$. 4284 An {\em equality expression} is either a relational expression (\ref{relationalE xpressions}), or an invocation of an equality operator on either \SUPER{} or an expression $e_1$, with argument $e_2$.
4285 4285
4286 4286
4287 \LMHash{} 4287 \LMHash{}
4288 Evaluation of an equality expression $ee$ of the form \code{$e_1$ == $e_2$} proc eeds as follows: 4288 Evaluation of an equality expression $ee$ of the form \code{$e_1$ == $e_2$} proc eeds as follows:
4289 \begin{itemize} 4289 \begin{itemize}
4290 \item The expression $e_1$ is evaluated to an object $o_1$. 4290 \item The expression $e_1$ is evaluated to an object $o_1$.
4291 \item The expression $e_2$ is evaluated to an object $o_2$. 4291 \item The expression $e_2$ is evaluated to an object $o_2$.
4292 \item If either $o_1$ or $o_2$ is \NULL{}, then $ee$ evaluates to \code{identica l($o_1$, $o_2$)}. Otherwise, 4292 \item If either $o_1$ or $o_2$ is \NULL{}, then $ee$ evaluates to \TRUE{} if bot h $o_1$ and $o_2$ are \NULL{} and to \FALSE{} otherwise. Otherwise,
4293 \item $ee$ is equivalent to the method invocation \code{$o_1$.==($o_2$)}. 4293 \item $ee$ is equivalent to the method invocation \code{$o_1$.==($o_2$)}.
4294 \end{itemize} 4294 \end{itemize}
4295 4295
4296 4296
4297 \LMHash{} 4297 \LMHash{}
4298 Evaluation of an equality expression $ee$ of the form \code{\SUPER{} == $e$} pro ceeds as follows: 4298 Evaluation of an equality expression $ee$ of the form \code{\SUPER{} == $e$} pro ceeds as follows:
4299 \begin{itemize} 4299 \begin{itemize}
4300 \item The expression $e$ is evaluated to an object $o$. 4300 \item The expression $e$ is evaluated to an object $o$.
4301 \item If either \THIS{} or $o$ is \NULL{}, then $ee$ evaluates to \code{identica l(\THIS{}, $o$)}. Otherwise, 4301 \item If either \THIS{} or $o$ is \NULL{}, then $ee$ evaluates to evaluates to \ TRUE{} if both \THIS{} and $o$ are \NULL{} and to \FALSE{} otherwise. Otherwise,
4302 \item $ee$ is equivalent to the method invocation \code{\SUPER{}.==($o$)}. 4302 \item $ee$ is equivalent to the method invocation \code{\SUPER{}.==($o$)}.
4303 \end{itemize} 4303 \end{itemize}
4304 4304
4305 \commentary{As a result of the above definition, user defined \code{==} methods can assume that their argument is non-null, and avoid the standard boiler-plate prelude: 4305 \commentary{As a result of the above definition, user defined \code{==} methods can assume that their argument is non-null, and avoid the standard boiler-plate prelude:
4306 4306
4307 \code{if (identical(\NULL{}, arg)) return \FALSE{};} 4307 \code{if (identical(\NULL{}, arg)) return \FALSE{};}
4308 4308
4309 Another implication is that there is never a need to use \code{identical()} to t est against \NULL{}, nor should anyone ever worry about whether to write \NULL{} == $e$ or $e$ == \NULL{}. 4309 Another implication is that there is never a need to use \code{identical()} to t est against \NULL{}, nor should anyone ever worry about whether to write \NULL{} == $e$ or $e$ == \NULL{}.
4310 } 4310 }
4311 4311
(...skipping 3025 matching lines...) Expand 10 before | Expand all | Expand 10 after
7337 7337
7338 The invariant that each normative paragraph is associated with a line 7338 The invariant that each normative paragraph is associated with a line
7339 containing the text \LMHash{} should be maintained. Extra occurrences 7339 containing the text \LMHash{} should be maintained. Extra occurrences
7340 of \LMHash{} can be added if needed, e.g., in order to make 7340 of \LMHash{} can be added if needed, e.g., in order to make
7341 individual \item{}s in itemized lists addressable. Each \LM.. command 7341 individual \item{}s in itemized lists addressable. Each \LM.. command
7342 must occur on a separate line. \LMHash{} must occur immediately 7342 must occur on a separate line. \LMHash{} must occur immediately
7343 before the associated paragraph, and \LMLabel must occur immediately 7343 before the associated paragraph, and \LMLabel must occur immediately
7344 after the associated \section{}, \subsection{} etc. 7344 after the associated \section{}, \subsection{} etc.
7345 7345
7346 ---------------------------------------------------------------------- 7346 ----------------------------------------------------------------------
OLDNEW
« 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