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

Unified Diff: docs/language/dartLangSpec.tex

Issue 33893004: Revert setters for final variables. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 2 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 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 28954)
+++ docs/language/dartLangSpec.tex (working copy)
@@ -511,6 +511,9 @@
\subsubsection{Changes Since Version 0.7}
+
+\ref{variables}: Final variables no longer introduce setters.
+
\ref{new}: Instantiating subclasses of malbounded types is a dynamic error.
\ref{leastUpperBounds}: Extended LUBs to all types.
@@ -821,11 +824,14 @@
If a variable declaration does not explicitly specify a type, the type of the declared variable(s) is \DYNAMIC{}, the unknown type (\ref{typeDynamic}).
-Static and instance variable declarations always induce implicit getters and setters.
+A variable is {\em mutable} if it is not final.
+Static and instance variable declarations always induce implicit getters. If the variable is mutable it also introduces an implicit setter.
The scope into which the implicit getters and setters are introduced depends on the kind of variable declaration involved.
-A library variable introduces a getter and a setter into the top level scope of the enclosing library. A static class variable introduces a static getter and a static setter into the immediately enclosing class. An instance variable introduces an instance getter and an instance setter into the immediately enclosing class.
+A library variable introduces a getter into the top level scope of the enclosing library. A static class variable introduces a static getter into the immediately enclosing class. An instance variable introduces an instance getter into the immediately enclosing class.
+A mutable library variable introduces a setter into the top level scope of the enclosing library. A mutable static class variable introduces a static setter into the immediately enclosing class. A mutable instance variable introduces an instance setter into the immediately enclosing class.
+
Local variables are added to the innermost enclosing scope. They do not induce getters and setters. A local variable may only be referenced at a source code location that is after its initializer, if any, is complete, or a compile-time error occurs. The error may be reported either at the point where the premature reference occurs, or at the variable declaration.
\rationale {
@@ -909,25 +915,7 @@
whose execution sets the value of $v$ to the incoming argument $x$.
-% A final variable introduces a setter that throws and causes a type warning
-A final or constant variable declaration of the form \code{\FINAL{} $T$ $v$;}, \code{\FINAL{} $T$ $v$ = $e$;} or the form \code{\CONST{} $T$ $v$ = $e$;} always induces an implicit setter function (\ref{setters}) with signature
-
- \VOID{} \SET{} $v=(T$ $x)$
-
-whose execution causes a runtime exception. It is a static warning to invoke such a setter.
-
-A final variable declaration of the form \code{\FINAL{} $v$;}, \code{\FINAL{} $v$ = $e$;} or the form \code{\CONST{} $v$ = $e$;} always induces an implicit setter function with signature
-
-\SET{} $v=(x)$
-
-whose execution causes a runtime exception. It is a static warning to invoke such a setter. % maybe redundant with rules for assignment?
-
-\rationale{
-Creating a setter that may not be used may seem pointless, but it prevents situations where a setter from an enclosing scope might be accidentally accessed from a scope that defines an immutable variable.
-}
-
-
\subsection{Evaluation of Implicit Variable Getters}
\label{evaluationOfImplicitVariableGetters}
« 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