/** * This method parses a function declaration. * * @return \PDepend\Source\AST\ASTFunction * @since 0.9.5 */ private function parseFunctionDeclaration() { $this->consumeComments(); // Next token must be the function identifier $functionName = $this->parseFunctionName(); $function = $this->builder->buildFunction($functionName); $function->setCompilationUnit($this->compilationUnit); $function->setId($this->idBuilder->forFunction($function)); $this->parseCallableDeclaration($function); // First check for an existing namespace if ($this->namespaceName !== null) { $packageName = $this->namespaceName; } elseif ($this->packageName !== Builder::DEFAULT_NAMESPACE) { $packageName = $this->packageName; } else { $packageName = $this->globalPackageName; } $this->builder->buildNamespace($packageName)->addFunction($function); // Store function in source file, because we need them during the file's // __wakeup() phase for function declarations within another function or // method declaration. $this->compilationUnit->addChild($function); return $function; }
/** * testBuilderCreatesCaseInSensitiveMethodIdentifiers * * @return void */ public function testBuilderCreatesCaseInSensitiveMethodIdentifiers() { $compilationUnit = new ASTCompilationUnit(__FILE__); $compilationUnit->setId(__FUNCTION__); $class = new ASTClass(__FUNCTION__); $class->setCompilationUnit($compilationUnit); $method0 = new ASTMethod(__FUNCTION__); $method0->setParent($class); $method1 = new ASTMethod(strtolower(__FUNCTION__)); $method1->setParent($class); $builder0 = new IdBuilder(); $builder1 = new IdBuilder(); $this->assertEquals($builder0->forMethod($method0), $builder1->forMethod($method1)); }