Idea-php-symfony2-plugin: When route annotations are replaced by route attributes, the plugin crash.

Created on 10 Apr 2021  路  5Comments  路  Source: Haehnchen/idea-php-symfony2-plugin

Hello,

Thanks a lot for your excellent plugin!

Since the 8th version of PHP allows attributes, it seems that we cannot declare route with attribute yet.
As soon as I used them, the plugin encountered a failure, below I paste the trace.

class RegistrationController extends AbstractController
{
    #[Route('/foo', name: 'app_foo')]
    public function bar(){
      //...
    }

    #[Route('/bar', name: 'app_bar')]
    public function bar(){
        if ($foo) {
            return $this->redirectToRoute('app_register');
        }
    }
}

Of course, the link after redirectToRoute is no more available too.
As soon as I replace attributes by annotation, your plugin works well.

com.intellij.diagnostic.PluginException: Failed to build index 'fr.adrienbrault.idea.symfony2plugin.routes_object' for file file:///home/alexandre/PhpstormProjects/bb-one/src/Controller/RegistrationController.php (id = 222) (file type = PHP) [Plugin: fr.adrienbrault.idea.symfony2plugin]
    at com.intellij.ide.plugins.PluginManagerCore.createPluginException(PluginManagerCore.java:300)
    at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:12)
    at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:81)
    at com.intellij.util.indexing.diagnostic.BrokenIndexingDiagnostics$DefaultListener.onFileIndexMappingFailed(BrokenIndexingDiagnostics.kt:47)
    at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1501)
    at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$23(FileBasedIndexImpl.java:1373)
    at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:555)
    at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1343)
    at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1297)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexOneFileOfJob$2(IndexUpdateRunner.java:252)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:521)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:468)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1096)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:79)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:157)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:119)
    at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:178)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:688)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:634)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:64)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:165)
    at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:116)
    at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:79)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:486)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.executeSynchronously(NonBlockingReadActionImpl.java:422)
    at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.executeSynchronously(NonBlockingReadActionImpl.java:186)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexOneFileOfJob(IndexUpdateRunner.java:255)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexJobsFairly$1(IndexUpdateRunner.java:198)
    at com.intellij.openapi.progress.impl.ProgressSuspender.executeNonSuspendableSection(ProgressSuspender.java:83)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexJobsFairly(IndexUpdateRunner.java:201)
    at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$doIndexFiles$0(IndexUpdateRunner.java:135)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:216)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:27)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:195)
    at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:213)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:184)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.intellij.util.indexing.impl.MapReduceIndexMappingException: java.lang.ClassCastException: class com.jetbrains.php.lang.psi.elements.PhpAttribute$PhpAttributeArgument cannot be cast to class com.jetbrains.php.lang.psi.stubs.indexes.expectedArguments.PhpExpectedFunctionArgument (com.jetbrains.php.lang.psi.elements.PhpAttribute$PhpAttributeArgument and com.jetbrains.php.lang.psi.stubs.indexes.expectedArguments.PhpExpectedFunctionArgument are in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @78ecf973)
    at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:265)
    at com.intellij.indexing.composite.CompositeInvertedIndexBase.updateBaseIndex(CompositeInvertedIndexBase.java:232)
    at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:55)
    at com.intellij.indexing.composite.CompositeInvertedIndexBase.mapInputAndPrepareUpdate(CompositeInvertedIndexBase.java:26)
    at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1491)
    ... 40 more
Caused by: java.lang.ClassCastException: class com.jetbrains.php.lang.psi.elements.PhpAttribute$PhpAttributeArgument cannot be cast to class com.jetbrains.php.lang.psi.stubs.indexes.expectedArguments.PhpExpectedFunctionArgument (com.jetbrains.php.lang.psi.elements.PhpAttribute$PhpAttributeArgument and com.jetbrains.php.lang.psi.stubs.indexes.expectedArguments.PhpExpectedFunctionArgument are in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @78ecf973)
    at fr.adrienbrault.idea.symfony2plugin.stubs.indexes.visitor.AnnotationRouteElementWalkingVisitor.visitPhpAttributesList(AnnotationRouteElementWalkingVisitor.java:184)
    at fr.adrienbrault.idea.symfony2plugin.stubs.indexes.visitor.AnnotationRouteElementWalkingVisitor.visitElement(AnnotationRouteElementWalkingVisitor.java:53)
    at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:273)
    at com.jetbrains.php.lang.psi.elements.impl.PhpPsiElementImpl.accept(PhpPsiElementImpl.java:76)
    at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:67)
    at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:24)
    at com.intellij.util.WalkingState.walkChildren(WalkingState.java:62)
    at com.intellij.util.WalkingState.elementStarted(WalkingState.java:49)
    at com.intellij.psi.PsiWalkingState.elementStarted(PsiWalkingState.java:76)
    at com.intellij.psi.PsiRecursiveElementWalkingVisitor.visitElement(PsiRecursiveElementWalkingVisitor.java:48)
    at fr.adrienbrault.idea.symfony2plugin.stubs.indexes.visitor.AnnotationRouteElementWalkingVisitor.visitElement(AnnotationRouteElementWalkingVisitor.java:56)
    at com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35)
    at com.intellij.psi.PsiRecursiveElementWalkingVisitor.visitFile(PsiRecursiveElementWalkingVisitor.java:70)
    at com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:60)
    at com.jetbrains.php.lang.psi.PhpFileImpl.accept(PhpFileImpl.java:200)
    at fr.adrienbrault.idea.symfony2plugin.stubs.indexes.RoutesStubIndex.lambda$getIndexer$0(RoutesStubIndex.java:81)
    at com.intellij.util.indexing.impl.MapReduceIndex.mapByIndexer(MapReduceIndex.java:316)
    at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:306)
    at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:168)
    at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:39)
    at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:256)
    ... 44 more

I use PhpStorm2021.1

api

Most helpful comment

@Alexandre-T
I have the same error!
plugin version: 0.22.207
PHPstorm version: 2021.1

All 5 comments

Attributes are supported since version 0.22.206 of this plugin.

I tried it with PHPStorm 2020.3 and it worked well, but it crashes with PHPStorm 2021.1 with plugin version 0.22.206 for me too.

Thanks for your precisions @AymDev , I replaced my annotations by attributes the day I switched to PhpStorm 2021.1 . It will certainly help them.

@Alexandre-T
I have the same error!
plugin version: 0.22.207
PHPstorm version: 2021.1

duplicated and fixes

Thank you for your awesome plugin. No more errors.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Haehnchen picture Haehnchen  路  7Comments

Haehnchen picture Haehnchen  路  4Comments

RikudouSage picture RikudouSage  路  6Comments

alexsakhnov picture alexsakhnov  路  7Comments

ostrolucky picture ostrolucky  路  4Comments