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

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

Issue 1184583002: Make sure we use lexical scope consistently when dealing with prefixes. (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 3652 matching lines...) Expand 10 before | Expand all | Expand 10 after
3663 \LMHash{} 3663 \LMHash{}
3664 An unqualified function invocation $i$ has the form 3664 An unqualified function invocation $i$ has the form
3665 3665
3666 $id(a_1, \ldots, a_n, x_{n+1}: a_{n+1}, \ldots, x_{n+k}: a_{n+k})$, 3666 $id(a_1, \ldots, a_n, x_{n+1}: a_{n+1}, \ldots, x_{n+k}: a_{n+k})$,
3667 3667
3668 where $id$ is an identifier. 3668 where $id$ is an identifier.
3669 3669
3670 \LMHash{} 3670 \LMHash{}
3671 If there exists a lexically visible declaration named $id$, let $f_{id}$ be the innermost such declaration. Then: 3671 If there exists a lexically visible declaration named $id$, let $f_{id}$ be the innermost such declaration. Then:
3672 \begin{itemize} 3672 \begin{itemize}
3673 \item
3674 If $f_{id}$ is a prefix object, a compile-time error occurs.
3673 \item 3675 \item
3674 If $f_{id}$ is a local function, a library function, a library or static getter or a variable then $i$ is interpreted as a function expression invocation (\ref {functionExpressionInvocation}). 3676 If $f_{id}$ is a local function, a library function, a library or static getter or a variable then $i$ is interpreted as a function expression invocation (\ref {functionExpressionInvocation}).
3675 \item 3677 \item
3676 Otherwise, if $f_{id}$ is a static method of the enclosing class $C$, $i$ is equ ivalent to $C.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k}) $. 3678 Otherwise, if $f_{id}$ is a static method of the enclosing class $C$, $i$ is equ ivalent to $C.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k}) $.
3677 \item Otherwise, $f_{id}$ is considered equivalent to the ordinary method invoca tion $\THIS{}.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k}) $. 3679 \item Otherwise, $f_{id}$ is considered equivalent to the ordinary method invoca tion $\THIS{}.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k}) $.
3678 \end{itemize} 3680 \end{itemize}
3679 3681
3680 %Otherwise, if there is an accessible (\ref{privacy}) static method named $id$ d eclared in a superclass $S$ of the immediately enclosing class $C$ then i is equ ivalent to the static method invocation $S.id(a_1, \ldots, a_n, x_{n+1}: a_{n+1} , \ldots, x_{n+k}: a_{n+k})$.
3681
3682 %\rationale{
3683 %Unqualified access to static methods of superclasses is inconsistent with the i dea that static methods are not inherited. It is not particularly necessary and may be restricted in future versions.
3684 %}
3685
3686 \LMHash{} 3682 \LMHash{}
3687 Otherwise, if $i$ occurs inside a top level or static function (be it function, method, getter, or setter) or variable initializer, evaluation of $i$ causes a \cd{NoSuchMethodError} to be thrown. 3683 Otherwise, if $i$ occurs inside a top level or static function (be it function, method, getter, or setter) or variable initializer, evaluation of $i$ causes a \cd{NoSuchMethodError} to be thrown.
3688 3684
3689 \LMHash{} 3685 \LMHash{}
3690 If $i$ does not occur inside a top level or static function, $i$ is equivalent t o $\THIS{}.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$. 3686 If $i$ does not occur inside a top level or static function, $i$ is equivalent t o $\THIS{}.id(a_1, \ldots , a_n, x_{n+1}: a_{n+1}, \ldots , x_{n+k}: a_{n+k})$.
3691 3687
3688
3692 % Should also say: 3689 % Should also say:
3693 % It is a static warning if $i$ occurs inside a top level or static function (b e it function, method, getter, or setter) or variable initializer and there is no lexically visible declaration named $id$ in scope. 3690 % It is a static warning if $i$ occurs inside a top level or static function (b e it function, method, getter, or setter) or variable initializer and there is no lexically visible declaration named $id$ in scope.
3694 3691
3695 3692
3696 3693
3697 3694
3698 3695
3699 \subsubsection{ Function Expression Invocation} 3696 \subsubsection{ Function Expression Invocation}
3700 \LMLabel{functionExpressionInvocation} 3697 \LMLabel{functionExpressionInvocation}
3701 3698
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after
4399 %If there is neither a local variable declaration with name $v$ nor a setter dec laration with name $v=$ in the lexical scope enclosing $a$, then: 4396 %If there is neither a local variable declaration with name $v$ nor a setter dec laration with name $v=$ in the lexical scope enclosing $a$, then:
4400 %\begin{itemize} 4397 %\begin{itemize}
4401 % \item If $a$ occurs inside a top level or static function (be it function, me thod, getter, or setter) or variable initializer, evaluation of $a$ causes $e$ to be evaluated, after which a \code{NoSuchMethodError} is thrown. 4398 % \item If $a$ occurs inside a top level or static function (be it function, me thod, getter, or setter) or variable initializer, evaluation of $a$ causes $e$ to be evaluated, after which a \code{NoSuchMethodError} is thrown.
4402 % \item Otherwise, the assignment is equivalent to the assignment \code{ \THIS{} .$v$ = $e$}. 4399 % \item Otherwise, the assignment is equivalent to the assignment \code{ \THIS{} .$v$ = $e$}.
4403 % \end{itemize} 4400 % \end{itemize}
4404 4401
4405 %Otherwise 4402 %Otherwise
4406 4403
4407 \LMHash{} 4404 \LMHash{}
4408 Let $d$ be the innermost declaration whose name is $v$ or $v=$, if it exists. 4405 Let $d$ be the innermost declaration whose name is $v$ or $v=$, if it exists.
4406 It is a compile-time error if $d$ denotes a prefix object.
4409 4407
4410 \LMHash{} 4408 \LMHash{}
4411 If $d$ is the declaration of a local variable, the expression $e$ is evaluated t o an object $o$. Then, the variable $v$ is bound to $o$ unless $v$ is \FINAL{} o r \CONST{}, in which case a dynamic error occurs. 4409 If $d$ is the declaration of a local variable, the expression $e$ is evaluated t o an object $o$. Then, the variable $v$ is bound to $o$ unless $v$ is \FINAL{} o r \CONST{}, in which case a dynamic error occurs.
4412 If no error occurs, the value of the assignment expression is $o$. 4410 If no error occurs, the value of the assignment expression is $o$.
4413 4411
4414 % add local functions per bug 23218 4412 % add local functions per bug 23218
4415 4413
4416 \LMHash{} 4414 \LMHash{}
4417 If $d$ is the declaration of a library variable, top level getter or top level s etter, the expression $e$ is evaluated to an object $o$. Then the setter $v=$ is invoked with its formal parameter bound to $o$. The value of the assignment exp ression is $o$. 4415 If $d$ is the declaration of a library variable, top level getter or top level s etter, the expression $e$ is evaluated to an object $o$. Then the setter $v=$ is invoked with its formal parameter bound to $o$. The value of the assignment exp ression is $o$.
4418 4416
(...skipping 3387 matching lines...) Expand 10 before | Expand all | Expand 10 after
7806 7804
7807 The invariant that each normative paragraph is associated with a line 7805 The invariant that each normative paragraph is associated with a line
7808 containing the text \LMHash{} should be maintained. Extra occurrences 7806 containing the text \LMHash{} should be maintained. Extra occurrences
7809 of \LMHash{} can be added if needed, e.g., in order to make 7807 of \LMHash{} can be added if needed, e.g., in order to make
7810 individual \item{}s in itemized lists addressable. Each \LM.. command 7808 individual \item{}s in itemized lists addressable. Each \LM.. command
7811 must occur on a separate line. \LMHash{} must occur immediately 7809 must occur on a separate line. \LMHash{} must occur immediately
7812 before the associated paragraph, and \LMLabel must occur immediately 7810 before the associated paragraph, and \LMLabel must occur immediately
7813 after the associated \section{}, \subsection{} etc. 7811 after the associated \section{}, \subsection{} etc.
7814 7812
7815 ---------------------------------------------------------------------- 7813 ----------------------------------------------------------------------
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