/** * Check dependencies * * @param Compiler $compiler */ public function checkDependencies(Compiler $compiler) { $classDefinition = $this->_classDefinition; $extendedClass = $classDefinition->getExtendsClass(); if ($extendedClass) { if ($classDefinition->getType() == 'class') { if ($compiler->isClass($extendedClass)) { $extendedDefinition = $compiler->getClassDefinition($extendedClass); $classDefinition->setExtendsClassDefinition($extendedDefinition); } else { if ($compiler->isInternalClass($extendedClass)) { $extendedDefinition = $compiler->getInternalClassDefinition($extendedClass); $classDefinition->setExtendsClassDefinition($extendedDefinition); } else { throw new CompilerException('Cannot locate class "' . $extendedClass . '" when extending class "' . $classDefinition->getCompleteName() . '"', $this->_originalNode); } } } else { if ($compiler->isInterface($extendedClass)) { $extendedDefinition = $compiler->getClassDefinition($extendedClass); $classDefinition->setExtendsClassDefinition($extendedDefinition); } else { if ($compiler->isInternalInterface($extendedClass)) { $extendedDefinition = $compiler->getInternalClassDefinition($extendedClass); $classDefinition->setExtendsClassDefinition($extendedDefinition); } else { throw new CompilerException('Cannot locate interface "' . $extendedClass . '" when extending interface "' . $classDefinition->getCompleteName() . '"', $this->_originalNode); } } } } }