mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 05:09:37 +07:00
ignore ifs in comprehensions when determine if the file is runnable
This commit is contained in:
committed by
Aleksei Kniazev
parent
0e39b09476
commit
9034bb6261
@@ -21,13 +21,14 @@ import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil;
|
||||
import com.jetbrains.python.psi.PyFile;
|
||||
import com.jetbrains.python.psi.PyIfStatement;
|
||||
import com.jetbrains.python.psi.PyUtil;
|
||||
import com.jetbrains.python.psi.impl.PyIfStatementNavigator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -46,11 +47,10 @@ public class PyRunLineMarkerContributor extends RunLineMarkerContributor {
|
||||
|
||||
private static boolean isMainClauseOnTopLevel(@NotNull PsiElement element) {
|
||||
if (element.getNode().getElementType() == PyTokenTypes.IF_KEYWORD) {
|
||||
element = PsiTreeUtil.getParentOfType(element, PyIfStatement.class);
|
||||
|
||||
return element != null &&
|
||||
element.getParent() instanceof PsiFile &&
|
||||
PyUtil.isIfNameEqualsMain(((PyIfStatement)element));
|
||||
PyIfStatement statement = PyIfStatementNavigator.getIfStatementByIfKeyword(element);
|
||||
return statement != null &&
|
||||
ScopeUtil.getScopeOwner(element) instanceof PyFile &&
|
||||
PyUtil.isIfNameEqualsMain(statement);
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = [i for i in range(10) if i != 0]
|
||||
result = [i for i in range(10) if i != 0]
|
||||
@@ -32,6 +32,11 @@ public class PyRunLineMarkerTest extends PyTestCase {
|
||||
assertTrue(elementWithInfo.getParent().getText().startsWith("if"));
|
||||
}
|
||||
|
||||
public void testWithManyIfs() {
|
||||
List<LineMarkerInfo> infos = getInfos("runnable_with_ifs.py");
|
||||
assertEquals("There should be only one marker", 1, infos.size());
|
||||
}
|
||||
|
||||
public void testNotRunnable() {
|
||||
assertEquals(0, getInfos("not_runnable.py").size());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user