public function testFromNode()
 {
     $node = new Node\Scalar\LNumber(5);
     $exception = InvalidAbstractFunctionNodeType::fromNode($node);
     $this->assertInstanceOf(InvalidAbstractFunctionNodeType::class, $exception);
     $this->assertSame(sprintf('Node for "%s" must be "%s" or "%s", was a "%s"', ReflectionFunctionAbstract::class, Node\Stmt\ClassMethod::class, Node\FunctionLike::class, Node\Scalar\LNumber::class), $exception->getMessage());
 }
 /**
  * Populate the common elements of the function abstract.
  *
  * @param Reflector $reflector
  * @param Node\Stmt\ClassMethod|Node\FunctionLike|Node\Stmt|Node $node
  * @param LocatedSource $locatedSource
  * @param NamespaceNode|null $declaringNamespace
  */
 protected function populateFunctionAbstract(Reflector $reflector, Node $node, LocatedSource $locatedSource, NamespaceNode $declaringNamespace = null)
 {
     if (!$node instanceof Node\Stmt\ClassMethod && !$node instanceof Node\FunctionLike) {
         throw Exception\InvalidAbstractFunctionNodeType::fromNode($node);
     }
     $this->reflector = $reflector;
     $this->node = $node;
     $this->locatedSource = $locatedSource;
     $this->declaringNamespace = $declaringNamespace;
     $this->setNodeOptionalFlag();
 }