public function testImplicitCastToString()
 {
     $this->assertSame('int', (string) ReflectionType::createFromType(new Types\Integer(), false));
     $this->assertSame('string', (string) ReflectionType::createFromType(new Types\String_(), false));
     $this->assertSame('array', (string) ReflectionType::createFromType(new Types\Array_(), false));
     $this->assertSame('callable', (string) ReflectionType::createFromType(new Types\Callable_(), false));
     $this->assertSame('bool', (string) ReflectionType::createFromType(new Types\Boolean(), false));
     $this->assertSame('float', (string) ReflectionType::createFromType(new Types\Float_(), false));
     $this->assertSame('void', (string) ReflectionType::createFromType(new Types\Void_(), false));
     $this->assertSame('\\Foo\\Bar\\Baz', (string) ReflectionType::createFromType(new Types\Object_(new Fqsen('\\Foo\\Bar\\Baz')), false));
 }
 /**
  * Get the return type declaration (only for PHP 7+ code)
  *
  * @return ReflectionType|null
  */
 public function getReturnType()
 {
     $namespaceForType = $this instanceof ReflectionMethod ? $this->getDeclaringClass()->getNamespaceName() : $this->getNamespaceName();
     $typeHint = (new FindTypeFromAst())->__invoke($this->node->getReturnType(), $this->getLocatedSource(), $namespaceForType);
     if (null === $typeHint) {
         return null;
     }
     return ReflectionType::createFromType($typeHint, false);
 }
 /**
  * Get the ReflectionType instance representing the type declaration for
  * this parameter
  *
  * (note: this has nothing to do with DocBlocks).
  *
  * @return ReflectionType|null
  */
 public function getType()
 {
     if (null === $this->getTypeHint()) {
         return null;
     }
     return ReflectionType::createFromType($this->getTypeHint(), $this->allowsNull());
 }