]> Cypherpunks repositories - gostls13.git/commitdiff
spec: remove need for separate Function production (cleanup)
authorRobert Griesemer <gri@golang.org>
Thu, 1 Feb 2018 22:08:45 +0000 (14:08 -0800)
committerRobert Griesemer <gri@golang.org>
Fri, 2 Feb 2018 00:22:16 +0000 (00:22 +0000)
The EBNF production

Function = Signature FunctionBody .

was used in FunctionDecl, MethodDecl, and FunctionLit, but only
for the latter it shortened the syntax slightly.

This change "inlines" Function which simplifies FunctionDecl and
MethodDecl and gets rid of the Function production.

This has no impact on the specified language. Also, the Function
production is never referred to by the prose, so it's safe to
remove it from the spec.

Finally, neither go/ast nor go/parser have a representation of
this production via a corresponding node or parse function, so
no possibly valuable documentation is lost, either.

Change-Id: Ia2875d31c6ec2d2079081ef481e50bad4f43c694
Reviewed-on: https://go-review.googlesource.com/91515
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
doc/go_spec.html

index 33b66cb9053699d614a7ace12538ded53ce7881e..9a166ccdf40077502a94935a2bed9a78947d273c 100644 (file)
@@ -1,6 +1,6 @@
 <!--{
        "Title": "The Go Programming Language Specification",
-       "Subtitle": "Version of January 23, 2018",
+       "Subtitle": "Version of February 1, 2018",
        "Path": "/ref/spec"
 }-->
 
@@ -2148,9 +2148,8 @@ to a function.
 </p>
 
 <pre class="ebnf">
-FunctionDecl = "func" FunctionName ( Function | Signature ) .
+FunctionDecl = "func" FunctionName Signature [ FunctionBody ] .
 FunctionName = identifier .
-Function     = Signature FunctionBody .
 FunctionBody = Block .
 </pre>
 
@@ -2196,7 +2195,7 @@ and associates the method with the receiver's <i>base type</i>.
 </p>
 
 <pre class="ebnf">
-MethodDecl = "func" Receiver MethodName ( Function | Signature ) .
+MethodDecl = "func" Receiver MethodName Signature [ FunctionBody ] .
 Receiver   = Parameters .
 </pre>
 
@@ -2518,7 +2517,7 @@ A function literal represents an anonymous <a href="#Function_declarations">func
 </p>
 
 <pre class="ebnf">
-FunctionLit = "func" Function .
+FunctionLit = "func" Signature FunctionBody .
 </pre>
 
 <pre>