Exemple #1
0
 /**
  * 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);
                 }
             }
         }
     }
 }