Skip to content

Fatal error when go to definition of constant inside trait #2784

@alquerci

Description

@alquerci

Steps to reproduce

Given PHP file

<?php

trait SomeTrait
{
    const SOME_CONSTANT = 'some value';

    public function action()
    {
        self::SOME_CONSTANT;
    }
}
  1. cursor at line 9 on the character "_" of "self::SOME_CONSTANT;"
  2. :call phpactor#GotoDefinition()

Expected

Find definition on line 4

Actual

Phpactor returned an error: Fatal error: Uncaught AssertionError: assert($containingClass instanceof ReflectionClass || $containingClass instanceof ReflectionInterface || $containingClass instanceof ReflectionEnum) in /home/alexandre/.vim/plugged/phpactor/lib/WorseReferenceFinder/WorseReflectionDefinitionLocator.php:198
Stack trace:
#0 /home/alexandre/.vim/plugged/phpactor/lib/WorseReferenceFinder/WorseReflectionDefinitionLocator.php(198): assert(false, 'assert($contain...')
#1 /home/alexandre/.vim/plugged/phpactor/lib/WorseReferenceFinder/WorseReflectionDefinitionLocator.php(70): Phpactor\WorseReferenceFinder\WorseReflectionDefinitionLocator->gotoMember(Object(Phpactor\WorseReflection\Core\Inference\NodeContext))
#2 /home/alexandre/.vim/plugged/phpactor/lib/WorseReferenceFinder/WorseReflectionDefinitionLocator.php(53): Phpactor\WorseReferenceFinder\WorseReflectionDefinitionLocator->gotoDefinition(Object(Phpactor\TextDocument\StandardTextDocument), Object(Phpactor\WorseReflection\Bridge\TolerantParser\Reflection\ReflectionOffset))
#3 /home/alexandre/.vim/plugged/phpactor/lib/ReferenceFinder/ChainDefinitionLocationProvider.php(34): Phpactor\WorseReferenceFinder\WorseReflectionDefinitionLocator->locateDefinition(Object(Phpactor\TextDocument\StandardTextDocument), Object(Phpactor\TextDocument\ByteOffset))
#4 /home/alexandre/.vim/plugged/phpactor/lib/Extension/ReferenceFinderRpc/Handler/GotoDefinitionHandler.php(65): Phpactor\ReferenceFinder\ChainDefinitionLocationProvider->locateDefinition(Object(Phpactor\TextDocument\StandardTextDocument), Object(Phpactor\TextDocument\ByteOffset))
#5 /home/alexandre/.vim/plugged/phpactor/lib/Extension/Rpc/RequestHandler/RequestHandler.php(27): Phpactor\Extension\ReferenceFinderRpc\Handler\GotoDefinitionHandler->handle(Array)
#6 /home/alexandre/.vim/plugged/phpactor/lib/Extension/Rpc/RequestHandler/ExceptionCatchingHandler.php(20): Phpactor\Extension\Rpc\RequestHandler\RequestHandler->handle(Object(Phpactor\Extension\Rpc\Request))
#7 /home/alexandre/.vim/plugged/phpactor/lib/Extension/Rpc/RequestHandler/LoggingHandler.php(25): Phpactor\Extension\Rpc\RequestHandler\ExceptionCatchingHandler->handle(Object(Phpactor\Extension\Rpc\Request))
#8 /home/alexandre/.vim/plugged/phpactor/lib/Extension/Rpc/Command/RpcCommand.php(65): Phpactor\Extension\Rpc\RequestHandler\LoggingHandler->handle(Object(Phpactor\Extension\Rpc\Request))
#9 /home/alexandre/.vim/plugged/phpactor/lib/Extension/Rpc/Command/RpcCommand.php(45): Phpactor\Extension\Rpc\Command\RpcCommand->processRequest(Object(Phpactor\Extension\Rpc\Request))
#10 /home/alexandre/.vim/plugged/phpactor/vendor/symfony/console/Command/Command.php(298): Phpactor\Extension\Rpc\Command\RpcCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 /home/alexandre/.vim/plugged/phpactor/vendor/symfony/console/Application.php(1040): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 /home/alexandre/.vim/plugged/phpactor/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand(Object(Phpactor\Extension\Rpc\Command\RpcCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 /home/alexandre/.vim/plugged/phpactor/lib/Application.php(48): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 /home/alexandre/.vim/plugged/phpactor/vendor/symfony/console/Application.php(171): Phpactor\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 /home/alexandre/.vim/plugged/phpactor/bin/phpactor(46): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 {main}
  thrown in /home/alexandre/.vim/plugged/phpactor/lib/WorseReferenceFinder/WorseReflectionDefinitionLocator.php on line 198

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions