]> Cypherpunks repositories - gostls13.git/commitdiff
clarify pointer forward decls per ian's suggestion
authorRobert Griesemer <gri@golang.org>
Fri, 22 Aug 2008 00:18:01 +0000 (17:18 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 22 Aug 2008 00:18:01 +0000 (17:18 -0700)
R=r
DELTA=13  (3 added, 7 deleted, 3 changed)
OCL=14406
CL=14406

doc/go_lang.txt

index 0a7363d8f007bb7f1726e6a3a9066f53c6bf955c..8be93c9f4baa9d3edada67a2cd959331f55a0fb1 100644 (file)
@@ -786,6 +786,7 @@ particular to dereference a channel pointer.
        var ch *chan int;
        ch = new(chan int);  // new returns type *chan int
 
+
 Function types
 ----
 
@@ -990,11 +991,13 @@ The following scope rules apply:
        1. No identifier may be declared twice in a single scope.
        2. A language entity may only be referred to within its scope.
        3. Field and method identifiers may be used only to select elements
-          from the corresponding types.  In effect, the field selector operator 
+          from the corresponding types, and only after those types are fully
+          declared.  In effect, the field selector operator
           '.' temporarily re-opens the scope of such identifiers (see Expressions).
        4. Forward declaration: A type of the form "*T" may be mentioned at a point
-          where "T" is not yet declared. The declaration of "T" must follow in the
-          same package and "T" must be visible at the end of the block containing "*T".
+          where "T" is not yet declared. The full declaration of "T" must be within a
+          block containing the forward declaration, and the forward declaration
+          refers to the innermost such full declaration.
 
 Global declarations optionally may be marked for export with the reserved word
 "export". Local declarations can never be exported.
@@ -1016,10 +1019,6 @@ TODO: Eventually we need to be able to restrict visibility of fields and methods
 Export should be identifier-based: an identifier is either exported or not, and thus
 visible or not in importing package.
 
-[OLD
-       Declaration = ConstDecl | TypeDecl | VarDecl | FunctionDecl | ExportDecl .
-END]
-
 
 Const declarations
 ----
@@ -1738,9 +1737,6 @@ if omitted, the first two examples above can be abbreviated:
        )
 
 
-TODO: should iota work in var, type, func decls too?
-
-
 Statements
 ----