diff options
author | Zeev Suraski <zeev@php.net> | 2003-03-06 22:53:23 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 2003-03-06 22:53:23 +0000 |
commit | 0338111950edcec427cfa2f1610dd6efcd43a14c (patch) | |
tree | fcbc0fbbfed58389d438a29a51a16ecf22a90780 /Zend/zend_language_parser.y | |
parent | af4aa97d1ec853836f70601cb9666794476cd140 (diff) | |
download | php-git-0338111950edcec427cfa2f1610dd6efcd43a14c.tar.gz |
Require abstract classes to be explicitly declared 'abstract', in order to
avoid making developers traverse the entire class/interface hierarchy
before they can figure out whether a class is instantiable
(ok, so it makes sense :)
Diffstat (limited to 'Zend/zend_language_parser.y')
-rw-r--r-- | Zend/zend_language_parser.y | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index c25ce39f08..d81f62e908 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -294,13 +294,14 @@ unticked_class_declaration_statement: implements_list '{' class_statement_list - '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); } + '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); } ; class_entry_type: - T_CLASS { $$.u.constant.value.lval = T_CLASS; } - | T_INTERFACE { $$.u.constant.value.lval = T_INTERFACE; } + T_CLASS { $$.u.constant.value.lval = 0; } + | T_ABSTRACT T_CLASS { $$.u.constant.value.lval = ZEND_ACC_ABSTRACT_CLASS; } + | T_INTERFACE { $$.u.constant.value.lval = ZEND_ACC_INTERFACE; } ; namespace_declaration_statement: |