com php-langspec: Multiple constants can be defined at once: spec/14-classes.md spec/19-grammar.md

[email protected] (Nikita Popov) Mon, 11 Jul 2016 18:32:38 +0000
Newsgroups php.standards.cvs
Message-ID <[email protected]>
Commit:    2ab435e7445d212aeee66f3d7e0d9708980e8faf
Author:    Nikita Popov <[email protected]>         Mon, 11 Jul 2016 20:32:38 +0200
Parents:   19e44137fe0bb8cde8f52a9780524e6eec916164
Branches:  master

Link:       http://git.php.net/?p=php-langspec.git;a=commitdiff;h=2ab435e7445d212aeee66f3d7e0d9708980e8faf

Log:
Multiple constants can be defined at once

Changed paths:
  M  spec/14-classes.md
  M  spec/19-grammar.md


Diff:
diff --git a/spec/14-classes.md b/spec/14-classes.md
index 443b713..281a85a 100644
--- a/spec/14-classes.md
+++ b/spec/14-classes.md
@@ -386,10 +386,17 @@ Widget::__callStatic('sMethod', array(NULL, 1.234))
 
 <pre>
   <i>const-declaration:</i>
-    const  <i>name</i>  =  <i>constant-expression</i>   ;
+    const   <i>const-elements</i>   ;
 
   <i>class-const-declaration:</i>
-    <i>visibility-modifier<sub>opt</sub></i>  const  <i>name</i>  =  <i>constant-expression</i>   ;
+    <i>visibility-modifier<sub>opt</sub></i>   const   <i>const-elements</i>   ;
+
+  <i>const-elements:</i>
+    <i>const-element</i>
+    <i>const-elements   const-element</i>
+
+  <i>const-element:</i>
+    <i>name</i>   =   <i>constant-expression</i>
 </pre>
 
 **Defined elsewhere**
@@ -403,8 +410,8 @@ Widget::__callStatic('sMethod', array(NULL, 1.234))
 A *const-declaration* must only appear at the top level of a script, and
 must not redefine an existing [c-constant](06-constants.md#general).
 
-A *class-const-declaration* must be inside a [*class-definition*](#class-members) or be an
-[*interface constant*](15-interfaces.md#interface-members).
+A *class-const-declaration* must be inside a [*class-declaration*](#class-members) or
+[*interface-declaration*](15-interfaces.md#interface-members).
 
 A class constant must not have a `static` specifier.
 
@@ -413,6 +420,7 @@ A class constant must not have a `static` specifier.
 A *const-declaration* defines a c-constant.
 
 If *visibility-modifier* for a class constant is omitted, `public` is assumed.
+The *visibility-modifier* applies to all constants defined in the *const-elements* list.
 
 All constants are implicitly `static`.
 
diff --git a/spec/19-grammar.md b/spec/19-grammar.md
index b4d4d9e..3010829 100644
--- a/spec/19-grammar.md
+++ b/spec/19-grammar.md
@@ -1105,10 +1105,17 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
      <i>trait-use-clause</i>
 
   <i>const-declaration:</i>
-    const  <i>name</i>  =  <i>constant-expression</i>   ;
+    const   <i>const-elements</i>   ;
 
   <i>class-const-declaration:</i>
-    <i>visibility-modifier<sub>opt</sub></i>  const  <i>name</i>  =  <i>constant-expression</i>   ;
+    <i>visibility-modifier<sub>opt</sub></i>   const   <i>const-elements</i>   ;
+
+  <i>const-elements:</i>
+    <i>const-element</i>
+    <i>const-elements   const-element</i>
+
+  <i>const-element:</i>
+    <i>name</i>   =   <i>constant-expression</i>
 
   <i>property-declaration:</i>
     <i>property-modifier   variable-name   property-initializer<sub>opt</sub></i>  ;