Halleck45 / ast-metrics

AST Metrics is a language-agnostic static code analyzer.
https://halleck45.github.io/ast-metrics/
MIT License
59 stars 5 forks source link

Get `panic: interface conversion: ast.Vertex is nil, not *ast.Name` with PHP sources  #36

Closed Halleck45 closed 6 months ago

Halleck45 commented 6 months ago

This error occurs on Laravel 10

panic: interface conversion: ast.Vertex is nil, not *ast.Name

goroutine 27 [running]:
github.com/halleck45/ast-metrics/src/Engine/Php.(*PhpVisitor).StmtNamespace(0x40070c53b0?, 0xf3c5c0?)
        /home/runner/work/ast-metrics/ast-metrics/src/Engine/Php/PhpVisitor.go:232 +0x290
github.com/VKCOM/php-parser/pkg/ast.(*StmtNamespace).Accept(...)
        /home/runner/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.2/pkg/ast/node.go:879
github.com/VKCOM/php-parser/pkg/visitor/traverser.(*Traverser).StmtNamespace(0x400904d950, 0x40070c5310)
        /home/runner/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.2/pkg/visitor/traverser/traverser.go:388 +0x34
github.com/VKCOM/php-parser/pkg/ast.(*StmtNamespace).Accept(0x400904d950?, {0xf3c5c0?, 0x400904d950?})
        /home/runner/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.2/pkg/ast/node.go:879 +0x30
github.com/VKCOM/php-parser/pkg/visitor/traverser.(*Traverser).Root(0x400904d950, 0x40090dae40)
        /home/runner/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.2/pkg/visitor/traverser/traverser.go:27 +0x68
github.com/VKCOM/php-parser/pkg/ast.(*Root).Accept(0x4009c0c000?, {0xf3c5c0?, 0x400904d950?})
        /home/runner/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.2/pkg/ast/node.go:16 +0x30
github.com/VKCOM/php-parser/pkg/visitor/traverser.(*Traverser).Traverse(...)
        /home/runner/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.2/pkg/visitor/traverser/traverser.go:19
github.com/halleck45/ast-metrics/src/Engine/Php.parsePhpFile({0x4000039920, 0x14})
        /home/runner/work/ast-metrics/ast-metrics/src/Engine/Php/PhpRunner.go:144 +0x3ac
github.com/halleck45/ast-metrics/src/Engine/Php.PhpRunner.dumpOneAst({0x400034c0e0, 0x400011a5a0, {{0x40002b2000, 0x7f2, 0xa00}, 0x4000d04000}}, 0x0?, {0x4000039920, 0x14})
        /home/runner/work/ast-metrics/ast-metrics/src/Engine/Php/PhpRunner.go:94 +0x100
created by github.com/halleck45/ast-metrics/src/Engine/Php.PhpRunner.DumpAST in goroutine 24
        /home/runner/work/ast-metrics/ast-metrics/src/Engine/Php/PhpRunner.go:71 +0x90

For example with this code:

<?php

namespace {
    class Foo
    {
        public function __construct()
        {
            echo 'Foo::__construct()';
        }
    }
}