/** * @param RuntimeConfiguration $configuration * @param ClassDefinition|null $classDefinition * @param MethodDefinition $methodDefinition * @param Parameter $documentedParameter * @param Parameter $nativeParameter * * @return Parameter */ protected function mergeParameter(RuntimeConfiguration $configuration, ClassDefinition $classDefinition = null, MethodDefinition $methodDefinition, Parameter $documentedParameter, Parameter $nativeParameter) { $this->typeCheck->mergeParameter(func_get_args()); if ($documentedParameter->name() !== $nativeParameter->name()) { $this->handleError(new DocumentedParameterNameMismatch($classDefinition, $methodDefinition, $nativeParameter->name(), $documentedParameter->name())); return $nativeParameter; } if ($documentedParameter->isByReference() !== $nativeParameter->isByReference()) { $this->handleError(new DocumentedParameterByReferenceMismatch($classDefinition, $methodDefinition, $nativeParameter->name(), $nativeParameter->isByReference())); } return new Parameter($documentedParameter->name(), $this->mergeType($configuration, $classDefinition, $methodDefinition, $documentedParameter->name(), $documentedParameter->type(), $nativeParameter->type()), $documentedParameter->description(), $nativeParameter->isOptional(), $documentedParameter->isByReference()); }
/** * @param Parameter $parameter * * @return mixed */ public function visitParameter(Parameter $parameter) { $this->typeCheck->visitParameter(func_get_args()); return new Parameter($parameter->name(), $parameter->type()->accept($this->typeResolver()), $parameter->description(), $parameter->isOptional(), $parameter->isByReference()); }