From: Ekaterina Tuzova Date: Mon, 1 Sep 2014 12:54:29 +0000 (+0400) Subject: Merge remote-tracking branch 'origin/master' X-Git-Tag: appcode/138.2004~4 X-Git-Url: https://git.jetbrains.org/?p=idea%2Fcommunity.git;a=commitdiff_plain;h=b20442ff277b84651ef7377d8ea0fc206efcbd00;hp=375fa56c984587bdd0ed447c0fd96796ec28b089 Merge remote-tracking branch 'origin/master' --- diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java index db47f17f8ea8..6e0d5c465d0e 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyDefaultArgumentQuickFix.java @@ -61,7 +61,7 @@ public class PyDefaultArgumentQuickFix implements LocalQuickFix { PyStatementList list = function.getStatementList(); PyParameterList paramList = function.getParameterList(); - final StringBuilder functionText = new StringBuilder("def foo("); + final StringBuilder functionText = new StringBuilder("def " + function.getName() + "("); int size = paramList.getParameters().length; for (int i = 0; i != size; ++i) { PyParameter p = paramList.getParameters()[i]; diff --git a/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java index 43f4f0394015..017bf1a1af29 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/StatementEffectFunctionCallQuickFix.java @@ -88,7 +88,13 @@ public class StatementEffectFunctionCallQuickFix implements LocalQuickFix { if (next instanceof PyExpressionStatement) { final PyExpression expr = ((PyExpressionStatement)next).getExpression(); if (expr instanceof PyBinaryExpression) { - addInArguments(stringBuilder, (PyBinaryExpression)expr); + final PsiElement operator = ((PyBinaryExpression)expr).getPsiOperator(); + if (operator instanceof LeafPsiElement && ((LeafPsiElement)operator).getElementType() == PyTokenTypes.IN_KEYWORD) { + addInArguments(stringBuilder, (PyBinaryExpression)expr); + } + else { + stringBuilder.append(next.getText()); + } } else if (expr instanceof PyTupleExpression) { final PyExpression[] elements = ((PyTupleExpression)expr).getElements(); @@ -114,14 +120,11 @@ public class StatementEffectFunctionCallQuickFix implements LocalQuickFix { } private static void addInArguments(@NotNull final StringBuilder stringBuilder, @NotNull final PyBinaryExpression binaryExpression) { - final PsiElement operator = binaryExpression.getPsiOperator(); - if (operator instanceof LeafPsiElement && ((LeafPsiElement)operator).getElementType() == PyTokenTypes.IN_KEYWORD) { - stringBuilder.append(binaryExpression.getLeftExpression().getText()); - stringBuilder.append(", "); - final PyExpression rightExpression = binaryExpression.getRightExpression(); - if (rightExpression != null) - stringBuilder.append(rightExpression.getText()); - } + stringBuilder.append(binaryExpression.getLeftExpression().getText()); + stringBuilder.append(", "); + final PyExpression rightExpression = binaryExpression.getRightExpression(); + if (rightExpression != null) + stringBuilder.append(rightExpression.getText()); } private static void replacePrint(@NotNull final PsiElement expression) { diff --git a/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java b/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java index 7e15cab6ffda..af767684643e 100644 --- a/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java +++ b/python/src/com/jetbrains/python/psi/impl/PythonLanguageLevelPusher.java @@ -19,7 +19,9 @@ import com.intellij.facet.Facet; import com.intellij.facet.FacetManager; import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; +import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.ModuleType; @@ -163,7 +165,8 @@ public class PythonLanguageLevelPusher implements FilePropertyPusher ourRegistryCache; + private WinPythonSdkFlavor() { } @@ -78,18 +80,25 @@ public class WinPythonSdkFlavor extends CPythonSdkFlavor { } public static void findInRegistry(Collection candidates) { - for (Map.Entry entry : ourRegistryMap.entrySet()) { - final String prefix = entry.getKey(); - final String exePath = entry.getValue(); - List strings = WindowsRegistryUtil.readRegistryBranch(prefix); - for (String string : strings) { - final String path = - WindowsRegistryUtil.readRegistryDefault(prefix + "\\" + string + - "\\InstallPath"); - if (path != null) { - File f = new File(path, exePath); - if (f.exists()) { - candidates.add(FileUtil.toSystemDependentName(f.getPath())); + fillRegistryCache(); + candidates.addAll(ourRegistryCache); + } + + private static void fillRegistryCache() { + if (ourRegistryCache == null) { + ourRegistryCache = new HashSet(); + for (Map.Entry entry : ourRegistryMap.entrySet()) { + final String prefix = entry.getKey(); + final String exePath = entry.getValue(); + List strings = WindowsRegistryUtil.readRegistryBranch(prefix); + for (String string : strings) { + final String path = WindowsRegistryUtil.readRegistryDefault(prefix + "\\" + string + + "\\InstallPath"); + if (path != null) { + File f = new File(path, exePath); + if (f.exists()) { + ourRegistryCache.add(FileUtil.toSystemDependentName(f.getPath())); + } } } } diff --git a/python/testData/inspections/DefaultArgumentEmptyList.py b/python/testData/inspections/DefaultArgumentEmptyList.py index 55748eb449d5..a351c5134c90 100644 --- a/python/testData/inspections/DefaultArgumentEmptyList.py +++ b/python/testData/inspections/DefaultArgumentEmptyList.py @@ -1 +1 @@ -def foo(args=[]): \ No newline at end of file +def bar(args=[]): \ No newline at end of file diff --git a/python/testData/inspections/DefaultArgumentEmptyList_after.py b/python/testData/inspections/DefaultArgumentEmptyList_after.py index 2de1bb88ef92..ada9baaa7865 100644 --- a/python/testData/inspections/DefaultArgumentEmptyList_after.py +++ b/python/testData/inspections/DefaultArgumentEmptyList_after.py @@ -1,3 +1,3 @@ -def foo(args=None): +def bar(args=None): if not args: args = [] \ No newline at end of file