From 24c1a13db00b73885b70bc5e705e143b7e45ee30 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Mon, 16 May 2011 15:05:41 +0400 Subject: [PATCH] Fixed bug in control flow ordering for named function arguments --- .../controlflow/PyControlFlowBuilder.java | 4 +- .../codeInsight/controlflow/function.py | 2 +- .../codeInsight/controlflow/function.txt | 85 ++++++++++--------- 3 files changed, 46 insertions(+), 45 deletions(-) diff --git a/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java b/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java index 28a3a7bf1eb0..cdda3784820f 100644 --- a/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java +++ b/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java @@ -159,12 +159,12 @@ public class PyControlFlowBuilder extends PyRecursiveElementVisitor { @Override public void visitPyNamedParameter(final PyNamedParameter node) { - final ReadWriteInstruction instruction = ReadWriteInstruction.write(myBuilder, node, node.getName()); - myBuilder.addNode(instruction); final PyExpression defaultValue = node.getDefaultValue(); if (defaultValue != null) { defaultValue.accept(this); } + final ReadWriteInstruction instruction = ReadWriteInstruction.write(myBuilder, node, node.getName()); + myBuilder.addNode(instruction); myBuilder.checkPending(instruction); } diff --git a/python/testData/codeInsight/controlflow/function.py b/python/testData/codeInsight/controlflow/function.py index e23c5cffc3eb..94a025bd8b14 100644 --- a/python/testData/codeInsight/controlflow/function.py +++ b/python/testData/codeInsight/controlflow/function.py @@ -1,4 +1,4 @@ -def help(object, spacing=10, collapse=1): +def help(object, spacing=foo, collapse=1): """Выводит методы и строки документации. В качестве аргумента может использоваться модуль, класс, список, словарь diff --git a/python/testData/codeInsight/controlflow/function.txt b/python/testData/codeInsight/controlflow/function.txt index 3cc397d79d4b..1d86cdc55796 100644 --- a/python/testData/codeInsight/controlflow/function.txt +++ b/python/testData/codeInsight/controlflow/function.txt @@ -1,44 +1,45 @@ 0(1) element: null 1(2) WRITE ACCESS: object -2(3) WRITE ACCESS: spacing -3(4) WRITE ACCESS: collapse -4(5) element: PyExpressionStatement -5(6) element: PyAssignmentStatement -6(7) element: PyListCompExpression -7(8) element: PyCallExpression: dir -8(9) READ ACCESS: dir -9(10,19) READ ACCESS: object -10(11) element: PyTargetExpression: method -11(12) WRITE ACCESS: method -12(13) element: PyCallExpression: callable -13(14) READ ACCESS: callable -14(15) READ ACCESS: getattr -15(16) READ ACCESS: object -16(10,17,19) READ ACCESS: method -17(18) element: PyReferenceExpression: method. Condition: callable(getattr(object, method)):true -18(10,19) READ ACCESS: method -19(20) WRITE ACCESS: methodList -20(21) element: PyAssignmentStatement -21(22) READ ACCESS: collapse -22(23) element: PyLambdaExpression -23(24) WRITE ACCESS: s -24(25) READ ACCESS: s -25(26) element: PyLambdaExpression -26(27) WRITE ACCESS: s -27(28) READ ACCESS: s -28(29) WRITE ACCESS: processFunc -29(30) element: PyPrintStatement -30(31) element: PyListCompExpression -31(32) element: PyReferenceExpression: methodList -32(33,43) READ ACCESS: methodList -33(34) element: PyTargetExpression: method -34(35) WRITE ACCESS: method -35(36) element: PyBinaryExpression -36(37) READ ACCESS: method -37(38) READ ACCESS: spacing -38(39) READ ACCESS: processFunc -39(40) READ ACCESS: str -40(41) READ ACCESS: getattr -41(42) READ ACCESS: object -42(33,43) READ ACCESS: method -43() element: null \ No newline at end of file +2(3) READ ACCESS: foo +3(4) WRITE ACCESS: spacing +4(5) WRITE ACCESS: collapse +5(6) element: PyExpressionStatement +6(7) element: PyAssignmentStatement +7(8) element: PyListCompExpression +8(9) element: PyCallExpression: dir +9(10) READ ACCESS: dir +10(11,20) READ ACCESS: object +11(12) element: PyTargetExpression: method +12(13) WRITE ACCESS: method +13(14) element: PyCallExpression: callable +14(15) READ ACCESS: callable +15(16) READ ACCESS: getattr +16(17) READ ACCESS: object +17(11,18,20) READ ACCESS: method +18(19) element: PyReferenceExpression: method. Condition: callable(getattr(object, method)):true +19(11,20) READ ACCESS: method +20(21) WRITE ACCESS: methodList +21(22) element: PyAssignmentStatement +22(23) READ ACCESS: collapse +23(24) element: PyLambdaExpression +24(25) WRITE ACCESS: s +25(26) READ ACCESS: s +26(27) element: PyLambdaExpression +27(28) WRITE ACCESS: s +28(29) READ ACCESS: s +29(30) WRITE ACCESS: processFunc +30(31) element: PyPrintStatement +31(32) element: PyListCompExpression +32(33) element: PyReferenceExpression: methodList +33(34,44) READ ACCESS: methodList +34(35) element: PyTargetExpression: method +35(36) WRITE ACCESS: method +36(37) element: PyBinaryExpression +37(38) READ ACCESS: method +38(39) READ ACCESS: spacing +39(40) READ ACCESS: processFunc +40(41) READ ACCESS: str +41(42) READ ACCESS: getattr +42(43) READ ACCESS: object +43(34,44) READ ACCESS: method +44() element: null \ No newline at end of file