pbyrne84 / DynamicReturnTypePlugin

135 stars 7 forks source link

Exception when try autocomplete #4

Closed kandy closed 11 years ago

kandy commented 11 years ago
Exception: String index out of range: -1
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1875)
    at com.ptby.dynamicreturntypeplugin.typecalculation.ParameterTypeCalculator.calculateTypeFromParameter(ParameterTypeCalculator.java:36)
    at com.ptby.dynamicreturntypeplugin.responsepackaging.FieldResponsePackager.packageFieldReference(FieldResponsePackager.java:24)
    at com.ptby.dynamicreturntypeplugin.typecalculation.CallReturnTypeCalculator.calculateTypeFromMethodParameter(CallReturnTypeCalculator.java:39)
    at com.ptby.dynamicreturntypeplugin.typecalculation.MethodCallTypeCalculator.calculateFromMethodCall(MethodCallTypeCalculator.java:17)
    at com.ptby.dynamicreturntypeplugin.scanner.MethodCallReturnTypeScanner.getTypeFromMethodCall(MethodCallReturnTypeScanner.java:21)
    at com.ptby.dynamicreturntypeplugin.DynamicReturnTypeProvider.createDynamicReturnType(DynamicReturnTypeProvider.java:138)
    at com.ptby.dynamicreturntypeplugin.DynamicReturnTypeProvider.getType(DynamicReturnTypeProvider.java:108)
    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:41)
    at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
    at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:110)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
    at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:41)
    at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:23)
    at com.jetbrains.php.lang.psi.elements.impl.PhpReferenceImpl.getType(PhpReferenceImpl.java:152)
    at com.jetbrains.php.codeInsight.typeInference.PhpTypeInferenceUtil.inferType(PhpTypeInferenceUtil.java:165)
    at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.visitPhpVariable(PhpTypeAnalyserVisitor.java:131)
    at com.jetbrains.php.lang.psi.elements.impl.VariableImpl.accept(VariableImpl.java:111)
    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:41)
    at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
    at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:110)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
    at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:41)
    at com.jetbrains.php.codeInsight.typeInference.PhpTypeInferenceUtil.getInferredType(PhpTypeInferenceUtil.java:208)
    at com.jetbrains.php.lang.psi.elements.impl.VariableImpl.getInferredType(VariableImpl.java:608)
    at com.jetbrains.php.codeInsight.typeInference.PhpTypeAnalyzerProcessor.processAccessInstruction(PhpTypeAnalyzerProcessor.java:49)
    at com.jetbrains.php.codeInsight.typeInference.PhpVariableInferredTypeAnalyzerProcessor.processAccessVariableInstruction(PhpVariableInferredTypeAnalyzerProcessor.java:44)
    at com.jetbrains.php.codeInsight.controlFlow.instructions.impl.PhpAccessVariableInstructionImpl.process(PhpAccessVariableInstructionImpl.java:35)
    at com.jetbrains.php.codeInsight.controlFlow.PhpControlFlowUtil.processPredecessors(PhpControlFlowUtil.java:124)
    at com.jetbrains.php.codeInsight.controlFlow.PhpControlFlowUtil.processPredecessorsIgnoreInitialBackEdges(PhpControlFlowUtil.java:104)
    at com.jetbrains.php.lang.psi.resolve.types.PhpTypeAnalyserVisitor.visitPhpVariable(PhpTypeAnalyserVisitor.java:145)
    at com.jetbrains.php.lang.psi.elements.impl.VariableImpl.accept(VariableImpl.java:111)
    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:41)
    at com.intellij.openapi.util.Computable$NotNullCachedComputable.compute(Computable.java:52)
    at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:110)
    at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
    at com.jetbrains.php.lang.psi.resolve.types.PhpTypeInfo.getType(PhpTypeInfo.java:41)
    at com.jetbrains.php.codeInsight.typeInference.PhpTypeInferenceUtil.getInferredType(PhpTypeInferenceUtil.java:208)
    at com.jetbrains.php.codeInsight.typeInference.PhpTypeInferenceUtil.getType(PhpTypeInferenceUtil.java:198)
    at com.jetbrains.php.codeInsight.typeInference.PhpTypeInferenceUtil.getType(PhpTypeInferenceUtil.java:189)
    at com.jetbrains.php.lang.psi.elements.impl.VariableImpl.getType(VariableImpl.java:590)
    at com.jetbrains.php.lang.psi.elements.impl.MemberReferenceImpl.resolveGlobal(MemberReferenceImpl.java:123)
    at com.jetbrains.php.lang.psi.elements.impl.PhpReferenceImpl$1.resolve(PhpReferenceImpl.java:106)
    at com.jetbrains.php.lang.psi.elements.impl.PhpReferenceImpl$1.resolve(PhpReferenceImpl.java:103)
    at com.intellij.psi.impl.source.resolve.ResolveCache$2.compute(ResolveCache.java:107)
    at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:110)
    at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:104)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:132)
    at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:124)
    at com.jetbrains.php.lang.psi.elements.impl.PhpReferenceImpl.multiResolve(PhpReferenceImpl.java:98)
    at com.jetbrains.php.lang.psi.elements.impl.PhpReferenceImpl.resolve(PhpReferenceImpl.java:85)
    at com.jetbrains.php.lang.annotator.PhpAnnotatorVisitor.checkAccessModifiers(PhpAnnotatorVisitor.java:310)
    at com.jetbrains.php.lang.annotator.PhpAnnotatorVisitor.visitPhpMethodReference(PhpAnnotatorVisitor.java:293)
    at com.jetbrains.php.lang.psi.elements.impl.MethodReferenceImpl.accept(MethodReferenceImpl.java:31)
    at com.jetbrains.php.lang.annotator.PhpAnnotator.annotate(PhpAnnotator.java:17)
    at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.runAnnotators(DefaultHighlightVisitor.java:160)
    at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.visit(DefaultHighlightVisitor.java:103)
    at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass$10.run(GeneralHighlightingPass.java:644)
    at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:757)
    at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.access$3500(GeneralHighlightingPass.java:83)
    at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass$12.run(GeneralHighlightingPass.java:763)
    at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.analyze(DefaultHighlightVisitor.java:87)
    at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:760)
    at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectHighlights(GeneralHighlightingPass.java:717)
    at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectInformationWithProgress(GeneralHighlightingPass.java:208)
    at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:58)
    at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:62)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1$1.run(PassExecutorService.java:357)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1182)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass$1.run(PassExecutorService.java:348)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:226)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:345)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:321)
    at com.intellij.concurrency.JobLauncherImpl$3.call(JobLauncherImpl.java:145)
    at com.intellij.concurrency.JobLauncherImpl$3.call(JobLauncherImpl.java:142)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at com.intellij.concurrency.PrioritizedFutureTask.access$101(PrioritizedFutureTask.java:31)
    at com.intellij.concurrency.PrioritizedFutureTask$1.run(PrioritizedFutureTask.java:70)
    at com.intellij.concurrency.PrioritizedFutureTask.run(PrioritizedFutureTask.java:113)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
pbyrne84 commented 11 years ago

Quite hard to reproduce as most things get internally prefixed before being parsed in as a parameter.

Manage to reproduce by using wdwd\swddwwd as a parameter.

Thanks for that