Illuminated Cloud misbehaves in multi-module project including Java source files

Issue #1239 resolved
Jonny Power (he/him) created an issue

I'm finding it very difficult to develop both SFDX Apex source code and my gradle buildSrc Java source code within the same multiple module IntelliJ project.

When I hit any of the following issues I have to close the project and open it again. This has been a requirement roughly every 30 minutes.

  • Source code recognition fails in my Java classes, no syntax highlightning etc
  • Can't open Java classes (just outright fails)
  • Can't copy and paste from my freemarker template

In general I've noticed that Illuminated Cloud occasionally complains about my buildSrc module not being configured - but I don't want Illuminated cloud configured for my buildSrc module - it is not a salesforce module.

Versions:

IntelliJ IDEA 2018.3 (Ultimate Edition) Build #IU-183.4284.148, built on November 20, 2018 Licensed to Traction on Demand Inc. / Jonny Power Subscription is active until November 16, 2019 JRE: 1.8.0_152-release-1343-b15 amd64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Windows 10 10.0

Illuminated Cloud 2: 2.0.4.8

Comments (11)

  1. Jonny Power (he/him) reporter

    Example log during clipboard issue:

    2019-02-09 11:29:34,220 [94324692]  ERROR - aemon.impl.PassExecutorService - IntelliJ IDEA 2018.3  Build #IU-183.4284.148 
    2019-02-09 11:29:34,223 [94324695]  ERROR - aemon.impl.PassExecutorService - JDK: 1.8.0_152-release; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o 
    2019-02-09 11:29:34,223 [94324695]  ERROR - aemon.impl.PassExecutorService - OS: Windows 10 
    2019-02-09 11:29:34,226 [94324698]  ERROR - aemon.impl.PassExecutorService - Plugin to blame: Illuminated Cloud 2 version: 2.0.4.8 
    2019-02-09 11:29:34,226 [94324698]  ERROR - aemon.impl.PassExecutorService - Last Action: EditorCut 
    2019-02-09 11:29:34,227 [94324699]  ERROR - aemon.impl.PassExecutorService - null 
    java.lang.NullPointerException
        at com.illuminatedcloud.intellij.psi.stub.ApexDeclarationStub.<init>(ApexDeclarationStub.java:42)
        at com.illuminatedcloud.intellij.psi.stub.ApexTypeDeclarationStub.<init>(ApexTypeDeclarationStub.java:21)
        at com.illuminatedcloud.intellij.psi.stub.ApexClassDeclarationStub.<init>(ApexClassDeclarationStub.java:34)
        at com.illuminatedcloud.intellij.psi.stub.ApexClassDeclarationElementType.doCreateStub(ApexClassDeclarationElementType.java:38)
        at com.illuminatedcloud.intellij.psi.stub.ApexClassDeclarationElementType.doCreateStub(ApexClassDeclarationElementType.java:22)
        at com.illuminatedcloud.intellij.psi.stub.ApexDeclarationStubElementType.createStub(ApexDeclarationStubElementType.java:164)
        at com.illuminatedcloud.intellij.psi.stub.ApexDeclarationStubElementType.createStub(ApexDeclarationStubElementType.java:32)
        at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.createStub(DefaultStubBuilder.java:102)
        at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.visitNode(DefaultStubBuilder.java:77)
        at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.buildStubTree(DefaultStubBuilder.java:72)
        at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTreeFor(DefaultStubBuilder.java:50)
        at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTree(DefaultStubBuilder.java:39)
        at com.intellij.psi.stubs.StubTreeBuilder.buildStubTree(StubTreeBuilder.java:97)
        at com.intellij.psi.stubs.StubUpdatingIndex$3.lambda$map$0(StubUpdatingIndex.java:238)
        at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:943)
        at com.intellij.psi.stubs.StubUpdatingIndex$3.map(StubUpdatingIndex.java:220)
        at com.intellij.psi.stubs.StubUpdatingIndex$3.map(StubUpdatingIndex.java:202)
        at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:276)
        at com.intellij.util.indexing.VfsAwareMapReduceIndex.calculateUpdateData(VfsAwareMapReduceIndex.java:83)
        at com.intellij.util.indexing.impl.MapReduceIndex.update(MapReduceIndex.java:216)
        at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1668)
        at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$27(FileBasedIndexImpl.java:1596)
        at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:522)
        at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1555)
        at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1543)
        at com.intellij.util.indexing.FileBasedIndexImpl.processRefreshedFile(FileBasedIndexImpl.java:1522)
        at com.intellij.util.indexing.FileBasedIndexImpl$VirtualFileUpdateTask.doProcess(FileBasedIndexImpl.java:1686)
        at com.intellij.util.indexing.FileBasedIndexImpl$VirtualFileUpdateTask.doProcess(FileBasedIndexImpl.java:1683)
        at com.intellij.util.indexing.UpdateTask.process(UpdateTask.java:76)
        at com.intellij.util.indexing.UpdateTask.processAll(UpdateTask.java:46)
        at com.intellij.util.indexing.FileBasedIndexImpl.forceUpdate(FileBasedIndexImpl.java:1705)
        at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:739)
        at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:705)
        at com.intellij.psi.stubs.StubIndexImpl.doProcessStubs(StubIndexImpl.java:300)
        at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:276)
        at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:121)
        at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:109)
        at com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.get(JavaFullClassNameIndex.java:47)
        at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.doFindClasses(JavaFileManagerImpl.java:88)
        at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.findClass(JavaFileManagerImpl.java:123)
        at com.intellij.psi.impl.PsiElementFinderImpl.findClass(PsiElementFinderImpl.java:39)
        at com.intellij.psi.impl.JavaPsiFacadeImpl.doFindClass(JavaPsiFacadeImpl.java:125)
        at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:102)
        at com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl.resolveElement(ClsJavaCodeReferenceElementImpl.java:257)
        at com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl.advancedResolveImpl(ClsJavaCodeReferenceElementImpl.java:128)
        at com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl.access$000(ClsJavaCodeReferenceElementImpl.java:43)
        at com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl$Resolver.resolve(ClsJavaCodeReferenceElementImpl.java:121)
        at com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl$Resolver.resolve(ClsJavaCodeReferenceElementImpl.java:115)
        at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolveWithCaching$1(ResolveCache.java:203)
        at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:98)
        at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:202)
        at com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl.multiResolve(ClsJavaCodeReferenceElementImpl.java:223)
        at com.intellij.psi.impl.compiled.ClsJavaCodeReferenceElementImpl.advancedResolve(ClsJavaCodeReferenceElementImpl.java:213)
        at com.intellij.psi.impl.source.PsiClassReferenceType.resolveGenerics(PsiClassReferenceType.java:191)
        at com.intellij.psi.impl.source.PsiClassReferenceType.resolve(PsiClassReferenceType.java:138)
        at com.intellij.psi.util.TypeConversionUtil$2.visitClassType(TypeConversionUtil.java:1264)
        at com.intellij.psi.util.TypeConversionUtil$2.visitClassType(TypeConversionUtil.java:1255)
        at com.intellij.psi.PsiClassType.accept(PsiClassType.java:237)
        at com.intellij.psi.util.TypeConversionUtil.erasure(TypeConversionUtil.java:1255)
        at com.intellij.psi.util.MethodSignatureUtil.calcErasedParameterTypes(MethodSignatureUtil.java:91)
        at com.intellij.psi.util.MethodSignatureBase.getErasedParameterTypes(MethodSignatureBase.java:83)
        at com.intellij.psi.util.MethodSignatureBase.hashCode(MethodSignatureBase.java:98)
        at com.intellij.psi.util.MethodSignatureUtil$2.computeHashCode(MethodSignatureUtil.java:52)
        at com.intellij.psi.util.MethodSignatureUtil$2.computeHashCode(MethodSignatureUtil.java:49)
        at gnu.trove.TObjectHash.insertionIndex(TObjectHash.java:224)
        at gnu.trove.THashSet.add(THashSet.java:137)
        at org.jetbrains.plugins.groovy.transformations.TransformationContextImpl.doAddMethod(TransformationContextImpl.java:214)
        at org.jetbrains.plugins.groovy.transformations.TransformationContextImpl.addMethod(TransformationContextImpl.java:227)
        at org.jetbrains.plugins.groovy.transformations.TransformationContext.addMethod(TransformationContext.java:96)
        at org.jetbrains.plugins.groovy.transformations.TransformationContextImpl.addMethods(TransformationContextImpl.java:241)
        at org.jetbrains.plugins.groovy.transformations.impl.GroovyObjectTransformationSupport.applyTransformation(GroovyObjectTransformationSupport.kt:56)
        at org.jetbrains.plugins.groovy.transformations.TransformationUtilKt.transformDefinition(TransformationUtil.kt:45)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionMembersCache.lambda$getTransformationResult$9(GrTypeDefinitionMembersCache.java:123)
        at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:140)
        at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
        at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
        at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
        at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
        at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:136)
        at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:126)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionMembersCache.getTransformationResult(GrTypeDefinitionMembersCache.java:122)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.typedef.GrTypeDefinitionMembersCache.getFields(GrTypeDefinitionMembersCache.java:93)
        at org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass.getFields(GroovyScriptClass.java:118)
        at org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass.getFields(GroovyScriptClass.java:32)
        at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.getFields(CollectClassMembersUtil.java:156)
        at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.processClass(CollectClassMembersUtil.java:115)
        at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.lambda$buildCache$0(CollectClassMembersUtil.java:93)
        at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
        at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
        at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
        at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
        at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:88)
        at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.buildCache(CollectClassMembersUtil.java:91)
        at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.getCachedMembers(CollectClassMembersUtil.java:50)
        at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.getAllFields(CollectClassMembersUtil.java:81)
        at org.jetbrains.plugins.groovy.lang.resolve.CollectClassMembersUtil.getAllFields(CollectClassMembersUtil.java:86)
        at org.jetbrains.plugins.groovy.lang.psi.util.GrClassImplUtil.processDeclarations(GrClassImplUtil.java:224)
        at org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass.processDeclarations(GroovyScriptClass.java:180)
        at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.processClassDeclarations(ResolveUtil.java:1062)
        at org.jetbrains.plugins.groovy.lang.psi.impl.GroovyFileImpl.processDeclarations(GroovyFileImpl.java:121)
        at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.doProcessDeclarations(ResolveUtil.java:125)
        at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.lambda$treeWalkUp$0(ResolveUtil.java:104)
        at com.intellij.psi.util.PsiTreeUtil.treeWalkUp(PsiTreeUtil.java:1157)
        at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.treeWalkUp(ResolveUtil.java:102)
        at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtilKt.treeWalkUp(ResolveUtil.kt:40)
        at org.jetbrains.plugins.groovy.lang.resolve.GrReferenceResolveRunner.resolveReferenceExpression(GrReferenceResolveRunner.kt:35)
        at org.jetbrains.plugins.groovy.lang.resolve.GrReferenceResolveRunnerKt.resolveReferenceExpression(GrReferenceResolveRunner.kt:109)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrReferenceExpressionImpl.doPolyResolve(GrReferenceExpressionImpl.java:434)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrReferenceExpressionReference.doResolve(GrReferenceExpressionReference.kt:13)
        at org.jetbrains.plugins.groovy.lang.psi.impl.GroovyReferenceBase$Resolver.resolve(GroovyReferenceBase.kt:20)
        at org.jetbrains.plugins.groovy.lang.psi.impl.GroovyReferenceBase$Resolver.resolve(GroovyReferenceBase.kt:19)
        at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:150)
        at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:98)
        at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:149)
        at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:239)
        at org.jetbrains.plugins.groovy.lang.psi.impl.InferenceContext$TopInferenceContext.resolveWithCaching(InferenceContext.java:81)
        at org.jetbrains.plugins.groovy.lang.psi.impl.InferenceContext.resolve(InferenceContext.java:56)
        at org.jetbrains.plugins.groovy.lang.psi.impl.GroovyReferenceBase.resolve(GroovyReferenceBase.kt:16)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrReferenceExpressionImpl$1.doResolve(GrReferenceExpressionImpl.java:591)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrReferenceExpressionImpl$1.doResolve(GrReferenceExpressionImpl.java:539)
        at org.jetbrains.plugins.groovy.lang.resolve.DependentResolver.resolve(DependentResolver.kt:27)
        at org.jetbrains.plugins.groovy.lang.resolve.DependentResolver.resolve(DependentResolver.kt:10)
        at com.intellij.psi.impl.source.resolve.ResolveCache.lambda$resolve$0(ResolveCache.java:150)
        at com.intellij.openapi.util.RecursionManager$2.doPreventingRecursion(RecursionManager.java:98)
        at com.intellij.psi.impl.source.resolve.ResolveCache.resolve(ResolveCache.java:149)
        at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:239)
        at org.jetbrains.plugins.groovy.lang.psi.impl.InferenceContext$TopInferenceContext.resolveWithCaching(InferenceContext.java:81)
        at org.jetbrains.plugins.groovy.lang.psi.impl.InferenceContext.resolve(InferenceContext.java:56)
        at org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrReferenceExpressionImpl.resolve(GrReferenceExpressionImpl.java:607)
        at org.jetbrains.plugins.groovy.lang.psi.api.GroovyReference.multiResolve(GroovyReference.java:37)
        at org.jetbrains.plugins.groovy.lang.psi.api.GroovyReference.advancedResolve(GroovyReference.java:27)
        at org.jetbrains.plugins.groovy.highlighter.DeclarationsKt.getReferenceHighlightingAttribute(declarations.kt:79)
        at org.jetbrains.plugins.groovy.highlighter.DeclarationsKt.access$getReferenceHighlightingAttribute(declarations.kt:1)
        at org.jetbrains.plugins.groovy.highlighter.GroovyDeclarationHighlightingPass$doCollectInformation$1.visitElement(declarations.kt:44)
        at com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:274)
        at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:70)
        at com.intellij.psi.PsiWalkingState.visit(PsiWalkingState.java:27)
        at com.intellij.util.WalkingState.walkChildren(WalkingState.java:65)
        at com.intellij.util.WalkingState.elementStarted(WalkingState.java:52)
        at com.intellij.psi.PsiWalkingState.elementStarted(PsiWalkingState.java:79)
        at com.intellij.psi.PsiRecursiveElementWalkingVisitor.visitElement(PsiRecursiveElementWalkingVisitor.java:48)
        at org.jetbrains.plugins.groovy.highlighter.GroovyDeclarationHighlightingPass$doCollectInformation$1.visitElement(declarations.kt:58)
        at com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:34)
        at com.intellij.psi.PsiRecursiveElementWalkingVisitor.visitFile(PsiRecursiveElementWalkingVisitor.java:70)
        at com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:70)
        at org.jetbrains.plugins.groovy.highlighter.GroovyDeclarationHighlightingPass.doCollectInformation(declarations.kt:41)
        at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:69)
        at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:423)
        at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1168)
        at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:416)
        at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:582)
        at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:532)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:87)
        at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:415)
        at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:391)
        at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:147)
        at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:222)
        at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:389)
        at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:161)
        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)
    
  2. Jonny Power (he/him) reporter

    Example log during alt + enter on java inspection

    2019-02-09 11:32:42,661 [94513133]  ERROR - aemon.impl.PassExecutorService - IntelliJ IDEA 2018.3  Build #IU-183.4284.148 
    2019-02-09 11:32:42,661 [94513133]  ERROR - aemon.impl.PassExecutorService - JDK: 1.8.0_152-release; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o 
    2019-02-09 11:32:42,661 [94513133]  ERROR - aemon.impl.PassExecutorService - OS: Windows 10 
    2019-02-09 11:32:42,665 [94513137]  ERROR - aemon.impl.PassExecutorService - Plugin to blame: Illuminated Cloud 2 version: 2.0.4.8 
    2019-02-09 11:32:42,665 [94513137]  ERROR - aemon.impl.PassExecutorService - Last Action: ShowIntentionActions 
    2019-02-09 11:32:43,357 [94513829]  ERROR - .intellij.psi.impl.ElementBase - null 
    java.lang.NullPointerException
        at com.illuminatedcloud.intellij.psi.stub.ApexDeclarationStub.<init>(ApexDeclarationStub.java:42)
        at com.illuminatedcloud.intellij.psi.stub.ApexTypeDeclarationStub.<init>(ApexTypeDeclarationStub.java:21)
        at com.illuminatedcloud.intellij.psi.stub.ApexClassDeclarationStub.<init>(ApexClassDeclarationStub.java:34)
        at com.illuminatedcloud.intellij.psi.stub.ApexClassDeclarationElementType.doCreateStub(ApexClassDeclarationElementType.java:38)
        at com.illuminatedcloud.intellij.psi.stub.ApexClassDeclarationElementType.doCreateStub(ApexClassDeclarationElementType.java:22)
        at com.illuminatedcloud.intellij.psi.stub.ApexDeclarationStubElementType.createStub(ApexDeclarationStubElementType.java:164)
        at com.illuminatedcloud.intellij.psi.stub.ApexDeclarationStubElementType.createStub(ApexDeclarationStubElementType.java:32)
        at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.createStub(DefaultStubBuilder.java:102)
        at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.visitNode(DefaultStubBuilder.java:77)
        at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.buildStubTree(DefaultStubBuilder.java:72)
        at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTreeFor(DefaultStubBuilder.java:50)
        at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTree(DefaultStubBuilder.java:39)
        at com.intellij.psi.stubs.StubTreeBuilder.buildStubTree(StubTreeBuilder.java:97)
        at com.intellij.psi.stubs.StubUpdatingIndex$3.lambda$map$0(StubUpdatingIndex.java:238)
        at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:943)
        at com.intellij.psi.stubs.StubUpdatingIndex$3.map(StubUpdatingIndex.java:220)
        at com.intellij.psi.stubs.StubUpdatingIndex$3.map(StubUpdatingIndex.java:202)
        at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:276)
        at com.intellij.util.indexing.VfsAwareMapReduceIndex.calculateUpdateData(VfsAwareMapReduceIndex.java:83)
        at com.intellij.util.indexing.impl.MapReduceIndex.update(MapReduceIndex.java:216)
        at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1668)
        at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$27(FileBasedIndexImpl.java:1596)
        at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:522)
        at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1555)
        at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1543)
        at com.intellij.util.indexing.FileBasedIndexImpl.processRefreshedFile(FileBasedIndexImpl.java:1522)
        at com.intellij.util.indexing.FileBasedIndexImpl$VirtualFileUpdateTask.doProcess(FileBasedIndexImpl.java:1686)
        at com.intellij.util.indexing.FileBasedIndexImpl$VirtualFileUpdateTask.doProcess(FileBasedIndexImpl.java:1683)
        at com.intellij.util.indexing.UpdateTask.process(UpdateTask.java:76)
        at com.intellij.util.indexing.UpdateTask.processAll(UpdateTask.java:46)
        at com.intellij.util.indexing.FileBasedIndexImpl.forceUpdate(FileBasedIndexImpl.java:1705)
        at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:739)
        at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:705)
        at com.intellij.psi.stubs.StubIndexImpl.doProcessStubs(StubIndexImpl.java:300)
        at com.intellij.psi.stubs.StubIndexImpl.processElements(StubIndexImpl.java:276)
        at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:121)
        at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:109)
        at com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.get(JavaFullClassNameIndex.java:47)
        at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.doFindClasses(JavaFileManagerImpl.java:88)
        at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.findClass(JavaFileManagerImpl.java:123)
        at com.intellij.psi.impl.PsiElementFinderImpl.findClass(PsiElementFinderImpl.java:39)
        at com.intellij.psi.impl.JavaPsiFacadeImpl.doFindClass(JavaPsiFacadeImpl.java:125)
        at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:102)
        at com.intellij.psi.util.InheritanceUtil.isInheritor(InheritanceUtil.java:93)
        at com.intellij.psi.util.InheritanceUtil.isInheritor(InheritanceUtil.java:84)
        at com.intellij.struts.StrutsIconProvider.getIcon(StrutsIconProvider.java:45)
        at com.intellij.util.PsiIconUtil.getProvidersIcon(PsiIconUtil.java:27)
        at com.intellij.psi.impl.ElementBase.doComputeIconNow(ElementBase.java:104)
        at com.intellij.psi.impl.ElementBase.lambda$computeIconNow$2(ElementBase.java:100)
        at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:126)
        at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:115)
        at com.intellij.psi.impl.ElementBase.computeIconNow(ElementBase.java:100)
        at com.intellij.psi.impl.ElementBase.lambda$static$0(ElementBase.java:44)
        at com.intellij.ui.IconDeferrerImpl.deferImpl(IconDeferrerImpl.java:82)
        at com.intellij.ui.IconDeferrerImpl.defer(IconDeferrerImpl.java:72)
        at com.intellij.psi.impl.ElementBase.computeIcon(ElementBase.java:92)
        at com.intellij.psi.impl.ElementBase.getIcon(ElementBase.java:71)
        at com.intellij.ide.JavaFileIconPatcher.patchIcon(JavaFileIconPatcher.java:56)
        at com.intellij.util.IconUtil.lambda$static$0(IconUtil.java:151)
        at com.intellij.ui.DeferredIconImpl.evaluate(DeferredIconImpl.java:280)
        at com.intellij.ui.DeferredIconImpl.lambda$null$0(DeferredIconImpl.java:165)
        at com.intellij.ui.IconDeferrerImpl.evaluateDeferred(IconDeferrerImpl.java:109)
        at com.intellij.ui.DeferredIconImpl.lambda$null$1(DeferredIconImpl.java:165)
        at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1168)
        at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:70)
        at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:123)
        at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:164)
        at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:582)
        at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:532)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:87)
        at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:151)
        at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:112)
        at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:70)
        at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:91)
        at com.intellij.ui.DeferredIconImpl.lambda$paintIcon$4(DeferredIconImpl.java:164)
        at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:227)
        at com.intellij.util.concurrency.BoundedTaskExecutor.access$100(BoundedTaskExecutor.java:26)
        at com.intellij.util.concurrency.BoundedTaskExecutor$2$1.run(BoundedTaskExecutor.java:200)
        at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:229)
        at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:194)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    
  3. Jonny Power (he/him) reporter

    Interesting tidbit that might help with this (also probably illustrates it as extremely corner case);

    I noticeably hit this issue after writing some logic in my Freemarker template file. The template file is using IntelliJ's source code detection to see the non template syntax is apex.

    If I don't touch the template files this happens a lot less frequently for sure.

  4. Scott Wells repo owner

    I'm glad you bumped this, Jonny. Somehow this slipped under my radar. I would consider this more than minor. Let me see if I can't take care of it for you. So sorry for the issue!

  5. Scott Wells repo owner

    Hmmmm...I'm quite perplexed by what's going on here. It certainly looks like it's trying to create Apex class stub elements for Java classes, and that doesn't make any sense. Do you mind forcing the IDE to rebuild ALL caches and indices just to see if something got oddly cross-wired somehow? You can use File>Invalidate Caches / Restart to do that.

    Also, if/when IC tells you that it thinks that this Java module might be a Salesforce module, feel free to click the Ignore link to tell IC to stop evaluating that module for conversion.

    Let's see if that helps. If not I'll have to instrument things for more debug logging to see how/why it's ending up trying to create Apex stub elements for these Java classes.

  6. Jonny Power (he/him) reporter

    Hi Scott, my apoligies - I was on vacay so havn't had a chance to try this - I will invalidate and let you know.

    I strongly suspect it has something to do with syntax highlighting in a freemarker template file.

    I have a file like this:

    <#ftl ns_prefixes={"D":"http://soap.sforce.com/2006/04/metadata"}>
    <#-- @ftlvariable name="" type="com.tractionondemand.tpay2.build.domain.SObjectModel" -->
    <#import "Wrapper.cls-macros.ftl" as h/>
    /**
     * Generated class do NOT edit.
     *
     * Generated @ ${.now}
     **/
    @NamespaceAccessible
    public abstract class Base${getClassName()} extends ${getExtendingClassName()} {
        <#if isRecordAttribute()>
    
        // =========================================================
        //  ATTRIBUTES
        // =========================================================
    
        protected ${getAPIName()} record;
        </#if>
    
        // =========================================================
        //  CONSTRUCTORS
        // =========================================================
    
        public Base${getClassName()}(${getAPIName()} record) {
            super(record);
            <#if isRecordAttribute()>
            this.record = record;
            </#if>
        }
    
        // =========================================================
        //  PUBLIC METHODS
        // =========================================================
    
        <#list fields as field>
        <#assign apexType><@h.getApexType fieldType="${field.fieldXML.CustomField.type}"/></#assign>
        <#assign getter = .get_optional_template("Wrapper.cls-${apexType?lower_case}-getter.ftl")/>
        <#assign setter = .get_optional_template("Wrapper.cls-${apexType?lower_case}-setter.ftl")/>
        <#if getter.exists>
            <@getter.include />
        <#else>
        public ${apexType} get${field.getName()}() {
            return record.${field.getAPIName()};
        }
        </#if>
    
        <#if setter.exists>
            <@setter.include />
        <#else>
        public void set${field.getName()}(${apexType} ${field.getVariableName()}) {
            record.${field.getAPIName()} = ${field.getVariableName()};
        }
        </#if>
    
        </#list>
    }
    

    InteliJ natively supports syntax highlighting template files like this, and I added .cls.ftl as an extension for apex class syntax highlighting - I think what's happening is IntelliJ is passing this file to IC, IC attempts to parse it's symbol tree, and then it fails due to the extra template syntax.

    However, I have no idea why this causes the rest of the IDE to start failing with calls to IC with the logs posted above. I'm confident it's related though because if I don't open the template file I don't seem to get these strange issues, and a colleague working on the same project, who has not enabled the syntax highlighting, does not get this issue either.

  7. Scott Wells repo owner

    Thanks for the update. That certainly sounds like it could be the case. Let me know if some combination of these two changes (invalidating caches and/or removing the file type association for this template) resolves the issue or not. I'll be curious to know...

  8. Scott Wells repo owner

    Issue tracker grooming. If this is still an issue, please feel free to reopen, ideally with a concrete reproduction scenario.

  9. Log in to comment