1
0
Fork 0

🚀 Fix weird results ❤️

pull/341/head
jens1o 2017-04-09 21:21:06 +02:00
parent a0f61ebe8c
commit 578ad76530
5 changed files with 28 additions and 13 deletions

View File

@ -9,7 +9,7 @@ namespace HELLO {
}
\He
\HE
}
namespace {

View File

@ -122,6 +122,19 @@ class Index implements ReadableIndex, \Serializable
*/
public function setDefinition(string $fqn, Definition $definition)
{
if($fqn === null) {
try {
throw new \Exception;
} catch(\Exception $e) {
echo PHP_EOL;
var_dump($fqn);
echo PHP_EOL;
var_dump($definition);
echo PHP_EOL;
echo $e->getTraceAsString();
echo PHP_EOL;
}
}
$this->definitions[$fqn] = $definition;
$this->emit('definition-added');
}

View File

@ -50,7 +50,18 @@ class SymbolInformation
{
$parent = $node->getAttribute('parentNode');
$symbol = new self;
if ($node instanceof Node\Stmt\Class_|| $node instanceof Node\Stmt\Trait_) {
if (
$node instanceof Node\Expr\FuncCall
&& $node->name instanceof Node\Name
&& (string)$node->name === 'define'
&& isset($node->args[0])
&& $node->args[0]->value instanceof Node\Scalar\String_
) {
// constants with define()
$symbol->kind = SymbolKind::CONSTANT;
$symbol->name = (string)$node->args[0]->value->value;
} elseif ($node instanceof Node\Stmt\Class_|| $node instanceof Node\Stmt\Trait_) {
$symbol->kind = SymbolKind::CLASS_;
} else if ($node instanceof Node\Stmt\Interface_) {
$symbol->kind = SymbolKind::INTERFACE;
@ -84,16 +95,6 @@ class SymbolInformation
$symbol->name = $node->var;
} else if (isset($node->name)) {
$symbol->name = (string)$node->name;
} else if (
$node instanceof Node\Expr\FuncCall
&& $node->name instanceof Node\Name
&& (string)$node->name === 'define'
&& isset($node->args[0])
&& $node->args[0]->value instanceof Node\Scalar\String_
) {
// constants with define()
$symbol->kind = SymbolKind::CONSTANT;
$symbol->name = (string)$node->args[0]->value->value;
} else {
return null;
}

View File

@ -72,7 +72,7 @@ abstract class ServerTestCase extends TestCase
$this->definitionLocations = [
// Global
'TEST_PROPERTY' => new Location($globalSymbolsUri, new Range(new Position(106, 4), new Position(106, 31))),
'TEST_PROPERTY' => new Location($globalSymbolsUri, new Range(new Position(106, 0), new Position(106, 30))),
'TEST_CONST' => new Location($globalSymbolsUri, new Range(new Position( 9, 6), new Position( 9, 22))),
'TestClass' => new Location($globalSymbolsUri, new Range(new Position(20, 0), new Position(61, 1))),
'ChildClass' => new Location($globalSymbolsUri, new Range(new Position(99, 0), new Position(99, 37))),

View File

@ -55,6 +55,7 @@ class SymbolTest extends ServerTestCase
new SymbolInformation('TestInterface', SymbolKind::INTERFACE, $this->getDefinitionLocation('TestInterface'), ''),
new SymbolInformation('test_function', SymbolKind::FUNCTION, $this->getDefinitionLocation('test_function()'), ''),
new SymbolInformation('ChildClass', SymbolKind::CLASS_, $this->getDefinitionLocation('ChildClass'), ''),
new SymbolInformation('define', SymbolKind::CONSTANT, $this->getDefinitionLocation('TEST_PROPERTY'), ''),
new SymbolInformation('whatever', SymbolKind::FUNCTION, $this->getDefinitionLocation('whatever()'), ''),
new SymbolInformation('SecondTestNamespace', SymbolKind::NAMESPACE, $this->getDefinitionLocation('SecondTestNamespace'), '')