summaryrefslogtreecommitdiff
path: root/Zend/zend_language_parser.y
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2003-03-06 22:53:23 +0000
committerZeev Suraski <zeev@php.net>2003-03-06 22:53:23 +0000
commit0338111950edcec427cfa2f1610dd6efcd43a14c (patch)
treefcbc0fbbfed58389d438a29a51a16ecf22a90780 /Zend/zend_language_parser.y
parentaf4aa97d1ec853836f70601cb9666794476cd140 (diff)
downloadphp-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.y7
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: