| OLD | NEW |
| 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.10}} | 10 {\large Version 1.10}} |
| (...skipping 3855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3866 \end{code} | 3866 \end{code} |
| 3867 | 3867 |
| 3868 \commentary{Notice that the wording carefully avoids re-evaluating the receiver
$o$ and the arguments $a_i$. } | 3868 \commentary{Notice that the wording carefully avoids re-evaluating the receiver
$o$ and the arguments $a_i$. } |
| 3869 | 3869 |
| 3870 \LMHash{} | 3870 \LMHash{} |
| 3871 Let $T$ be the static type of $o$. It is a static type warning if $T$ does not
have an accessible (\ref{privacy}) instance member named $m$ unless either: | 3871 Let $T$ be the static type of $o$. It is a static type warning if $T$ does not
have an accessible (\ref{privacy}) instance member named $m$ unless either: |
| 3872 \begin{itemize} | 3872 \begin{itemize} |
| 3873 \item | 3873 \item |
| 3874 $T$ or a superinterface of $T$ is annotated with an annotation denoting a consta
nt identical to the constant \code{@proxy} defined in \code{dart:core}. Or | 3874 $T$ or a superinterface of $T$ is annotated with an annotation denoting a consta
nt identical to the constant \code{@proxy} defined in \code{dart:core}. Or |
| 3875 \item $T$ is \code{Type}, $e$ is a constant type literal and the class correspo
nding to $e$ has a static getter named $m$. | 3875 \item $T$ is \code{Type}, $e$ is a constant type literal and the class correspo
nding to $e$ has a static getter named $m$. |
| 3876 \item $T$ is \code{Function} and $m$ is \CALL. \rationale {The type \code{Functi
on} is treated as if it has a \code{call} method for any possible signature of \
CALL. The expectation is that any concrete subclass of \code{Function} will impl
ement \CALL. Note that a warning will be issue if this is not the case. Furtherm
ore, any use of \CALL on a subclass of \code{Function} that fails to implement \
CALL{} will also provoke a a warning, as this exemption is limited to type \code
{Function}, and does not apply to its subtypes. |
| 3877 } |
| 3876 \end{itemize} | 3878 \end{itemize} |
| 3877 | 3879 |
| 3878 \LMHash{} | 3880 \LMHash{} |
| 3879 If $T.m$ exists, it is a static type warning if the type $F$ of $T.m$ may not b
e assigned to a function type. If $T.m$ does not exist, or if $F$ is not a funct
ion type, the static type of $i$ is \DYNAMIC{}; otherwise the static type of $i$
is the declared return type of $F$. | 3881 If $T.m$ exists, it is a static type warning if the type $F$ of $T.m$ may not b
e assigned to a function type. If $T.m$ does not exist, or if $F$ is not a funct
ion type, the static type of $i$ is \DYNAMIC{}; otherwise the static type of $i$
is the declared return type of $F$. |
| 3880 | 3882 |
| 3881 \LMHash{} | 3883 \LMHash{} |
| 3882 It is a compile-time error to invoke any of the methods of class \cd{Object} on
a prefix object (\ref{imports}) or on a constant type literal that is immediate
ly followed by the token `.'. | 3884 It is a compile-time error to invoke any of the methods of class \cd{Object} on
a prefix object (\ref{imports}) or on a constant type literal that is immediate
ly followed by the token `.'. |
| 3883 | 3885 |
| 3884 | 3886 |
| 3885 \subsubsection{Cascaded Invocations} | 3887 \subsubsection{Cascaded Invocations} |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4154 | 4156 |
| 4155 \commentary{ | 4157 \commentary{ |
| 4156 This restriction is in line with other limitations on the use of prefixes as obj
ects. The only permitted uses of $p\#m$ are closurizing top level methods and ge
tters imported via the prefix $p$. Top level methods are directly available by t
heir qualified names: $p.m$. However, getters and setters are not, and allowing
their closurization is the whole point of the $e\#m$ syntax. | 4158 This restriction is in line with other limitations on the use of prefixes as obj
ects. The only permitted uses of $p\#m$ are closurizing top level methods and ge
tters imported via the prefix $p$. Top level methods are directly available by t
heir qualified names: $p.m$. However, getters and setters are not, and allowing
their closurization is the whole point of the $e\#m$ syntax. |
| 4157 } | 4159 } |
| 4158 | 4160 |
| 4159 \LMHash{} | 4161 \LMHash{} |
| 4160 Let $T$ be the static type of $e$. It is a static type warning if $T$ does not h
ave an accessible instance method or getter named $m$ unless either: | 4162 Let $T$ be the static type of $e$. It is a static type warning if $T$ does not h
ave an accessible instance method or getter named $m$ unless either: |
| 4161 \begin{itemize} | 4163 \begin{itemize} |
| 4162 \item $T$ or a superinterface of $T$ is annotated with an annotation denoting a
constant identical to the constant \code{@proxy} defined in \cd{dart:core}. Or | 4164 \item $T$ or a superinterface of $T$ is annotated with an annotation denoting a
constant identical to the constant \code{@proxy} defined in \cd{dart:core}. Or |
| 4163 \item $T$ is \cd{Type}, $e$ is a constant type literal and the class correspondi
ng to $e$ declares an accessible static method or getter named $m$. | 4165 \item $T$ is \cd{Type}, $e$ is a constant type literal and the class correspondi
ng to $e$ declares an accessible static method or getter named $m$. |
| 4166 \item $T$ is \code{Function} and $m$ is \CALL. |
| 4164 \end{itemize} | 4167 \end{itemize} |
| 4165 | 4168 |
| 4166 The static type of $i$ is: | 4169 The static type of $i$ is: |
| 4167 \begin{itemize} | 4170 \begin{itemize} |
| 4168 \item The static type of function $T.m$, if $T$ has an accessible instance membe
r named $m$. | 4171 \item The static type of function $T.m$, if $T$ has an accessible instance membe
r named $m$. |
| 4169 \item The static type of function $T.m$, if $T$ is \cd{Type}, $e$ is a constant
type literal and the class corresponding to $e$ declares an accessible static me
mber or constructor named $m$. | 4172 \item The static type of function $T.m$, if $T$ is \cd{Type}, $e$ is a constant
type literal and the class corresponding to $e$ declares an accessible static me
mber or constructor named $m$. |
| 4173 \item \code{Function} if $T$ is \code{Function} and $m$ is \CALL. |
| 4170 \item The type \DYNAMIC{} otherwise. | 4174 \item The type \DYNAMIC{} otherwise. |
| 4171 \end{itemize} | 4175 \end{itemize} |
| 4172 | 4176 |
| 4173 \subsubsection{Named Constructor Extraction} | 4177 \subsubsection{Named Constructor Extraction} |
| 4174 \LMLabel{namedConstructorExtraction} | 4178 \LMLabel{namedConstructorExtraction} |
| 4175 | 4179 |
| 4176 \LMHash{} | 4180 \LMHash{} |
| 4177 Evaluation of a property extraction $i$ of the form \NEW{} $T\#m$ proceeds as fo
llows: | 4181 Evaluation of a property extraction $i$ of the form \NEW{} $T\#m$ proceeds as fo
llows: |
| 4178 | 4182 |
| 4179 \LMHash{} | 4183 \LMHash{} |
| (...skipping 3617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7797 | 7801 |
| 7798 The invariant that each normative paragraph is associated with a line | 7802 The invariant that each normative paragraph is associated with a line |
| 7799 containing the text \LMHash{} should be maintained. Extra occurrences | 7803 containing the text \LMHash{} should be maintained. Extra occurrences |
| 7800 of \LMHash{} can be added if needed, e.g., in order to make | 7804 of \LMHash{} can be added if needed, e.g., in order to make |
| 7801 individual \item{}s in itemized lists addressable. Each \LM.. command | 7805 individual \item{}s in itemized lists addressable. Each \LM.. command |
| 7802 must occur on a separate line. \LMHash{} must occur immediately | 7806 must occur on a separate line. \LMHash{} must occur immediately |
| 7803 before the associated paragraph, and \LMLabel must occur immediately | 7807 before the associated paragraph, and \LMLabel must occur immediately |
| 7804 after the associated \section{}, \subsection{} etc. | 7808 after the associated \section{}, \subsection{} etc. |
| 7805 | 7809 |
| 7806 ---------------------------------------------------------------------- | 7810 ---------------------------------------------------------------------- |
| OLD | NEW |