1
0
mirror of https://github.com/danog/PHP-Parser.git synced 2024-12-03 09:47:59 +01:00
PHP-Parser/lib/Node/Stmt/Class.php
nikic d82bbb3bea Throw ParseErrorException on error instead of error callback
As long as the parser isn't reentrant having an error callback doesn't really make sense and only complicates everything.
2011-06-03 17:44:23 +02:00

40 lines
1.4 KiB
PHP

<?php
/**
* @property int $type Type
* @property string $name Name
* @property null|Node_Name $extends Name of extended class
* @property array $implements Names of implemented interfaces
* @property array $stmts Statements
*/
class Node_Stmt_Class extends Node_Stmt
{
const MODIFIER_PUBLIC = 1;
const MODIFIER_PROTECTED = 2;
const MODIFIER_PRIVATE = 4;
const MODIFIER_STATIC = 8;
const MODIFIER_ABSTRACT = 16;
const MODIFIER_FINAL = 32;
public static function verifyModifier($a, $b) {
if ($a & 7 && $b & 7) {
throw new ParseErrorException('Multiple access type modifiers are not allowed');
}
if ($a & self::MODIFIER_ABSTRACT && $b & self::MODIFIER_ABSTRACT) {
throw new ParseErrorException('Multiple abstract modifiers are not allowed');
}
if ($a & self::MODIFIER_STATIC && $b & self::MODIFIER_STATIC) {
throw new ParseErrorException('Multiple static modifiers are not allowed');
}
if ($a & self::MODIFIER_FINAL && $b & self::MODIFIER_FINAL) {
throw new ParseErrorException('Multiple final modifiers are not allowed');
}
if ($a & 48 && $b & 48) {
throw new ParseErrorException('Cannot use the final modifier on an abstract class member"');
}
}
}