1
0
mirror of https://github.com/danog/PHP-Parser.git synced 2024-11-30 04:19:30 +01:00

Merge branch '1.x'

This commit is contained in:
Nikita Popov 2015-07-05 20:16:41 +02:00
commit 90ab32f046
4 changed files with 36 additions and 2 deletions

View File

@ -75,7 +75,8 @@ class ClassMethod extends Node\Stmt implements FunctionLike
} }
public function isPublic() { public function isPublic() {
return ($this->type & Class_::MODIFIER_PUBLIC) !== 0 || $this->type === 0; return ($this->type & Class_::MODIFIER_PUBLIC) !== 0
|| ($this->type & Class_::VISIBILITY_MODIFER_MASK) === 0;
} }
public function isProtected() { public function isProtected() {

View File

@ -38,7 +38,8 @@ class Property extends Node\Stmt
} }
public function isPublic() { public function isPublic() {
return ($this->type & Class_::MODIFIER_PUBLIC) !== 0 || $this->type === 0; return ($this->type & Class_::MODIFIER_PUBLIC) !== 0
|| ($this->type & Class_::VISIBILITY_MODIFER_MASK) === 0;
} }
public function isProtected() { public function isProtected() {

View File

@ -36,4 +36,28 @@ class ClassMethodTest extends \PHPUnit_Framework_TestCase
array('static'), array('static'),
); );
} }
/**
* Checks that implicit public modifier detection for method is working
*
* @dataProvider implicitPublicModifiers
*
* @param integer $modifier Node type modifier
*/
public function testImplicitPublic($modifier)
{
$node = new ClassMethod('foo', array(
'type' => constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier))
));
$this->assertTrue($node->isPublic(), 'Node should be implicitly public');
}
public function implicitPublicModifiers() {
return array(
array('abstract'),
array('final'),
array('static'),
);
}
} }

View File

@ -25,6 +25,14 @@ class PropertyTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($node->isStatic()); $this->assertFalse($node->isStatic());
} }
public function testStaticImplicitlyPublic() {
$node = new Property(Class_::MODIFIER_STATIC, array());
$this->assertTrue($node->isPublic());
$this->assertFalse($node->isProtected());
$this->assertFalse($node->isPrivate());
$this->assertTrue($node->isStatic());
}
public function provideModifiers() { public function provideModifiers() {
return array( return array(
array('public'), array('public'),