From cc1c1ddb2a2ae5b719e6aac77e3d40594a1536f0 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Fri, 21 Aug 2015 20:34:23 +0300 Subject: [PATCH] [groovy] trait fields index: do not fail if exception occurred (ignore malformed class files) --- .../lang/resolve/GroovyTraitFieldsFileIndex.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitFieldsFileIndex.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitFieldsFileIndex.java index 9fc82854a33a..9e67f91fad7f 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitFieldsFileIndex.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitFieldsFileIndex.java @@ -15,6 +15,7 @@ */ package org.jetbrains.plugins.groovy.lang.resolve; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.cache.TypeInfo; @@ -34,6 +35,7 @@ import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.Collection; +import java.util.Collections; import java.util.Map; import static com.intellij.util.io.DataInputOutputUtil.*; @@ -56,6 +58,7 @@ public class GroovyTraitFieldsFileIndex } }; + private static final Logger LOG = Logger.getInstance(GroovyTraitFieldsFileIndex.class); private static final String INSTANCE_PREFIX = "$ins"; private static final String STATIC_PREFIX = "$static"; private static final String PRIVATE_PREFIX = "$0"; @@ -105,6 +108,17 @@ public class GroovyTraitFieldsFileIndex @NotNull @Override public Map> map(@NotNull FileContent inputData) { + try { + return mapInner(inputData); + } + catch (Exception e) { + LOG.warn(e); + return Collections.emptyMap(); + } + } + + @NotNull + private static Map> mapInner(@NotNull FileContent inputData) { final int key = FileBasedIndex.getFileId(inputData.getFile()); final Map> result = ContainerUtil.newHashMap(); new ClassReader(inputData.getContent()).accept(new ClassVisitor(ASM5) {