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

Unified Diff: docs/language/dartLangSpec.tex

Issue 800413003: Main function of a script can be function valued getter. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/language/dartLangSpec.tex
===================================================================
--- docs/language/dartLangSpec.tex (revision 42379)
+++ docs/language/dartLangSpec.tex (working copy)
@@ -7,7 +7,7 @@
\usepackage{lmodern}
\newcommand{\code}[1]{{\sf #1}}
\title{Dart Programming Language Specification \\
-{\large Version 1.6}}
+{\large Version 1.9}}
%\author{The Dart Team}
% For information about Location Markers (and in particular the
@@ -1115,16 +1115,14 @@
\begin{dartCode}
class Base \{
int get one =$>$ 1;
- \}
+ \}
- abstract class Mix \{
+ abstract class Mix \{
int get one;
int get two =$>$ one + one;
- \}
+ \}
- class C extends Base with Mix \{
- \}
-\}
+ class C extends Base with Mix \{ \}
\end{dartCode}
\rationale{At run time, the concrete method \cd{one} declared in \cd{Base} will be executed, and no problem should arise. Therefore no warning should be issued and so we suppress warnings if a corresponding concrete member exists in the hierarchy. }
@@ -1805,7 +1803,7 @@
\item Superinterface members are not inherited by a class, but are inherited by its implicit interface. Interfaces have their own inheritance rules (\ref{interfaceInheritanceAndOverriding}).
\item A member is abstract if it has no body and is not labeled \EXTERNAL{} (\ref{abstractInstanceMembers}, \ref{externalFunctions}).
\item A class is abstract iff it is explicitly labeled \ABSTRACT{}.% or if it declares (not just inherits) an abstract member (\ref{classes}).
-\item It is a static warning a concrete class has an abstract member (declared or inherited).
+\item It is a static warning if a concrete class has an abstract member (declared or inherited).
\item It is a static warning and a dynamic error to call a non-factory constructor of an abstract class (\ref{new}).
\item If a class defines an instance member named $m$, and any of its superinterfaces have a member named $m$, the interface of the class overrides $m$.
\item An interface inherits all members of its superinterfaces that are not overridden and not members of multiple superinterfaces.
@@ -6388,7 +6386,8 @@
\LMLabel{scripts}
\LMHash{}
-A {\em script} is a library whose exported namespace (\ref{exports}) includes a top-level function \code{main}.
+A {\em script} is a library whose exported namespace (\ref{exports}) includes a top-level member named \code{main}. It is a static warning if the static type of \code{main} is not assignable to a function type or is a function type with more than two required parameters.
+
A script $S$ may be executed as follows:
\LMHash{}
@@ -6399,7 +6398,11 @@
\end{enumerate}
\LMHash{}
-It is a run time error if $S$ does not declare or import a top-level function \code{main}. It is a static warning if \code{main} has more than two required parameters.
+It is a run time error if $S$ does not declare or export either:
+\begin{itemize}
+\item A top-level function named \code{main}, or
+\item A top-level getter named \code{main} that returns a function.
+\end{itemize}
\commentary {
Note that if \code{main} requires more than two arguments, a run time error will occur.
« 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