summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2014-10-27 16:31:15 -0700
committerRobert Griesemer <gri@golang.org>2014-10-27 16:31:15 -0700
commit9041655bd3fd1274135ba6bb10f536f2490b4cc2 (patch)
tree5f65c8b7687e8f9f1b841964d49a22bc082dfd0e /doc
parent9a471d2e0e99beab38ff812e1c41512f8a184a9f (diff)
downloadgo-9041655bd3fd1274135ba6bb10f536f2490b4cc2.tar.gz
spec: permit parentheses around builtin function names
Not a language change. This is simply documenting the status quo which permits builtin function names to be parenthesized in calls; e.g., both len(s) and (((len)))(s) are accepted by all compilers and go/types. Changed the grammar by merging the details of BuiltinCall with ordinary Calls. Also renamed the Call production to Arguments which more clearly identifies that part of the grammar and also matches better with its counterpart on the declaration side (Parameters). The fact that the first argument can be a type (for builtins) or cannot be a type (for regular function calls) is expressed in the prose, no need to make the grammar more complicated. Fixes issue 9001. LGTM=iant, r, rsc R=r, rsc, iant, ken, dave CC=golang-codereviews https://codereview.appspot.com/160570043
Diffstat (limited to 'doc')
-rw-r--r--doc/go_spec.html15
1 files changed, 4 insertions, 11 deletions
diff --git a/doc/go_spec.html b/doc/go_spec.html
index ad645c1ff..050c06465 100644
--- a/doc/go_spec.html
+++ b/doc/go_spec.html
@@ -1,6 +1,6 @@
<!--{
"Title": "The Go Programming Language Specification",
- "Subtitle": "Version of October 23, 2014",
+ "Subtitle": "Version of October 27, 2014",
"Path": "/ref/spec"
}-->
@@ -2449,12 +2449,11 @@ Primary expressions are the operands for unary and binary expressions.
PrimaryExpr =
Operand |
Conversion |
- BuiltinCall |
PrimaryExpr Selector |
PrimaryExpr Index |
PrimaryExpr Slice |
PrimaryExpr TypeAssertion |
- PrimaryExpr Call .
+ PrimaryExpr Arguments .
Selector = "." identifier .
Index = "[" Expression "]" .
@@ -2462,8 +2461,7 @@ Slice = "[" ( [ Expression ] ":" [ Expression ] ) |
( [ Expression ] ":" Expression ":" Expression )
"]" .
TypeAssertion = "." "(" Type ")" .
-Call = "(" [ ArgumentList [ "," ] ] ")" .
-ArgumentList = ExpressionList [ "..." ] .
+Arguments = "(" [ ( ExpressionList | Type [ "," ExpressionList ] ) [ "..." ] [ "," ] ] ")" .
</pre>
@@ -3166,7 +3164,7 @@ the method.
<pre>
math.Atan2(x, y) // function call
var pt *Point
-pt.Scale(3.5) // method call with receiver pt
+pt.Scale(3.5) // method call with receiver pt
</pre>
<p>
@@ -5371,11 +5369,6 @@ so they can only appear in <a href="#Calls">call expressions</a>;
they cannot be used as function values.
</p>
-<pre class="ebnf">
-BuiltinCall = identifier "(" [ BuiltinArgs [ "," ] ] ")" .
-BuiltinArgs = Type [ "," ArgumentList ] | ArgumentList .
-</pre>
-
<h3 id="Close">Close</h3>
<p>