nette-intellij/intellij-nette

Index access while building indexes

neuro159 opened this issue · 6 comments

We at JetBrains getting this reported to our Exception Analyser.

You're violating contract for
com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider2#getType

/**

  • @param element to deduce type for - using only LOCAL info. THIS IS MOST CRUCIAL ASPECT TO FOLLOW
  • @return type for element, null if no insight. You can return a custom signature here to be later decoded by method below.
    */

You cant query any index from this method. You should use type SIGNATURES, eg #M#CClassName.MethodName
Feel free to get back to us if you have troubles with the concept.

java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:127)
at com.intellij.util.indexing.IndexAccessValidator.checkAccessingIndexDuringOtherIndexProcessing(IndexAccessValidator.java:37)
at com.intellij.psi.stubs.StubIndexImpl.doProcessStubs(StubIndexImpl.java:248)
at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:224)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:145)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:135)
at com.jetbrains.php.PhpIndexImpl.getByFQN(PhpIndexImpl.java:492)
at com.jetbrains.php.PhpIndexImpl.getClassesByFQN(PhpIndexImpl.java:507)
at com.jetbrains.php.PhpIndexImpl.getAnyByFQN(PhpIndexImpl.java:523)
at cz.juzna.intellij.nette.utils.ClassFinder.appendClasses(ClassFinder.java:61)
at cz.juzna.intellij.nette.utils.ClassFinder.appendClasses(ClassFinder.java:52)
at cz.juzna.intellij.nette.utils.ClassFinder.find(ClassFinder.java:35)
at cz.juzna.intellij.nette.utils.ClassFinder.getFromTypedElement(ClassFinder.java:85)
at cz.juzna.intellij.nette.utils.ComponentUtil.getFactoryMethods(ComponentUtil.java:44)
at cz.juzna.intellij.nette.typeProvider.ComponentTypeProvider.getType(ComponentTypeProvider.java:32)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:43)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:37)
at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:37)
at com.jetbrains.php.codeInsight.typeInference.PhpTypeInferenceUtil.getType(PhpTypeInferenceUtil.java:226)
at com.jetbrains.php.lang.psi.elements.impl.ArrayAccessExpressionImpl.getType(ArrayAccessExpressionImpl.java:39)
at com.jetbrains.php.lang.psi.resolve.types.PhpType.add(PhpType.java:153)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.addType(PhpTypeAnalyserVisitor.java:57)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.visitPhpAssignmentExpression(PhpTypeAnalyserVisitor.java:167)
at com.jetbrains.php.lang.psi.elements.impl.AssignmentExpressionImpl.accept(AssignmentExpressionImpl.java:37)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:51)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:37)
at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:37)
at com.jetbrains.php.lang.psi.elements.impl.PhpTypedElementImpl.getType(PhpTypedElementImpl.java:26)
at com.jetbrains.php.lang.psi.elements.impl.PhpExpressionImpl.getType(PhpExpressionImpl.java:59)
at com.jetbrains.php.lang.psi.resolve.types.PhpType.add(PhpType.java:153)
at com.jetbrains.php.lang.psi.stubs.PhpVariableElementType.createStub(PhpVariableElementType.java:37)
at com.jetbrains.php.lang.psi.stubs.PhpVariableElementType.createStub(PhpVariableElementType.java:25)
at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTreeFor(DefaultStubBuilder.java:60)
at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTree(DefaultStubBuilder.java:36)
at com.intellij.psi.impl.source.PsiFileImpl.calcStubTree(PsiFileImpl.java:1039)
at com.intellij.psi.stubs.StubProcessingHelperBase.processStubsInFile(StubProcessingHelperBase.java:75)
at com.intellij.psi.stubs.StubProcessingHelperBase.processStubsInFile(StubProcessingHelperBase.java:52)
at com.intellij.psi.stubs.StubIndexImpl$1.process(StubIndexImpl.java:232)
at com.intellij.psi.stubs.StubIndexImpl$StubIdListContainerAction.perform(StubIndexImpl.java:589)
at com.intellij.psi.stubs.StubIndexImpl$StubIdListContainerAction.perform(StubIndexImpl.java:577)
at com.intellij.util.indexing.ValueContainer.forEach(ValueContainer.java:81)
at com.intellij.psi.stubs.StubIndexImpl.doProcessStubs(StubIndexImpl.java:258)
at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:224)
at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:213)
at com.intellij.lang.javascript.psi.resolve.JSClassResolver.processElementsByQNameIncludingImplicit(JSClassResolver.java:212)
at com.intellij.lang.javascript.psi.resolve.JSReferenceExpressionResolver.processAllSymbols(JSReferenceExpressionResolver.java:187)
at com.intellij.lang.javascript.psi.resolve.JSReferenceExpressionResolver.resolveFromIndices(JSReferenceExpressionResolver.java:150)
at com.intellij.lang.javascript.psi.resolve.JSReferenceExpressionResolver.doResolve(JSReferenceExpressionResolver.java:108)
at com.intellij.lang.javascript.psi.resolve.JSResolveUtil.resolve(JSResolveUtil.java:2648)
at com.intellij.lang.javascript.psi.impl.JSReferenceExpressionImpl.multiResolve(JSReferenceExpressionImpl.java:425)
at com.intellij.lang.javascript.highlighting.JSSemanticHighlightingUtil.highlight(JSSemanticHighlightingUtil.java:101)
at com.intellij.lang.javascript.validation.JSAnnotatingVisitor.visitJSReferenceExpression(JSAnnotatingVisitor.java:696)
at com.intellij.lang.javascript.psi.impl.JSReferenceExpressionImpl.accept(JSReferenceExpressionImpl.java:415)
at com.intellij.lang.javascript.validation.JSAnnotator.annotate(JSAnnotator.java:17)
at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.runAnnotators(DefaultHighlightVisitor.java:135)
at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.visit(DefaultHighlightVisitor.java:99)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.runVisitors(GeneralHighlightingPass.java:351)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.access$100(GeneralHighlightingPass.java:62)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass$3.run(GeneralHighlightingPass.java:280)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:305)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.access$200(GeneralHighlightingPass.java:62)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass$4.run(GeneralHighlightingPass.java:311)
at com.intellij.codeInsight.daemon.impl.analysis.XmlHighlightVisitor.analyze(XmlHighlightVisitor.java:750)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:308)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.access$200(GeneralHighlightingPass.java:62)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass$4.run(GeneralHighlightingPass.java:311)
at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.analyze(DefaultHighlightVisitor.java:83)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:308)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectHighlights(GeneralHighlightingPass.java:277)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectInformationWithProgress(GeneralHighlightingPass.java:216)
at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:82)
at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:67)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1$1.run(PassExecutorService.java:444)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1183)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1.run(PassExecutorService.java:435)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:446)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:432)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:408)
at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:206)
at jsr166e.ForkJoinTask.doExec(ForkJoinTask.java:260)
at jsr166e.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:858)
at jsr166e.ForkJoinPool.scan(ForkJoinPool.java:1687)
at jsr166e.ForkJoinPool.runWorker(ForkJoinPool.java:1642)
at jsr166e.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:108)

Hi Alexey, thanks for the report. I'm sorry, I didn't see the contract in a decompiled code.

There is a problem that Nette uses offsetGet/offsetSet/__get/__set is some cases. So any array access like $foo['bar'] could be handled by nette so at least I need to find if the $foo extends some class.

Otherwise I would have to take over many array and property accesses where I can't decide from a local info if it extends some class and analyze it later in the getDeclaredType. The issue is if I return anything from getType then PhpTypeInfo considers it as a successfull type detection. And it skips all others PhpTypeProvider2 as well as PhpTypeAnalyserVisitor (now I see there was a change in the code recently and it "only" skips PhpTypeAnalyserVisitor) . And if it shows up as a false detection (that it does not really extends required class) in the getDeclaredType, I can't do anything. Or am I missing something?

@neuro159 do you have any idea how to solve this? I've checked other phpstorm plugins which uses PhpTypeProvider2 and it's hacked.

e.g. https://github.com/pbyrne84/DynamicReturnTypePlugin/
There is a fallback to original type, but getBySignature has to return PhpNamedElement so there is a problem with scalars. And it is hacked using this dummy class which represents scalar types.

All this would have been solved if there was no early return in the PhpTypeInfo

 if(!providedTypes.isEmpty()) {
     return providedTypes;
}

but types from PhpTypeProvider2 and PhpTypeAnalyserVisitor were merged.

Thanks for your reply.

fixed by 6900bed and f7fd06d, I will release new version ASAP

👍

This is still TOP reported issue in our EA for recent builds.
338 reports as of today for builds ending with last EAP 163.9166
Are you sure this is fixed?
Please contact me if you need help addressing the issue.

eg
Accessing 'php.class.shortName' during processing 'php.inheritors'. Nested different indices processing may cause deadlock

java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
at com.intellij.util.indexing.IndexAccessValidator.checkAccessingIndexDuringOtherIndexProcessing(IndexAccessValidator.java:37)
at com.intellij.psi.stubs.StubIndexImpl.doProcessStubs(StubIndexImpl.java:349)
at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:325)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:146)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:135)
at com.jetbrains.php.PhpIndexImpl.getByName(PhpIndexImpl.java:565)
at com.jetbrains.php.PhpIndexImpl.getByFQN(PhpIndexImpl.java:545)
at com.jetbrains.php.PhpIndexImpl.getClassesByFQN(PhpIndexImpl.java:575)
at com.jetbrains.php.PhpIndexImpl.getAnyByFQN(PhpIndexImpl.java:591)
at cz.juzna.intellij.nette.utils.PhpIndexUtil.getByType(PhpIndexUtil.java:54)
at cz.juzna.intellij.nette.utils.PhpIndexUtil.getByType(PhpIndexUtil.java:38)
at cz.juzna.intellij.nette.utils.PhpIndexUtil.getByType(PhpIndexUtil.java:33)
at cz.juzna.intellij.nette.utils.PhpIndexUtil.getClasses(PhpIndexUtil.java:20)
at cz.juzna.intellij.nette.utils.ElementValueResolver.doResolve(ElementValueResolver.java:48)
at cz.juzna.intellij.nette.utils.ElementValueResolver.resolve(ElementValueResolver.java:22)
at cz.juzna.intellij.nette.utils.ElementValueResolver.resolve(ElementValueResolver.java:29)
at cz.juzna.intellij.nette.typeProvider.ComponentTypeProvider.getType(ComponentTypeProvider.java:51)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:49)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:39)
at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:39)
at com.jetbrains.php.codeInsight.typeInference.PhpTypeInferenceUtil.getType(PhpTypeInferenceUtil.java:244)
at com.jetbrains.php.lang.psi.elements.impl.ArrayAccessExpressionImpl.getType(ArrayAccessExpressionImpl.java:39)
at com.jetbrains.php.lang.psi.elements.impl.MemberReferenceImpl.getSignature(MemberReferenceImpl.java:210)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.visitPhpReference(PhpTypeAnalyserVisitor.java:90)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.visitPhpMethodReference(PhpTypeAnalyserVisitor.java:405)
at com.jetbrains.php.lang.psi.elements.impl.MethodReferenceImpl.accept(MethodReferenceImpl.java:29)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:46)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:39)
at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:39)
at com.jetbrains.php.lang.psi.elements.impl.PhpReferenceImpl.getType(PhpReferenceImpl.java:206)
at com.jetbrains.php.lang.psi.resolve.types.PhpType.add(PhpType.java:151)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.addType(PhpTypeAnalyserVisitor.java:55)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.visitPhpTernaryExpression(PhpTypeAnalyserVisitor.java:302)
at com.jetbrains.php.lang.psi.elements.impl.TernaryExpressionImpl.accept(TernaryExpressionImpl.java:62)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:46)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo$1.internalCompute(PhpTypeInfo.java:39)
at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:112)
at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:39)
at com.jetbrains.php.lang.psi.elements.impl.PhpTypedElementImpl.getType(PhpTypedElementImpl.java:26)
at com.jetbrains.php.lang.psi.elements.impl.PhpExpressionImpl.getType(PhpExpressionImpl.java:59)
at com.jetbrains.php.lang.psi.resolve.types.PhpType.add(PhpType.java:151)
at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl.visitReturn(FunctionImpl.java:216)
at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl.scanTree(FunctionImpl.java:241)
at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl.getInferredType(FunctionImpl.java:181)
at com.jetbrains.php.lang.psi.elements.impl.FunctionImpl.getLocalType(FunctionImpl.java:145)
at com.jetbrains.php.lang.psi.stubs.PhpFunctionElementType.createStub(PhpFunctionElementType.java:31)
at com.jetbrains.php.lang.psi.stubs.PhpFunctionElementType.createStub(PhpFunctionElementType.java:20)
at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.createStub(DefaultStubBuilder.java:113)
at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.visitNode(DefaultStubBuilder.java:88)
at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.buildStubTree(DefaultStubBuilder.java:83)
at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTreeFor(DefaultStubBuilder.java:58)
at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTree(DefaultStubBuilder.java:39)
at com.intellij.psi.impl.source.PsiFileImpl.calcStubTree(PsiFileImpl.java:1072)
at com.intellij.psi.stubs.StubProcessingHelperBase.processStubsInFile(StubProcessingHelperBase.java:76)
at com.intellij.psi.stubs.StubProcessingHelperBase.processStubsInFile(StubProcessingHelperBase.java:52)
at com.intellij.psi.stubs.StubIndexImpl$2.process(StubIndexImpl.java:333)
at com.intellij.psi.stubs.StubIndexImpl$StubIdListContainerAction.perform(StubIndexImpl.java:684)
at com.intellij.psi.stubs.StubIndexImpl$StubIdListContainerAction.perform(StubIndexImpl.java:672)
at com.intellij.util.indexing.ValueContainer.forEach(ValueContainer.java:81)
at com.intellij.psi.stubs.StubIndexImpl.doProcessStubs(StubIndexImpl.java:359)
at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:325)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:146)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:135)
at com.jetbrains.php.PhpIndexImpl.getDirectSubclasses(PhpIndexImpl.java:269)
at com.jetbrains.php.lang.findUsages.PhpConstructorReferenceSearcher.searchClassAndChildren(PhpConstructorReferenceSearcher.java:94)
at com.jetbrains.php.lang.findUsages.PhpConstructorReferenceSearcher.processQuery(PhpConstructorReferenceSearcher.java:55)
at com.jetbrains.php.lang.findUsages.PhpConstructorReferenceSearcher.processQuery(PhpConstructorReferenceSearcher.java:40)
at com.intellij.openapi.application.QueryExecutorBase.execute(QueryExecutorBase.java:95)
at com.intellij.util.ExecutorsQuery.processResults(ExecutorsQuery.java:45)
at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:79)
at com.intellij.util.MergeQuery.processSubQuery(MergeQuery.java:85)
at com.intellij.util.MergeQuery.forEach(MergeQuery.java:57)
at com.intellij.util.UniqueResultsQuery.process(UniqueResultsQuery.java:66)
at com.intellij.util.UniqueResultsQuery.forEach(UniqueResultsQuery.java:56)
at com.jetbrains.php.lang.psi.PhpPsiUtil.hasReferencesInSearchScope(PhpPsiUtil.java:512)
at com.jetbrains.php.codeInsight.PhpCodeInsightUtil.isUnusedInternal(PhpCodeInsightUtil.java:989)
at com.jetbrains.php.codeInsight.PhpCodeInsightUtil.lambda$isUnused$6(PhpCodeInsightUtil.java:954)
at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
at java.util.HashMap$ValueSpliterator.tryAdvance(HashMap.java:1641)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:454)
at com.jetbrains.php.codeInsight.PhpCodeInsightUtil.isUnused(PhpCodeInsightUtil.java:954)
at com.jetbrains.php.lang.inspections.PhpUnusedAliasInspection$1.visitPhpUse(PhpUnusedAliasInspection.java:32)
at com.jetbrains.php.lang.psi.elements.impl.PhpUseImpl.accept(PhpUseImpl.java:49)
at com.intellij.codeInspection.InspectionEngine.acceptElements(InspectionEngine.java:81)
at com.intellij.codeInspection.InspectionEngine.createVisitorAndAcceptElements(InspectionEngine.java:69)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.runToolOnElements(LocalInspectionsPass.java:280)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$visitPriorityElementsAndInit$3(LocalInspectionsPass.java:249)
at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:123)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1061)
at com.intellij.concurrency.ApplierCompleter.lambda$wrapInReadActionAndIndicator$0(ApplierCompleter.java:96)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:568)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:519)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
at com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:106)
at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:91)
at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

@neuro159 thanks for reporting. I hotfixed it in 594be15 and I will release new version soon.

I see that there are some changes in type resolving - new PhpTypeProvider3 interface, which looks very good and may solve many issues I have had.