| 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 6616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6627 \item For every top level getter $g$ named $id$ in $B$, a corresponding getter n
amed $id$ with the same signature as $g$. Calling the method results in a runti
me error. | 6627 \item For every top level getter $g$ named $id$ in $B$, a corresponding getter n
amed $id$ with the same signature as $g$. Calling the method results in a runti
me error. |
| 6628 \item For every top level setter $s$ named $id$ in $B$, a corresponding setter n
amed $id$ with the same signature as $s$. Calling the method results in a runti
me error. | 6628 \item For every top level setter $s$ named $id$ in $B$, a corresponding setter n
amed $id$ with the same signature as $s$. Calling the method results in a runti
me error. |
| 6629 \item For every type $T$ named $id$ in $B$, a corresponding getter named $id$ wi
th return type \code{Type}. Calling the method results in a runtime error. | 6629 \item For every type $T$ named $id$ in $B$, a corresponding getter named $id$ wi
th return type \code{Type}. Calling the method results in a runtime error. |
| 6630 \end{itemize} | 6630 \end{itemize} |
| 6631 | 6631 |
| 6632 \rationale { | 6632 \rationale { |
| 6633 The purpose of adding members of $B$ to $p$ is to ensure that any warnings issu
ed when using $p$ are correct, and no spurious warnings are generated. In fact,
at runtime we cannot add these members until $B$ is loaded; but any such invoca
tions will fail at runtime as specified by virtue of being completely absent. | 6633 The purpose of adding members of $B$ to $p$ is to ensure that any warnings issu
ed when using $p$ are correct, and no spurious warnings are generated. In fact,
at runtime we cannot add these members until $B$ is loaded; but any such invoca
tions will fail at runtime as specified by virtue of being completely absent. |
| 6634 } | 6634 } |
| 6635 %But this is still a lie detectable by reflection. Probably revise so the type o
f p has these members but p does not. | 6635 %But this is still a lie detectable by reflection. Probably revise so the type o
f p has these members but p does not. |
| 6636 | 6636 |
| 6637 The static type of the prefix object $p$ is a unique interface type that has tho
se members whose names and signatures are listed above. |
| 6638 |
| 6637 \LMHash{} | 6639 \LMHash{} |
| 6638 After a call succeeds, the name $p$ is mapped to a non-deferred prefix object as
described below. In addition, the prefix object also supports the \code{loadLib
rary} method, and so it is possible to call \code{loadLibrary} again. If a call
fails, nothing happens, and one again has the option to call \code{loadLibrary}
again. Whether a repeated call to \code{loadLibrary} succeeds will vary as descr
ibed below. | 6640 After a call succeeds, the name $p$ is mapped to a non-deferred prefix object as
described below. In addition, the prefix object also supports the \code{loadLib
rary} method, and so it is possible to call \code{loadLibrary} again. If a call
fails, nothing happens, and one again has the option to call \code{loadLibrary}
again. Whether a repeated call to \code{loadLibrary} succeeds will vary as descr
ibed below. |
| 6639 | 6641 |
| 6640 \LMHash{} | 6642 \LMHash{} |
| 6641 The effect of a repeated call to \code{$p$.loadLibrary} is as follows: | 6643 The effect of a repeated call to \code{$p$.loadLibrary} is as follows: |
| 6642 \begin{itemize} | 6644 \begin{itemize} |
| 6643 \item | 6645 \item |
| 6644 If another call to \code{$p$.loadLibrary} has already succeeded, the repeated ca
ll also succeeds. | 6646 If another call to \code{$p$.loadLibrary} has already succeeded, the repeated ca
ll also succeeds. |
| 6645 Otherwise, | 6647 Otherwise, |
| 6646 \item | 6648 \item |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6680 then let $NS_i = \SHOW{}([id_1, \ldots, id_k], NS_{i-1}$) | 6682 then let $NS_i = \SHOW{}([id_1, \ldots, id_k], NS_{i-1}$) |
| 6681 | 6683 |
| 6682 where $show(l,n)$ takes a list of identifiers $l$ and a namespace $n$, and produ
ces a namespace that maps each name in $l$ to the same element that $n$ does. Fu
rthermore, for each name $x$ in $l$, if $n$ defines the name $x=$ then the new
namespace maps $x=$ to the same element that $n$ does. Otherwise the resulting m
apping is undefined. | 6684 where $show(l,n)$ takes a list of identifiers $l$ and a namespace $n$, and produ
ces a namespace that maps each name in $l$ to the same element that $n$ does. Fu
rthermore, for each name $x$ in $l$, if $n$ defines the name $x=$ then the new
namespace maps $x=$ to the same element that $n$ does. Otherwise the resulting m
apping is undefined. |
| 6683 | 6685 |
| 6684 \item If $C_i$ is of the form | 6686 \item If $C_i$ is of the form |
| 6685 | 6687 |
| 6686 \code{\HIDE{} $id_1, \ldots, id_k$} | 6688 \code{\HIDE{} $id_1, \ldots, id_k$} |
| 6687 | 6689 |
| 6688 then let $NS_i = \HIDE{}([id_1, \ldots, id_k], NS_{i-1}$) | 6690 then let $NS_i = \HIDE{}([id_1, \ldots, id_k], NS_{i-1}$) |
| 6689 | 6691 |
| 6690 where $hide(l, n)$ takes a list of identfiers $l$ and a namespace $n$, and produ
ces a namespace that is identical to $n$ except that for each name $k$ in $l$, $
k$ and $k=$ are undefined. | 6692 where $hide(l, n)$ takes a list of identifiers $l$ and a namespace $n$, and prod
uces a namespace that is identical to $n$ except that for each name $k$ in $l$,
$k$ and $k=$ are undefined. |
| 6691 \end{itemize} | 6693 \end{itemize} |
| 6692 | 6694 |
| 6693 \LMHash{} | 6695 \LMHash{} |
| 6694 Next, if $I$ includes a prefix clause of the form \AS{} $p$, let $NS = NS_n \cu
p \{p: prefixObject(NS_n)\}$ where $prefixObject(NS_n)$ is a {\em prefix object}
for the namespace $NS_n$, which is an object that has the following members: | 6696 Next, if $I$ includes a prefix clause of the form \AS{} $p$, let $NS = NS_n \cu
p \{p: prefixObject(NS_n)\}$ where $prefixObject(NS_n)$ is a {\em prefix object}
for the namespace $NS_n$, which is an object that has the following members: |
| 6695 | 6697 |
| 6696 \begin{itemize} | 6698 \begin{itemize} |
| 6697 \item For every top level function $f$ named $id$ in $NS_n$, a corresponding me
thod with the same name and signature as $f$ that forwards (\ref{functionDeclar
ations}) to $f$. | 6699 \item For every top level function $f$ named $id$ in $NS_n$, a corresponding me
thod with the same name and signature as $f$ that forwards (\ref{functionDeclar
ations}) to $f$. |
| 6698 \item For every top level getter with the same name and signature as $g$ named
$id$ in $NS_n$, a corresponding getter that forwards to $g$. | 6700 \item For every top level getter with the same name and signature as $g$ named
$id$ in $NS_n$, a corresponding getter that forwards to $g$. |
| 6699 \item For every top level setter $s$ with the same name and signature as named
$id$ in $NS_n$, a corresponding setter that forwards to $s$. | 6701 \item For every top level setter $s$ with the same name and signature as named
$id$ in $NS_n$, a corresponding setter that forwards to $s$. |
| 6700 \item For every type $T$ named $id$ in $NS_n$, a corresponding getter named $id$
with return type \code{Type}, that, when invoked, returns the type object for $
T$. | 6702 \item For every type $T$ named $id$ in $NS_n$, a corresponding getter named $id$
with return type \code{Type}, that, when invoked, returns the type object for $
T$. |
| 6701 \end{itemize} | 6703 \end{itemize} |
| 6702 | 6704 |
| 6703 \LMHash{} | 6705 \LMHash{} |
| 6704 Otherwise, let $NS = NS_n$. | 6706 Otherwise, let $NS = NS_n$. |
| 6705 It is a compile-time error if the current library declares a top-level member na
med $p$. | 6707 It is a compile-time error if the current library declares a top-level member na
med $p$. |
| 6706 | 6708 |
| 6709 The static type of the prefix object $p$ is a unique interface type that has tho
se members whose names and signatures are listed above. |
| 6710 % What is the static type of a prefix object. Need to state that is a(n anonymou
s) type that has members with the same names as signatures as above. |
| 6711 |
| 6707 % This is problematic, because it implies that p.T would be available even in a
scope that declared p. We really need to think of p as a single object with prop
erties p.T etc., except it isn't really that | 6712 % This is problematic, because it implies that p.T would be available even in a
scope that declared p. We really need to think of p as a single object with prop
erties p.T etc., except it isn't really that |
| 6708 % either. After all, p isn't actually available as a stand alone name. | 6713 % either. After all, p isn't actually available as a stand alone name. |
| 6709 | 6714 |
| 6710 \LMHash{} | 6715 \LMHash{} |
| 6711 Then, for each entry mapping key $k$ to declaration $d$ in $NS$, $d$ is made av
ailable in the top level scope of $L$ under the name $k$ unless either: | 6716 Then, for each entry mapping key $k$ to declaration $d$ in $NS$, $d$ is made av
ailable in the top level scope of $L$ under the name $k$ unless either: |
| 6712 \begin{itemize} | 6717 \begin{itemize} |
| 6713 \item | 6718 \item |
| 6714 a top-level declaration with the name $k$ exists in $L$, OR | 6719 a top-level declaration with the name $k$ exists in $L$, OR |
| 6715 \item a prefix clause of the form \AS{} $k$ is used in $L$. | 6720 \item a prefix clause of the form \AS{} $k$ is used in $L$. |
| 6716 \end{itemize} | 6721 \end{itemize} |
| (...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7836 | 7841 |
| 7837 The invariant that each normative paragraph is associated with a line | 7842 The invariant that each normative paragraph is associated with a line |
| 7838 containing the text \LMHash{} should be maintained. Extra occurrences | 7843 containing the text \LMHash{} should be maintained. Extra occurrences |
| 7839 of \LMHash{} can be added if needed, e.g., in order to make | 7844 of \LMHash{} can be added if needed, e.g., in order to make |
| 7840 individual \item{}s in itemized lists addressable. Each \LM.. command | 7845 individual \item{}s in itemized lists addressable. Each \LM.. command |
| 7841 must occur on a separate line. \LMHash{} must occur immediately | 7846 must occur on a separate line. \LMHash{} must occur immediately |
| 7842 before the associated paragraph, and \LMLabel must occur immediately | 7847 before the associated paragraph, and \LMLabel must occur immediately |
| 7843 after the associated \section{}, \subsection{} etc. | 7848 after the associated \section{}, \subsection{} etc. |
| 7844 | 7849 |
| 7845 ---------------------------------------------------------------------- | 7850 ---------------------------------------------------------------------- |
| OLD | NEW |