Bug when generating doc of function with optional parameter and default value

77 views
Skip to first unread message

Sébastien Ratez

unread,
Dec 21, 2014, 10:07:20 PM12/21/14
to api...@googlegroups.com

/**
 * Abstract class used for the LogType enumeration.
 */
abstract class LogType {

const LOG = "LOGTYPE_LOG";
const ERROR = "LOGTYPE_ERR";
const CRITIC = "LOGTYPE_CRT";
const PAYPAL = "LOGTYPE_PP";
const GENERATOR = "LOGTYPE_GEN";

}

/**
 * Adds a log to the log files.
 * @param string $I_sData The log to be added
 * @param LogType $I_eLogType The log type
 * @param boolean $I_bJsMode Whether the log is coming from the client side (js)
 * @return void
 */
function addLog($I_sData,$I_eLogType = LogType::LOG,$I_bJsMode = false) {
}

This will crash the generator. Using a plain string value instead of LogType::LOG works.

 exception 'ErrorException' with message 'Argument 2 passed to ApiGen\Generator\Resolvers\ElementResolver::resolveContextForClassProperty() must be an instance of ApiGen\Reflection\ReflectionClass, instance of ApiGen\Reflection\ReflectionFunction given, called in phar:///usr/local/bin/apigen/src/ApiGen/Generator/Resolvers/ElementResolver.php on line 200 and defined' in phar:///usr/local/bin/apigen/src/ApiGen/Generator/Resolvers/ElementResolver.php:344
Stack trace:
#0 phar:///usr/local/bin/apigen/src/ApiGen/Generator/Resolvers/ElementResolver.php(344): Tracy\Debugger::_errorHandler(4096, 'Argument 2 pass...', 'phar:///usr/loc...', 344, Array)
#1 phar:///usr/local/bin/apigen/src/ApiGen/Generator/Resolvers/ElementResolver.php(200): ApiGen\Generator\Resolvers\ElementResolver->resolveContextForClassProperty('LogType::LOG', Object(ApiGen\Reflection\ReflectionFunction), 7)
#2 phar:///usr/local/bin/apigen/src/ApiGen/Templating/Filters/UrlFilters.php(265): ApiGen\Generator\Resolvers\ElementResolver->resolveElement('LogType::LOG', Object(ApiGen\Reflection\ReflectionFunction), NULL)
#3 phar:///usr/local/bin/apigen/src/ApiGen/Templating/Filters/UrlFilters.php(484): ApiGen\Templating\Filters\UrlFilters->resolveLink('LogType::LOG', Object(ApiGen\Reflection\ReflectionFunction))
#4 [internal function]: ApiGen\Templating\Filters\UrlFilters->highlightPhp('LogType::LOG', Object(ApiGen\Reflection\ReflectionFunction))
#5 phar:///usr/local/bin/apigen/src/ApiGen/Templating/Filters/Filters.php(31): call_user_func_array(Array, Array)
#6 [internal function]: ApiGen\Templating\Filters\Filters->loader('highlightphp', 'LogType::LOG', Object(ApiGen\Reflection\ReflectionFunction))
#7 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Engine.php(250): call_user_func_array(Array, Array)
#8 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Template.php(112): Latte\Engine->invokeFilter('highlightPHP', Array)
#9 /tmp/_apigen.temp/cache/latte/bin-apigen-src-templates-default-function-latte-e81469a6c7f118ed59d7711a75c1bd91.php(61): Latte\Template->__call('highlightPHP', Array)
#10 /tmp/_apigen.temp/cache/latte/bin-apigen-src-templates-default-function-latte-e81469a6c7f118ed59d7711a75c1bd91.php(61): Latte\Template->highlightPHP('LogType::LOG', Object(ApiGen\Reflection\ReflectionFunction))
#11 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Macros/BlockMacros.php(334): _lb6446631d1c_content(Object(stdClass), Array)
#12 /tmp/_apigen.temp/cache/latte/bin-apigen-src-templates-default-layout-latte-9a2a9fe59e6b13fc6947976ce2d17d4a.php(220): Latte\Macros\BlockMacros::callBlock(Object(stdClass), 'content', Array)
#13 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Engine.php(184): include('/tmp/_apigen.te...')
#14 [internal function]: Latte\Engine->Latte\{closure}('/tmp/_apigen.te...', Array)
#15 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Engine.php(185): call_user_func(Object(Closure), '/tmp/_apigen.te...', Array)
#16 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Engine.php(91): Latte\Engine->loadCacheFile('phar:///usr/loc...', Array)
#17 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Template.php(100): Latte\Engine->render('phar:///usr/loc...', Array)
#18 /tmp/_apigen.temp/cache/latte/bin-apigen-src-templates-default-function-latte-e81469a6c7f118ed59d7711a75c1bd91.php(135): Latte\Template->renderChildTemplate('layout.latte', Array)
#19 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Engine.php(184): include('/tmp/_apigen.te...')
#20 [internal function]: Latte\Engine->Latte\{closure}('/tmp/_apigen.te...', Array)
#21 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Engine.php(185): call_user_func(Object(Closure), '/tmp/_apigen.te...', Array)
#22 phar:///usr/local/bin/apigen/vendor/latte/latte/src/Latte/Engine.php(91): Latte\Engine->loadCacheFile('phar:///usr/loc...', Array)
#23 phar:///usr/local/bin/apigen/vendor/nette/application/src/Bridges/ApplicationLatte/Template.php(52): Latte\Engine->render('phar:///usr/loc...', Array)
#24 phar:///usr/local/bin/apigen/vendor/nette/application/src/Bridges/ApplicationLatte/Template.php(65): Nette\Bridges\ApplicationLatte\Template->render()
#25 phar:///usr/local/bin/apigen/src/ApiGen/Templating/Template.php(61): Nette\Bridges\ApplicationLatte\Template->__toString(true)
#26 phar:///usr/local/bin/apigen/src/ApiGen/Generator/TemplateGenerators/FunctionElementGenerator.php(65): ApiGen\Templating\Template->save()
#27 phar:///usr/local/bin/apigen/src/ApiGen/Generator/GeneratorQueue.php(39): ApiGen\Generator\TemplateGenerators\FunctionElementGenerator->generate()
#28 phar:///usr/local/bin/apigen/src/ApiGen/Command/GenerateCommand.php(200): ApiGen\Generator\GeneratorQueue->run()
#29 phar:///usr/local/bin/apigen/src/ApiGen/Command/GenerateCommand.php(166): ApiGen\Command\GenerateCommand->generate(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#30 phar:///usr/local/bin/apigen/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(252): ApiGen\Command\GenerateCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#31 phar:///usr/local/bin/apigen/vendor/symfony/console/Symfony/Component/Console/Application.php(874): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#32 phar:///usr/local/bin/apigen/vendor/kdyby/console/src/Kdyby/Console/Application.php(152): Symfony\Component\Console\Application->doRunCommand(Object(ApiGen\Command\GenerateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#33 phar:///usr/local/bin/apigen/vendor/symfony/console/Symfony/Component/Console/Application.php(195): Kdyby\Console\Application->doRunCommand(Object(ApiGen\Command\GenerateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#34 phar:///usr/local/bin/apigen/src/ApiGen/Console/Application.php(61): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#35 phar:///usr/local/bin/apigen/vendor/symfony/console/Symfony/Component/Console/Application.php(126): ApiGen\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#36 phar:///usr/local/bin/apigen/vendor/kdyby/console/src/Kdyby/Console/Application.php(85): Symfony\Component\Console\Application->run(NULL, Object(Symfony\Component\Console\Output\ConsoleOutput))
#37 phar:///usr/local/bin/apigen/src/apigen.php(54): Kdyby\Console\Application->run()
#38 /usr/local/bin/apigen(12): require('phar:///usr/loc...')
#39 {main}

nelson6e...@gmail.com

unread,
Jul 14, 2015, 11:55:09 AM7/14/15
to api...@googlegroups.com
Something similar happened to me in a global function:
https://github.com/ApiGen/ApiGen/issues/625
Reply all
Reply to author
Forward
0 new messages