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

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

Issue 1176853003: Make use of call on Function exempt from warnings, (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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 unified diff | Download patch
« 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.10}} 10 {\large Version 1.10}}
(...skipping 3855 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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 ----------------------------------------------------------------------
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