RefManager was passed to RefElement constructor, which in turn could call RefManager.getReference(psiElement), and cause unsynchronized access to RefElementImpl.add().
+ bug fixed in previous logic
Exception:
at java.util.ArrayList.add(ArrayList.java:352)
at com.intellij.codeInspection.reference.RefEntityImpl.add(RefEntityImpl.java:85)
at com.intellij.codeInspection.reference.RefFileImpl.<init>(RefFileImpl.java:40)
at com.intellij.codeInspection.reference.RefManagerImpl$4.compute(RefManagerImpl.java:480)
at com.intellij.codeInspection.reference.RefManagerImpl$4.compute(RefManagerImpl.java:470)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:893)
at com.intellij.codeInspection.reference.RefManagerImpl.getReference(RefManagerImpl.java:470)
at com.intellij.codeInspection.reference.RefManagerImpl.getReference(RefManagerImpl.java:448)
at com.intellij.codeInspection.ex.GlobalInspectionContextUtil.retrieveRefElement(GlobalInspectionContextUtil.java:35)
at com.intellij.codeInspection.GlobalInspectionUtil.createProblem(GlobalInspectionUtil.java:67)
at com.intellij.codeInspection.DefaultHighlightVisitorBasedInspection.checkFile(DefaultHighlightVisitorBasedInspection.java:115)
at com.intellij.codeInspection.ex.GlobalInspectionContextImpl$6.process(GlobalInspectionContextImpl.java:390)
at com.intellij.codeInspection.ex.GlobalInspectionContextImpl$6.process(GlobalInspectionContextImpl.java:383)
at com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:122)
at com.intellij.concurrency.ApplierCompleter.access$000(ApplierCompleter.java:44)
at com.intellij.concurrency.ApplierCompleter$1.run(ApplierCompleter.java:85)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1107)
at com.intellij.concurrency.ApplierCompleter$2.run(ApplierCompleter.java:94)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.registerIndicatorAndRun(ProgressManagerImpl.java:282)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.registerIndicatorAndRun(ProgressManagerImpl.java:279)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:232)
at com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:106)
- separate generator-specific configurables
- disable particular emmet generator via lookupAction
- show particular emmet generator configurable via lookupAction