From f9adab8d0bf9153ef0af0441d218057a48a05f2a Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 12 Jun 2013 16:11:21 +0200 Subject: [PATCH 1/3] to avoid SOE, don't check validity for light elemens (PY-9620) --- .../src/com/jetbrains/python/psi/impl/ResolveResultList.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/src/com/jetbrains/python/psi/impl/ResolveResultList.java b/python/src/com/jetbrains/python/psi/impl/ResolveResultList.java index edb5404b03d7..20733f8ba38b 100644 --- a/python/src/com/jetbrains/python/psi/impl/ResolveResultList.java +++ b/python/src/com/jetbrains/python/psi/impl/ResolveResultList.java @@ -2,6 +2,7 @@ package com.jetbrains.python.psi.impl; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiInvalidElementAccessException; +import com.intellij.psi.impl.light.LightElement; import com.jetbrains.python.psi.resolve.RatedResolveResult; import java.util.ArrayList; @@ -25,7 +26,7 @@ public class ResolveResultList extends ArrayList { public boolean poke(final PsiElement what, final int rate) { if (what == null) return false; - if (!what.isValid()) { + if (!(what instanceof LightElement) && !what.isValid()) { throw new PsiInvalidElementAccessException(what, "Trying to resolve a reference to an invalid element"); } super.add(new RatedResolveResult(rate, what)); From 76e5ac7232dc26d1731e454ff3301b9e07bbb4bd Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 12 Jun 2013 16:25:07 +0200 Subject: [PATCH 2/3] EA-46978 - IOOBE: SegmentArray.getSegmentEnd --- .../python/validation/Pep8ExternalAnnotator.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java b/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java index da7e4cbbcca9..432bf3514c62 100644 --- a/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java +++ b/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java @@ -167,7 +167,13 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator= document.getLineCount() ? document.getTextLength()-1 : document.getLineEndOffset(line); + } + else { + lineEndOffset = StringUtil.lineColToOffset(text, line+1, 0) - 1; + } problemRange = new TextRange(offset, lineEndOffset); } final Annotation annotation; From 312238b2c039a8ff5b14c87216923a3a1918c236 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 12 Jun 2013 16:57:23 +0200 Subject: [PATCH 3/3] additional diagnostics for PY-8077 --- .../validation/Pep8ExternalAnnotator.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java b/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java index 432bf3514c62..194ae430ae4a 100644 --- a/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java +++ b/python/src/com/jetbrains/python/validation/Pep8ExternalAnnotator.java @@ -36,8 +36,10 @@ import com.jetbrains.python.PythonFileType; import com.jetbrains.python.PythonHelpersLocator; import com.jetbrains.python.inspections.PyPep8Inspection; import com.jetbrains.python.inspections.quickfix.ReformatFix; +import com.jetbrains.python.sdk.PreferredSdkComparator; import com.jetbrains.python.sdk.PySdkUtil; import com.jetbrains.python.sdk.PythonSdkType; +import com.jetbrains.python.sdk.flavors.PythonSdkFlavor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -86,6 +88,8 @@ public class Pep8ExternalAnnotator extends ExternalAnnotator allSdks = PythonSdkType.getAllSdks(); + Collections.sort(allSdks, PreferredSdkComparator.INSTANCE); + for (Sdk sdk : allSdks) { + LOG.info(" Path: " + sdk.getHomePath() + "; Flavor: " + PythonSdkFlavor.getFlavor(sdk) + "; Remote: " + PythonSdkType.isRemote(sdk)); + } + LOG.info("]"); + } + @Nullable @Override public State doAnnotate(State collectedInfo) {