From 0d828dab6cca2d9423d18eaf52dd3033dbb359cf Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 24 Feb 2015 15:04:36 +0100 Subject: [PATCH] call getClasses() in read action (EA-64639 - assert: PsiFileImpl.getStubTree) --- .../view/JavaCoverageViewExtension.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/plugins/coverage/src/com/intellij/coverage/view/JavaCoverageViewExtension.java b/plugins/coverage/src/com/intellij/coverage/view/JavaCoverageViewExtension.java index 0756d656a55a..2a7103ceb9cf 100644 --- a/plugins/coverage/src/com/intellij/coverage/view/JavaCoverageViewExtension.java +++ b/plugins/coverage/src/com/intellij/coverage/view/JavaCoverageViewExtension.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.coverage.view; import com.intellij.coverage.*; @@ -235,9 +250,13 @@ public class JavaCoverageViewExtension extends CoverageViewExtension { : PsiFile.EMPTY_ARRAY; } }); - for (PsiFile file : childFiles) { + for (final PsiFile file : childFiles) { if (file instanceof PsiJavaFile) { - PsiClass[] classes = ((PsiJavaFile)file).getClasses(); + PsiClass[] classes = ApplicationManager.getApplication().runReadAction(new Computable() { + public PsiClass[] compute() { + return ((PsiJavaFile) file).getClasses(); + } + }); if (classes.length > 0) { PsiClass aClass = classes[0]; if (!(node instanceof CoverageListRootNode) && getClassCoverageInfo(aClass) == null) continue;