Snapshot dc1944e804515a346297e368c3b9c35a203c9912 from idea/133.818 of git://git.jetbrains.org/idea/community.git

dc1944e: Merge remote-tracking branch 'origin/133' into 133
c2e9002: Merge remote-tracking branch 'origin/133' into 133
dbd4198: IDEA-117777 Change the way native splashscreen is shown in WinLauncher IDEA-117163 Parameter "nosplash"  is broken on launcher (cherry picked from commit b783716)
cfcbcbb: distinct prover: do not distinguish raw type arguments from type arguments without params (IDEA-119546) (cherry picked from commit baee0eb)
a1b2686: Copyright: commit document after comment updating (cherry picked from commit 0f2e2a5)
210e309: IDEA-119677 AWT thread blocking during start up
607d561: do not replace checked exception with unchecked (IDEA-119345)
34d7d0d: cls reference ignores passed outer class type arguments (IDEA-118733)
afb6d22: revert (IDEA-120153)
512ceae: temp solution (IDEA-118527) (cherry picked from commit 32094bf)
a1cb63e: Merge remote-tracking branch 'origin/133' into 133
b90c09e: Logo updated: 'Tools matter' moved.
87174f2: [git] Don't read default commit message from .COMMIT_EDITMSG
00bc294: Add new plugins to brokenPlugins.txt
a42d688: PyCharm 3.1 artwork
c7a0fea: IDEA-119510 Update Pivotal connector to correctly set "Started" and "Finished" states for stories. Unify titles of error dialogs in "Close task" and "Open task" actions. (cherry picked from commit 85bcbe8)
c498973: root detection call optimized  for empty root checkers (cherry picked from commit acdc335)
f54d2a5: unnecessary 'else' removed (cherry picked from commit 65bce6c)
2f60cdc: style (cherry picked from commit 321cebb)
0ca33de: VcsRootDetectorI renamed (cherry picked from commit 5a75778)
e8a0a07: VcsRootDetector refactoring
dd9ee0b: GitRootFinder removed as unnecessary (cherry picked from commit 470ad4d)
6061019: IDEA-119738 Problem with Android Studio connecting to wrong VCS (Git vs. Mercurial)
a0afcc5: style (cherry picked from commit 1195dd4)
0b6023f: Mercurial Repository info problem fixed
eae61e9: style (cherry picked from commit 96ec395)
6be71da: Unnecessary parameter --ignore removed from appropriate status commands.
8d896ca: Annotate for renamed/moved file fixed
95fe78f: getFileNameInTargetRevision updated
2eb0039: VcsRoot detector tests updated
5a89ec5: VcsRootError changed to be an interface, implementation moved to vcs-impl (cherry picked from commit 49815e2)
6e7297f: Reverted percent formatting by default for MySQL parser compatibility with Python (PY-10771)
c92b0d9: Fixed add method quick fix after changing the element reported by the unresolved references inspection
cede286: do not prefer simple python run configuration over tests
fa2e308: do not prefer simple python run configuration over custom (django, etc.)
5bdf739: Don't use JSON to store broken plugins. Loading JSON on startup take 50m.s.
e2617c0: Fill brokenPlugins.json (cherry picked from commit ebf4294)
50938aa: [git] IDEA-120042 Protect against zero timestamp
03b587d: Kill Python console with SIGKILL, because SIGINT generates KeyboardInterrupt and closes nothing. (cherry picked from commit 35603ff416a1c6b95d2ba4459fcc7bbb864315a1)
24baeea: NotNull annotation. (cherry picked from commit 8bf273fc402c574fe67f39f0a43018e0b3758cdd)
4fb7ecf: NotNull annotation. (cherry picked from commit 8204f64b865634da512600488441c5001e902c5d)
13a9206: NPE (EA-52843) (cherry picked from commit 5f2c78ef5b3b574d620aa3abe6a619c7deb143f5)
5bb5de4: EA-49160 (cherry picked from commit 2e82518e58e42959f9153f2685a1fb6c924b524e)
d33f8a2: NPE(EA-52907). (cherry picked from commit b44000de9a05193e218d159565a40e10d0770afa)
eb15fe6: IOOBE (EA-53138). (cherry picked from commit 1ac0a958e7902e9503b1584aa9a5099a5645592a)
5a76e10: SIOOBE(EA-53677). (cherry picked from commit 8e887d7)
d0de4d4: Fixed spelling in names of variables (cherry picked from commit e37f9b1)
43d19a0: Simplified always true expressions (cherry picked from commit 61f5888)
0d1f896: Fixed EA-49990: assert: TextRange.<init>
bf30c71: Fixed EA-52685 - assert: MultiHostRegistrarImpl.doneInjecting
845984e: Reordered methods (cherry picked from commit 35afccf)
4bd4b91: Fixed SQL 'select/insert/...' rule injection into indented string literals (PY-11970) (cherry picked from commit 5fd0a91)
afc90e9: Assume that string without '%' operator or 'format()' contains no formatting (PY-11771) (cherry picked from commit 2621f17)
58b30ff: Don't run code analysis for injections with interpolation in string formatting (PY-11962) (cherry picked from commit 6e66b22)
e7ff3f0: Add injection place even if a string fragment consists of zero chunks (cherry picked from commit e4bf6e4)
077db26: Fixed parsing of unbalanced new style string formatting (PY-11962) (cherry picked from commit 76e0d23)
d1d3177: IDEA-56096 Allow to create file templates with extension contains dot [CR-IC-3923] (cherry picked from commit c1728ca)
ef7c9e4: assume custom stubs only if psifile's content element type isn't IStubElementType, this fixes performance problem of previous change (that added support for dom indices). The performance problem was manifested for flex stubs produced by decompiler. (cherry picked from commit 4b5b6e8)
7ab32ff: IDEA-119773 (slf4j placeholder inspection false warnings when passing in Object array) (cherry picked from commit d8e1c94)
f6951b4: high CPU and EditorTextField/LanguageConsole scrolling
ef19cd4: [git] IDEA-119887 Support one more git version output format
6ebae26: [git] convert GitVersionTest to junit
86970d3: Add brokenPlugins.json
2f5b006: [^Peter] IDEA-117390 don't complete light elements containing IntelliJIdeaRulezzz
3abd741: [^peter]IDEA-119647 CCE on groovy file
585208a: Merge remote-tracking branch 'origin/133' into 133
6257aa0: PyCharm 3.1
a7af6ae: Gradle: buildscript configuration respect inheritance (cherry picked from commit 0f133cf)
d2311e1: [github] IDEA-119693 Don't share workspace.xml
8ed66a5: EA-53411 (more reliable diagnostic and better recovery)
7ac7972: IDEA-119498 (only suppress plugin updates for true command-line usage)
db1690c: IDEA-55171 (prevent sync refresh from locking if application is disposed)
f9286bb: fixed merge problem: extra test method was added
5b068d0: Traverse class owners via ScopeUtil in order to prevent switching from stubs to AST
527b224: Compare decorators by name preventing unnecessary switch from stubs to AST
d4d3308: Fix CCE (PY-10999).
8e0523a: Setup __loader__ for __main__ module (PY-10535).
273934b: Added test for PY-11337
989d3a3: PY-3569 Inspection to warn if a loop variable is assigned inside the loop
44efd68: fixed EA-53497 - assert: TextRange.<init>
85c7dee: better fix for IDEA-111684 (cherry picked from commit bb558e8)
50207de: 13.0.3 EAP
e3dcc49: IDEA-103743 Settings > Code Style > Arrangement UI glitch (after-review improvement) (cherry picked from commit 4269a85)
f6d1bd3: 1) IDEA-103743 Settings > Code Style > Arrangement UI glitch 2) checkbox unselection doesn't disable combobox (cherry picked from commit b788397)
e145138: Do not allow view to be larger than viewport with SCROLLBAR_NEVER policy
5ea4a3b: IDEA-118601 New Module: Maven: click on "Create from archetype" reverts typed coordinates. (cherry picked from commit 34d1109) +review CR-IC-3798
83fe636: hotfix: IDEA-119851 Gradle: the "out-of-process" mode doesn't work
0d06fcd: Merge branch '133' of git.labs.intellij.net:idea/community into 133
c1c74dc: Revert "updated external tools. Added annoying *.whl for the needs of virtualenv."
5e91a0d: advance bomb
37c6d1b: add read action (EA-51111)
239497a: read action
9f91062: PY-11882 Assignment to for loop inspection false positive PY-3569 Inspection to warn if a loop variable is assigned inside the loop
c571c78: Don't analyze target expressions not located in the current file
59eff48: PY-6955 Unused import not greyed out if also failing
2db3187: PY-6955 Unused import not greyed out if also failing
db42545: PY-6955 Unused import not greyed out if also failing (test refactored)
7aa1822: PY-3569 Inspection to warn if a loop variable is assigned inside the loop
086e91e: PY-3569 Inspection to warn if a loop variable is assigned inside the loop
a4d9d17: updated external tools. Added annoying *.whl for the needs of virtualenv.
e03288e: Cache presence or absence of a user skeleton for file in its user data
0f403e5: Rewritten PyQualifiedReference.collectAssignedAttributes() for better performance
cff2993: Cache the result of asQualifiedName()
938b089: Forgot call to super
5c00d1f: fixed missing sys import
7a48578: Disabled comment injector for Python for performance reasons
6e1a348: fixed missing sys import
ecc919e: fixed PY-11561 "Add super class call" incorrectly inserts parameter annotations
30556f2: fixed PY-11495 Create function: do not propose quick-fix for unresolved parts of fqn
3697485: fixed PY-11484 Implement abstract method: pushes docstring out of the way
5fa3f46: fixed isAbstractmethod
40ad42e: Fix align multiline elements in parenthesized expressions, parameters and arguments lists.
269d729: Cleanup of API for qualified names of expressions
51fb114: Method call in indenting statement should have continuation indent.
a29830e: fixed PY-11353 Creating Run Configuration from specific test gets the "target" wrong
4cbbccb: fixed PY-11312 False positive CamelCase variable imported as lowercase
72ace3a: fixed PY-11281 Convert dict comprehension to dict call omits if expression
145c46c: Deprecated PyResolveUtil.treeCrawlUp() as a slow way of traversing the PSI
04eb283: Made several internal methods of PyResolveUtil private
ffe45f7: fixed PY-11277 Python: Wrong "argument equals default" inspection
819364e: fixed PY-11617 Nosetest runner: simple function tests cannot jump to source
9b389fc: fixed PY-11696 Cancel after adding new interpreter removes configured project interpreter
a74d7e3: proper fix for PY-11879
23a7505: Added PyQualifiedReference.isQualified() that potentially doesn't require AST access
5991dac: Use ScopeUtil.getScopeOwner() for preventing unnecessary stubs to AST switch
04a4e01: fixed PY-11340 Invalid case for can't assign to literal inspection
0f03c21: fixed PY-11341 Invalid case for identifier expected inspection after as in with statement
90143fb: Fix continuation indentation in while statement (PY-11869).
bba7892: default test runner is unittest
92d2caf: Cache the results of asQualifiedName() for performance reasons
7a9fffc: Indent comment in tuple (PY-11904).
5c7ac44: Fixed test data to satisfy PEP8.
1d845d9: fixed PY-11879 Refactor: Rename: references in ivar directive are not updated
50bcfc0: fixed PY-11884 Missing completion for finally keyword after else statement
f2a14b8: Insert two spaces before line comment (PY-11901).
17e208c: Fix indent in parenthesized expression in indenting statement (PY-11868).
04c1a4a: Inject SQL only into strings that have SELECT/UPDATE... at the beginning
40ddc62: fixed PY-11428 "Variable in function should be lowercase" false positive for variables declared global
e214615: Try stub-based containers for Python PSI elements instead of getParent()
b7f8286: Use hasDefaultValue() instead of getDefaultValue() in order to prevent switching from stubs to AST
4831476: Qualified targets are never local
68e8c17: Use isQualified() instead of getQualifier() in order to prevent switching from stubs to AST
d351953: Find owner via ScopeUtil in order to prevent switching from stubs to AST
28b4b21: Note about stubs to AST
65a8a45: Traverse class owners via ScopeUtil in order to prevent switching from stubs to AST
51aef87: Compare decorators by name preventing unnecessary switch from stubs to AST
df0f3bb: Fixed NPE
9da12c1: Calculate iteration type via types, not PyClass elements
ae275ce: fixed PY-11875 Pycharm code analysis stalls on specific code    (caused by AIOOB in getArguments of decorator)
a38300c: Removed redundant PyTypeProvider.getIterationType()
8e05ff9: Types of Enum members' fields and type of Enum.__members__
94cb03f: Fixed PyABCUtil.isSubtype() check for class definitions that have metaclasses
0060111: Type provider for enum.Enum members
cbb65bb: Store metaclass qualified name in class stub for better performance
79b43ed: Added PyClass.getMetaClassExpression()
7916719: Extracted getMetaClassExpression()
44a5f41: Evaluate metaclass type using TypeEvalContext
55fdf8e: Check __metaclass__ attribute only for Python 2.x
7afe4fc: Refactored PyUtil.getMetaClass() into PyClass.getMetaClassType()
14f98ae: Keywords already contains 'as' and 'with'
c38e6a3: Merge PyKeywords with PyNames
c4a0746: Extracted PyStdlibTypeProvider.getNamedTupleType()

Change-Id: Ia6001b030336ec63b47f7b49d53a595cc7fc0598
diff --git a/python/testData/addImport/comment.after.py b/python/testData/addImport/comment.after.py
index 777f480..a816490 100644
--- a/python/testData/addImport/comment.after.py
+++ b/python/testData/addImport/comment.after.py
@@ -1 +1 @@
-from urllib import urlopen, urlencode, unquote_plus   # this is a comment
\ No newline at end of file
+from urllib import urlopen, urlencode, unquote_plus  # this is a comment
\ No newline at end of file
diff --git a/python/testData/formatter/alignInCallExpression.py b/python/testData/formatter/alignInCallExpression.py
new file mode 100644
index 0000000..0c1dff1
--- /dev/null
+++ b/python/testData/formatter/alignInCallExpression.py
@@ -0,0 +1,3 @@
+foo(1 +
+    x.
+        call())
\ No newline at end of file
diff --git a/python/testData/formatter/alignInCallExpression_after.py b/python/testData/formatter/alignInCallExpression_after.py
new file mode 100644
index 0000000..48c17a1
--- /dev/null
+++ b/python/testData/formatter/alignInCallExpression_after.py
@@ -0,0 +1,3 @@
+foo(1 +
+    x.
+    call())
\ No newline at end of file
diff --git a/python/testData/formatter/alignInNestedCallInWith.py b/python/testData/formatter/alignInNestedCallInWith.py
new file mode 100644
index 0000000..ccf3783
--- /dev/null
+++ b/python/testData/formatter/alignInNestedCallInWith.py
@@ -0,0 +1,10 @@
+import logging
+from nose.tools import assert_raises_regex
+
+
+def _assert_stuff(i):
+    with assert_raises_regex(
+            logging.INFO,
+            'Did stuff to {} because of reasons that take up a whole line of text'.format(
+                    i.relname)):
+        pass
\ No newline at end of file
diff --git a/python/testData/formatter/alignInNestedCallInWith_after.py b/python/testData/formatter/alignInNestedCallInWith_after.py
new file mode 100644
index 0000000..b64caa7
--- /dev/null
+++ b/python/testData/formatter/alignInNestedCallInWith_after.py
@@ -0,0 +1,10 @@
+import logging
+from nose.tools import assert_raises_regex
+
+
+def _assert_stuff(i):
+    with assert_raises_regex(
+            logging.INFO,
+            'Did stuff to {} because of reasons that take up a whole line of text'.format(
+             i.relname)):
+        pass
\ No newline at end of file
diff --git a/python/testData/formatter/alignInParameterList.py b/python/testData/formatter/alignInParameterList.py
new file mode 100644
index 0000000..1a79766
--- /dev/null
+++ b/python/testData/formatter/alignInParameterList.py
@@ -0,0 +1,4 @@
+def foo(x=
+        y.
+            call()):
+    pass
\ No newline at end of file
diff --git a/python/testData/formatter/alignInParameterList_after.py b/python/testData/formatter/alignInParameterList_after.py
new file mode 100644
index 0000000..c3291b2
--- /dev/null
+++ b/python/testData/formatter/alignInParameterList_after.py
@@ -0,0 +1,4 @@
+def foo(x=
+        y.
+        call()):
+    pass
\ No newline at end of file
diff --git a/python/testData/formatter/alignInParenthesizedExpression.py b/python/testData/formatter/alignInParenthesizedExpression.py
new file mode 100644
index 0000000..ea97ade
--- /dev/null
+++ b/python/testData/formatter/alignInParenthesizedExpression.py
@@ -0,0 +1,8 @@
+print(1 + (1 + (1
+                +
+                x
+                    .calc())
+           +
+           x.
+               calc()
+))
\ No newline at end of file
diff --git a/python/testData/formatter/alignInParenthesizedExpression_after.py b/python/testData/formatter/alignInParenthesizedExpression_after.py
new file mode 100644
index 0000000..868557c
--- /dev/null
+++ b/python/testData/formatter/alignInParenthesizedExpression_after.py
@@ -0,0 +1,8 @@
+print(1 + (1 + (1
+                +
+                x
+                .calc())
+           +
+           x.
+           calc()
+))
\ No newline at end of file
diff --git a/python/testData/formatter/commentInEmptyTuple.py b/python/testData/formatter/commentInEmptyTuple.py
new file mode 100644
index 0000000..fffda70
--- /dev/null
+++ b/python/testData/formatter/commentInEmptyTuple.py
@@ -0,0 +1,3 @@
+var_name = (
+# comment
+)
\ No newline at end of file
diff --git a/python/testData/formatter/commentInEmptyTuple_after.py b/python/testData/formatter/commentInEmptyTuple_after.py
new file mode 100644
index 0000000..a8572fd
--- /dev/null
+++ b/python/testData/formatter/commentInEmptyTuple_after.py
@@ -0,0 +1,3 @@
+var_name = (
+    # comment
+)
\ No newline at end of file
diff --git a/python/testData/formatter/continuationIndentInIndentingStatement.py b/python/testData/formatter/continuationIndentInIndentingStatement.py
index 5822bc4..38c7910 100644
--- a/python/testData/formatter/continuationIndentInIndentingStatement.py
+++ b/python/testData/formatter/continuationIndentInIndentingStatement.py
@@ -28,4 +28,12 @@
     pass
 except \
     AttributeError:
+    pass
+
+while value \
+    in values:  # <- missing continuation indent here
+    do_smth()
+
+if (1 + x.
+    value()):
     pass
\ No newline at end of file
diff --git a/python/testData/formatter/continuationIndentInIndentingStatement2.py b/python/testData/formatter/continuationIndentInIndentingStatement2.py
new file mode 100644
index 0000000..63957fb
--- /dev/null
+++ b/python/testData/formatter/continuationIndentInIndentingStatement2.py
@@ -0,0 +1,4 @@
+def f(value, value1, value2):
+    if value in (
+        value1, value2) or value == 0:   # <- missing continuation indent here
+        return False
\ No newline at end of file
diff --git a/python/testData/formatter/continuationIndentInIndentingStatement2_after.py b/python/testData/formatter/continuationIndentInIndentingStatement2_after.py
new file mode 100644
index 0000000..b76f2ac
--- /dev/null
+++ b/python/testData/formatter/continuationIndentInIndentingStatement2_after.py
@@ -0,0 +1,4 @@
+def f(value, value1, value2):
+    if value in (
+            value1, value2) or value == 0:  # <- missing continuation indent here
+        return False
\ No newline at end of file
diff --git a/python/testData/formatter/continuationIndentInIndentingStatement_after.py b/python/testData/formatter/continuationIndentInIndentingStatement_after.py
index f38dd51..be17337 100644
--- a/python/testData/formatter/continuationIndentInIndentingStatement_after.py
+++ b/python/testData/formatter/continuationIndentInIndentingStatement_after.py
@@ -28,4 +28,12 @@
     pass
 except \
         AttributeError:
+    pass
+
+while value \
+        in values:  # <- missing continuation indent here
+    do_smth()
+
+if (1 + x.
+        value()):
     pass
\ No newline at end of file
diff --git a/python/testData/formatter/wrapOnDot_after.py b/python/testData/formatter/wrapOnDot_after.py
index c4f7e7e..e42d177 100644
--- a/python/testData/formatter/wrapOnDot_after.py
+++ b/python/testData/formatter/wrapOnDot_after.py
@@ -1,2 +1,2 @@
 sitesettings = call(settings_manager
-    .get_whitelabel_settings_by_site_id(myuser.site_id))
\ No newline at end of file
+                    .get_whitelabel_settings_by_site_id(myuser.site_id))
\ No newline at end of file
diff --git a/python/testData/highlighting/assignmentTargetWith.py b/python/testData/highlighting/assignmentTargetWith.py
index f516b41..f1e6493 100644
--- a/python/testData/highlighting/assignmentTargetWith.py
+++ b/python/testData/highlighting/assignmentTargetWith.py
@@ -1,2 +1,2 @@
-with open("") as <error descr="can't assign to operator">my_<<var</error>:
+with open("") as <error descr="Can't assign to operator">my_<<var</error>:
     pass
\ No newline at end of file
diff --git a/python/testData/highlighting/assignmentTargets.py b/python/testData/highlighting/assignmentTargets.py
index 731541d..295cd8f 100644
--- a/python/testData/highlighting/assignmentTargets.py
+++ b/python/testData/highlighting/assignmentTargets.py
@@ -1,31 +1,31 @@
 # fail
 
-<error descr="can't assign to function call">int(1)</error> = 1
+<error descr="Can't assign to function call">int(1)</error> = 1
 
-<error descr="can't assign to literal">12</error> = 1
+<error descr="Can't assign to literal">12</error> = 1
 
-<error descr="can't assign to operator">1 + 21</error> = 12
+<error descr="Can't assign to operator">1 + 21</error> = 12
 
-result = <error descr="can't assign to operator">a < c and c</error> = 4
+result = <error descr="Can't assign to operator">a < c and c</error> = 4
 
-<error descr="can't assign to ()">()</error> = 123
-<error descr="can't assign to []">[]</error> = 1
-[<error descr="can't assign to literal">1</error>] = 1
-<error descr="can't assign to literal">{}</error> = 1
-<error descr="can't assign to literal">{1, 2, 3}</error> = 1
+<error descr="Can't assign to ()">()</error> = 123
+<error descr="Can't assign to []">[]</error> = 1
+[<error descr="Can't assign to literal">1</error>] = 1
+<error descr="Can't assign to literal">{}</error> = 1
+<error descr="Can't assign to literal">{1, 2, 3}</error> = 1
 
-(<error descr="can't assign to literal">1</error>,(<error descr="can't assign to literal">2</error>, <error descr="can't assign to literal">3</error>)) = 3,(4,5)
-del <error descr="can't delete literal">1</error>
-del <error descr="can't delete function call">int()</error>
+(<error descr="Can't assign to literal">1</error>,(<error descr="Can't assign to literal">2</error>, <error descr="Can't assign to literal">3</error>)) = 3,(4,5)
+del <error descr="Can't delete literal">1</error>
+del <error descr="Can't delete function call">int()</error>
 
-for <error descr="can't assign to literal">1</error> in []:
+for <error descr="Can't assign to literal">1</error> in []:
   pass
 
-for (<error descr="can't assign to literal">1</error>,(<error descr="can't assign to literal">2</error>,)) in [12]:
+for (<error descr="Can't assign to literal">1</error>,(<error descr="Can't assign to literal">2</error>,)) in [12]:
   pass
 
-<error descr="augmented assign to dict comprehension not possible">{ x: y for y, x in ((1, 2), (3, 4)) }</error> += 5
-<error descr="can't assign to set comprehension">{ x for x in (1, 2) }</error> = 5
+<error descr="Augmented assign to dict comprehension not possible">{ x: y for y, x in ((1, 2), (3, 4)) }</error> += 5
+<error descr="Can't assign to set comprehension">{ x for x in (1, 2) }</error> = 5
 
 # ok
 
diff --git a/python/testData/inspections/AddCallSuperAnnotations.py b/python/testData/inspections/AddCallSuperAnnotations.py
new file mode 100644
index 0000000..b50ae1b
--- /dev/null
+++ b/python/testData/inspections/AddCallSuperAnnotations.py
@@ -0,0 +1,8 @@
+class Example1:
+    def __init__(self, field1: str):
+        self.field1 = field1
+
+
+class Example2(Example1):
+    def <warning descr="Call to __init__ of super class is missed">__i<caret>nit__</warning>(self):  ## Missed call to __init__ of super class
+        pass
\ No newline at end of file
diff --git a/python/testData/inspections/AddCallSuperAnnotations_after.py b/python/testData/inspections/AddCallSuperAnnotations_after.py
new file mode 100644
index 0000000..4bfd08c
--- /dev/null
+++ b/python/testData/inspections/AddCallSuperAnnotations_after.py
@@ -0,0 +1,8 @@
+class Example1:
+    def __init__(self, field1: str):
+        self.field1 = field1
+
+
+class Example2(Example1):
+    def __init__(self, field1):
+        super().__init__(field1)
\ No newline at end of file
diff --git a/python/testData/inspections/DictComprehensionToCall.py b/python/testData/inspections/DictComprehensionToCall.py
new file mode 100644
index 0000000..b360be7
--- /dev/null
+++ b/python/testData/inspections/DictComprehensionToCall.py
@@ -0,0 +1 @@
+var = <warning descr="Python version 2.4, 2.5, 2.6, 3.0 do not support dictionary comprehensions">{k: v for k, v in zip('abc', <caret>range(3)) if k % 2}</warning>
\ No newline at end of file
diff --git a/python/testData/inspections/DictComprehensionToCall_after.py b/python/testData/inspections/DictComprehensionToCall_after.py
new file mode 100644
index 0000000..a71f9ff
--- /dev/null
+++ b/python/testData/inspections/DictComprehensionToCall_after.py
@@ -0,0 +1 @@
+var = dict([(k, v) for k, v in zip('abc', range(3)) if k % 2])
\ No newline at end of file
diff --git a/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py b/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py
index bda25d3..b75341f 100644
--- a/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py
+++ b/python/testData/inspections/PyArgumentEqualDefaultInspection/test.py
@@ -67,3 +67,9 @@
 
 {1: 2}.get('foo', None) #pass
 {1: 2}.pop('foo', None) #pass
+
+def a(foo=1*1024):
+    print foo
+
+a( 1024*1024)
+
diff --git a/python/testData/inspections/PyAssignmentToLoopOrWithParameterInspection/bad.py b/python/testData/inspections/PyAssignmentToLoopOrWithParameterInspection/bad.py
new file mode 100644
index 0000000..c6492c1
--- /dev/null
+++ b/python/testData/inspections/PyAssignmentToLoopOrWithParameterInspection/bad.py
@@ -0,0 +1,62 @@
+i = []
+for i[0] in xrange(5):
+    for <weak_warning descr="Variable 'i[0]' already declared in 'for' loop or 'with' statement above">i[0]</weak_warning> in xrange(20, 25):
+        print("Inner", i)
+        for <weak_warning descr="Variable 'i' already declared in 'for' loop or 'with' statement above">i</weak_warning> in xrange(20, 25):
+            pass
+    print("Outer", i)
+
+for i in xrange(5):
+    for <weak_warning descr="Variable 'i' already declared in 'for' loop or 'with' statement above">i</weak_warning> in xrange(20, 25):
+        print("Inner", i)
+    print("Outer", i)
+
+for i in xrange(5):
+    i = []
+    for <weak_warning descr="Variable 'i[0]' already declared in 'for' loop or 'with' statement above">i[0]</weak_warning> in xrange(20, 25):
+        print("Inner", i)
+    print("Outer", i)
+
+i = [0]
+for i[0] in xrange(5):
+    for <weak_warning descr="Variable 'i[0]' already declared in 'for' loop or 'with' statement above">i[0]</weak_warning> in xrange(20, 25):
+        print("Inner", i)
+    print("Outer", i)
+
+i = [[]]
+for i[0] in xrange(5):
+    for <weak_warning descr="Variable 'i' already declared in 'for' loop or 'with' statement above">i</weak_warning> in xrange(20, 25):
+        print("Inner", i)
+    print("Outer", i)
+
+with open("a") as f:
+    spam(f)
+    f.eggs()
+    with open("b") as <weak_warning descr="Variable 'f' already declared in 'for' loop or 'with' statement above">f</weak_warning>: #
+        pass
+
+with open("a") as z, open("A") as f:
+    spam(f)
+    f.eggs()
+    for (a,b,c,d,(e,<weak_warning descr="Variable 'f' already declared in 'for' loop or 'with' statement above">f</weak_warning>)) in []:
+        pass
+
+
+with open("a") as f:
+    spam(f)
+    f.eggs()
+    for z in []:
+        with open("b") as q:
+            with open("a") as <weak_warning descr="Variable 'f' already declared in 'for' loop or 'with' statement above">f</weak_warning>: #
+                pass
+
+
+class Foo(object):
+    def __init__(self):
+        super(Foo, self).__init__()
+        self.data = "ddd"
+
+    def foo(self):
+        for self.data in [1,2,3]:
+            for <weak_warning descr="Variable 'self.data' already declared in 'for' loop or 'with' statement above">self.data</weak_warning> in [1,2,3]:
+                pass
\ No newline at end of file
diff --git a/python/testData/inspections/PyAssignmentToLoopOrWithParameterInspection/good.py b/python/testData/inspections/PyAssignmentToLoopOrWithParameterInspection/good.py
new file mode 100644
index 0000000..f324656
--- /dev/null
+++ b/python/testData/inspections/PyAssignmentToLoopOrWithParameterInspection/good.py
@@ -0,0 +1,89 @@
+from spam import eggs
+
+for eggs in (1, 12):
+    eggs = 12
+
+for a in (1, 12):
+    for b in (2, 24):
+        for (c, d) in {"C": "D"}.items():
+            (e, f) = (a, d)
+
+i = 12
+print(i)
+(z, x) = (i, 12)
+print(z)
+
+for root in settings.STATICFILES_DIRS:
+    if isinstance(root, (list, tuple)):
+        prefix, root = root
+
+
+for field, model in self.model._meta.get_concrete_fields_with_model():
+    if model is None:
+        model = self.model
+
+with open('a', 'w') as a, open('b', 'w') as b:
+    do_something()
+
+
+for f in [1,2,3]:
+    f = f + 1
+
+for f in [1,2,3]:
+    f = spam(f)
+
+for f in [1,2,3]:
+    f = eggs(lambda x: x + f)
+
+q = []
+for q[0] in [1,2,3]:
+    q[0] = eggs(q)
+
+q = []
+for q[0] in [1,2,3]:
+    q[0] = eggs(q)
+
+for f in [1,2,3]:
+    f = eggs(lambda x: x, f)
+
+for a in [1,2]:
+    pass
+
+for a in [1,2]:
+    pass
+
+b = 12
+for b in [1,2]:
+    pass
+
+for item in range(5):
+    want_to_import = False
+    print want_to_import
+    want_to_import = 2          #No error should be here
+    if True:
+        pass
+
+for ((a, b), (c, d)) in {(1, 2): (3, 4)}.items():
+    print b
+
+x = [1]
+for x[0] in range(1,2):
+    print i
+
+for x[i] in range(1,2):
+    print i
+
+x = [[1]]
+for x[0][0] in range(1,2):
+    x[0][1] = 1
+
+class Foo(object):
+    def __init__(self):
+        super(Foo, self).__init__()
+        self.data = "ddd"
+
+    def foo(self):
+        data, self.data = self.data
+        for data in [1,2,3]:
+            for self.data in [1,2,3]:
+                pass
diff --git a/python/testData/inspections/PyPep8NamingInspection/globals.py b/python/testData/inspections/PyPep8NamingInspection/globals.py
new file mode 100644
index 0000000..c055acc
--- /dev/null
+++ b/python/testData/inspections/PyPep8NamingInspection/globals.py
@@ -0,0 +1,14 @@
+from contextlib import contextmanager
+
+MUST_REFRESH_CACHE = False
+
+
+@contextmanager
+def fresh_per_request_cache():
+    global MUST_REFRESH_CACHE
+    orig = MUST_REFRESH_CACHE
+    MUST_REFRESH_CACHE = True
+    try:
+        yield
+    finally:
+        MUST_REFRESH_CACHE = orig
\ No newline at end of file
diff --git a/python/testData/inspections/PyPep8NamingInspection/importCamelAsLower.py b/python/testData/inspections/PyPep8NamingInspection/importCamelAsLower.py
index 94a1139..77c27c7 100644
--- a/python/testData/inspections/PyPep8NamingInspection/importCamelAsLower.py
+++ b/python/testData/inspections/PyPep8NamingInspection/importCamelAsLower.py
@@ -1 +1,2 @@
 from x import TestX as <weak_warning descr="CamelCase variable imported as lowercase">test</weak_warning>
+import Exceptions.tt as user_defined_properties
diff --git a/python/testData/inspections/PyPropertyAccessInspection/test.py b/python/testData/inspections/PyPropertyAccessInspection/test.py
index a42b78f..c140b8a 100644
--- a/python/testData/inspections/PyPropertyAccessInspection/test.py
+++ b/python/testData/inspections/PyPropertyAccessInspection/test.py
@@ -22,7 +22,7 @@
 
 <warning descr="Property 'readonly' cannot be set">a.readonly</warning> += 1
 del <warning descr="Property 'readonly' cannot be deleted">a.readonly</warning>
-del <error descr="can't delete function call">a.readonly()</error> # Error, delete the result of function
+del <error descr="Can't delete function call">a.readonly()</error> # Error, delete the result of function
 
 a.writeonly = 1
 <warning descr="Property 'writeonly' cannot be read">a.writeonly</warning> += 1
diff --git a/python/testData/inspections/PyTypeCheckerInspection/MetaClassIteration.py b/python/testData/inspections/PyTypeCheckerInspection/MetaClassIteration.py
new file mode 100644
index 0000000..0ec6926
--- /dev/null
+++ b/python/testData/inspections/PyTypeCheckerInspection/MetaClassIteration.py
@@ -0,0 +1,31 @@
+class M1(type):
+    def __iter__(self):
+        pass
+
+
+class M2(type):
+    pass
+
+
+class C1(object):
+    __metaclass__ = M1
+
+
+class C2(object):
+    __metaclass__ = M2
+
+
+class B1(C1):
+    pass
+
+
+for x in C1:
+    pass
+
+
+for y in <warning descr="Expected 'collections.Iterable', got 'C2' instead">C2</warning>:
+    pass
+
+
+for z in B1:
+    pass
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/FromPackageImportBuiltin/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection/FromPackageImportBuiltin/a.py
index a66445c..8880a48 100644
--- a/python/testData/inspections/PyUnresolvedReferencesInspection/FromPackageImportBuiltin/a.py
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/FromPackageImportBuiltin/a.py
@@ -1 +1,3 @@
 from importSource import <error descr="Unresolved reference 'len'">len</error>
+
+len()
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImported/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImported/a.py
new file mode 100644
index 0000000..b0ad821
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImported/a.py
@@ -0,0 +1 @@
+<warning descr="Unused import statement">from my_module import <error descr="Unresolved reference 'eggs'">eggs</error></warning>
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImported/my_module.py b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImported/my_module.py
new file mode 100644
index 0000000..51d8ead
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImported/my_module.py
@@ -0,0 +1,2 @@
+def my_func():
+    pass
\ No newline at end of file
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImportedSeveralTimes/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImportedSeveralTimes/a.py
new file mode 100644
index 0000000..5e1c928
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImportedSeveralTimes/a.py
@@ -0,0 +1,2 @@
+<warning descr="Unused import statement">from my_module import <error descr="Unresolved reference 'eggs'">eggs</error></warning>
+<warning descr="Unused import statement">from my_module import <error descr="Unresolved reference 'eggs'">eggs</error></warning>
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImportedSeveralTimes/my_module.py b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImportedSeveralTimes/my_module.py
new file mode 100644
index 0000000..51d8ead
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/UnusedUnresolvedNameImportedSeveralTimes/my_module.py
@@ -0,0 +1,2 @@
+def my_func():
+    pass
\ No newline at end of file
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/a.py
new file mode 100644
index 0000000..767f9bf
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/a.py
@@ -0,0 +1,4 @@
+from my_package.my_module import <error descr="Unresolved reference 'eggs'">eggs</error>
+from my_package.my_module import <error descr="Unresolved reference 'eggs'">eggs</error>
+
+eggs()
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/my_package/__init__.py b/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/my_package/__init__.py
new file mode 100644
index 0000000..a5f9f02
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/my_package/__init__.py
@@ -0,0 +1 @@
+__author__ = 'Ilya.Kazakevich'
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/my_package/my_module.py b/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/my_package/my_module.py
new file mode 100644
index 0000000..51d8ead
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/UsedUnresolvedNameImportedSeveralTimes/my_package/my_module.py
@@ -0,0 +1,2 @@
+def my_func():
+    pass
\ No newline at end of file
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/importFunction.py b/python/testData/inspections/PyUnresolvedReferencesInspection/importFunction.py
index 2bfbaa3..75ddd5c 100644
--- a/python/testData/inspections/PyUnresolvedReferencesInspection/importFunction.py
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/importFunction.py
@@ -1 +1,3 @@
 import collections.<warning descr="No module named OrderedDict">OrderedDict</warning>
+
+collections.OrderedDict()
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/unresolvedImport.py b/python/testData/inspections/PyUnresolvedReferencesInspection/unresolvedImport.py
index e96da63..91aae42 100644
--- a/python/testData/inspections/PyUnresolvedReferencesInspection/unresolvedImport.py
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/unresolvedImport.py
@@ -1 +1,3 @@
 import <error descr="No module named wurm">wurm</error>
+
+wurm()
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/unusedUnresolvedModuleImported.py b/python/testData/inspections/PyUnresolvedReferencesInspection/unusedUnresolvedModuleImported.py
new file mode 100644
index 0000000..3351b1d
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/unusedUnresolvedModuleImported.py
@@ -0,0 +1 @@
+<warning descr="Unused import statement">import <error descr="No module named spam">spam</error></warning>
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/unusedUnresolvedPackageImported.py b/python/testData/inspections/PyUnresolvedReferencesInspection/unusedUnresolvedPackageImported.py
new file mode 100644
index 0000000..ba929a6
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection/unusedUnresolvedPackageImported.py
@@ -0,0 +1 @@
+<warning descr="Unused import statement">import <error descr="No module named spam">spam</error>.eggs</warning>
\ No newline at end of file
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection3K/EnumMemberAttributes/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection3K/EnumMemberAttributes/a.py
new file mode 100644
index 0000000..9d4ffeb
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection3K/EnumMemberAttributes/a.py
@@ -0,0 +1,18 @@
+from enum import Enum
+
+
+class Color(Enum):
+    red = 1
+    green = 2
+    blue = 3
+
+
+print(Color.red.name, Color.red.name.upper())
+print(Color.red.name.<warning descr="Unresolved attribute reference 'foo' for class 'str'">foo</warning>)
+print(Color.red.value, Color.red.value.real)
+print(Color.red.value.<warning descr="Unresolved attribute reference 'foo' for class 'int'">foo</warning>)
+print(Color.red.<warning descr="Unresolved attribute reference 'foo' for class 'Color'">foo</warning>)
+
+
+print(Color.__members__.items())
+print(Color.__members__.<warning descr="Unresolved attribute reference 'foo' for class 'dict'">foo</warning>)
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection3K/EnumMemberAttributes/enum.py b/python/testData/inspections/PyUnresolvedReferencesInspection3K/EnumMemberAttributes/enum.py
new file mode 100644
index 0000000..368f85a
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection3K/EnumMemberAttributes/enum.py
@@ -0,0 +1,17 @@
+class EnumMeta(type):
+    """Fake Enum metaclass."""
+    @property
+    def __members__(cls):
+        return {}
+
+
+class Enum(object, metaclass=EnumMeta):
+    """Fake Enum class."""
+
+    @DynamicClassAttribute
+    def name(self):
+        return self._name_
+
+    @DynamicClassAttribute
+    def value(self):
+        return self._value_
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection3K/MetaclassStub/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection3K/MetaclassStub/a.py
new file mode 100644
index 0000000..bf0ee44
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection3K/MetaclassStub/a.py
@@ -0,0 +1,5 @@
+from m1 import C
+
+c = C()
+print(C.foo(), C.<warning descr="Unresolved attribute reference 'bar' for class 'C'">bar</warning>())
+print(c.<warning descr="Unresolved attribute reference 'foo' for class 'C'">foo</warning>())
\ No newline at end of file
diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection3K/MetaclassStub/m1.py b/python/testData/inspections/PyUnresolvedReferencesInspection3K/MetaclassStub/m1.py
new file mode 100644
index 0000000..bd6222a
--- /dev/null
+++ b/python/testData/inspections/PyUnresolvedReferencesInspection3K/MetaclassStub/m1.py
@@ -0,0 +1,7 @@
+class M(type):
+    def foo(cls):
+        pass
+
+
+class C(metaclass=M):
+    pass
diff --git a/python/testData/inspections/QualifyByImport_after.py b/python/testData/inspections/QualifyByImport_after.py
index 7718df7..aa433ef 100644
--- a/python/testData/inspections/QualifyByImport_after.py
+++ b/python/testData/inspections/QualifyByImport_after.py
@@ -1,3 +1,3 @@
 import QualifyByImportFoo
 
-QualifyByImportFoo.foo # must be qualified
+QualifyByImportFoo.foo  # must be qualified
diff --git a/python/testData/inspections/UnresolvedRefNoCreateFunction.py b/python/testData/inspections/UnresolvedRefNoCreateFunction.py
new file mode 100644
index 0000000..ae313c0
--- /dev/null
+++ b/python/testData/inspections/UnresolvedRefNoCreateFunction.py
@@ -0,0 +1 @@
+<error descr="Unresolved reference 'my_ref'">my_<caret>ref</error>.do_smth(1, 2)
\ No newline at end of file
diff --git a/python/testData/keywordCompletion/finallyInElse.after.py b/python/testData/keywordCompletion/finallyInElse.after.py
new file mode 100644
index 0000000..be2ee7a
--- /dev/null
+++ b/python/testData/keywordCompletion/finallyInElse.after.py
@@ -0,0 +1,8 @@
+def f():
+    try:
+        a = 1
+    except:
+        b = 1
+    else:
+        c = 1
+    finally:
\ No newline at end of file
diff --git a/python/testData/keywordCompletion/finallyInElse.py b/python/testData/keywordCompletion/finallyInElse.py
new file mode 100644
index 0000000..5f170c7
--- /dev/null
+++ b/python/testData/keywordCompletion/finallyInElse.py
@@ -0,0 +1,8 @@
+def f():
+    try:
+        a = 1
+    except:
+        b = 1
+    else:
+        c = 1
+        fin<caret>
\ No newline at end of file
diff --git a/python/testData/optimizeImports/insertBlankLines.after.py b/python/testData/optimizeImports/insertBlankLines.after.py
index e3719e0..62bebf5 100644
--- a/python/testData/optimizeImports/insertBlankLines.after.py
+++ b/python/testData/optimizeImports/insertBlankLines.after.py
@@ -8,3 +8,4 @@
 
 sys.path
 datetime.datetime
+foo.bar()
\ No newline at end of file
diff --git a/python/testData/optimizeImports/insertBlankLines.py b/python/testData/optimizeImports/insertBlankLines.py
index 9e77f44..fcf075f 100644
--- a/python/testData/optimizeImports/insertBlankLines.py
+++ b/python/testData/optimizeImports/insertBlankLines.py
@@ -7,3 +7,4 @@
 
 sys.path
 datetime.datetime
+foo.bar()
\ No newline at end of file
diff --git a/python/testData/optimizeImports/order.after.py b/python/testData/optimizeImports/order.after.py
index e3719e0..62bebf5 100644
--- a/python/testData/optimizeImports/order.after.py
+++ b/python/testData/optimizeImports/order.after.py
@@ -8,3 +8,4 @@
 
 sys.path
 datetime.datetime
+foo.bar()
\ No newline at end of file
diff --git a/python/testData/optimizeImports/order.py b/python/testData/optimizeImports/order.py
index ad3147a..eaa3e27 100644
--- a/python/testData/optimizeImports/order.py
+++ b/python/testData/optimizeImports/order.py
@@ -6,3 +6,4 @@
 
 sys.path
 datetime.datetime
+foo.bar()
\ No newline at end of file
diff --git a/python/testData/optimizeImports/unresolved.after.py b/python/testData/optimizeImports/unresolved.after.py
index b014e1f..8b13789 100644
--- a/python/testData/optimizeImports/unresolved.after.py
+++ b/python/testData/optimizeImports/unresolved.after.py
@@ -1 +1 @@
-import xyzzy_shazam
+
diff --git a/python/testData/override/docstring.py b/python/testData/override/docstring.py
new file mode 100644
index 0000000..3670ee1
--- /dev/null
+++ b/python/testData/override/docstring.py
@@ -0,0 +1,9 @@
+class Abstract(object):
+
+  @abstractmethod
+  def foo(self, bar):
+    pass
+
+
+class Concrete(Abstract):
+  """The docstring."""
\ No newline at end of file
diff --git a/python/testData/override/docstring_after.py b/python/testData/override/docstring_after.py
new file mode 100644
index 0000000..a8b3696
--- /dev/null
+++ b/python/testData/override/docstring_after.py
@@ -0,0 +1,12 @@
+class Abstract(object):
+
+  @abstractmethod
+  def foo(self, bar):
+    pass
+
+
+class Concrete(Abstract):
+  """The docstring."""
+
+  def foo(self, bar):
+      <selection>super(Concrete, self).foo(bar)</selection>
\ No newline at end of file
diff --git a/python/testData/psi/WithMissingID.txt b/python/testData/psi/WithMissingID.txt
index fa8caab..afd37e7 100644
--- a/python/testData/psi/WithMissingID.txt
+++ b/python/testData/psi/WithMissingID.txt
@@ -13,7 +13,7 @@
           PsiElement(Py:RPAR)(')')
       PsiWhiteSpace(' ')
       PsiElement(Py:AS_KEYWORD)('as')
-      PsiErrorElement:identifier expected
+      PsiErrorElement:Identifier expected
         <empty list>
     PsiWhiteSpace(' ')
     PsiElement(Py:COLON)(':')
diff --git a/python/testData/refactoring/extractmethod/Comment2.after.py b/python/testData/refactoring/extractmethod/Comment2.after.py
index 1260973..5e5fdc3 100644
--- a/python/testData/refactoring/extractmethod/Comment2.after.py
+++ b/python/testData/refactoring/extractmethod/Comment2.after.py
@@ -1,6 +1,6 @@
 class Foo():
     def baz():
-        tmp = "!" #try to extract this assignmet, either with or without this comment
+        tmp = "!"  #try to extract this assignmet, either with or without this comment
 
     baz()
 
diff --git a/python/testData/refactoring/extractmethod/ElseBody.after.py b/python/testData/refactoring/extractmethod/ElseBody.after.py
index 684a444..57b5fa0 100644
--- a/python/testData/refactoring/extractmethod/ElseBody.after.py
+++ b/python/testData/refactoring/extractmethod/ElseBody.after.py
@@ -1,5 +1,5 @@
 def baz(f_new):
-    length = len(f_new.readlines()) #<---extract something from here
+    length = len(f_new.readlines())  #<---extract something from here
     print("hi from else")
 
 
diff --git a/python/testData/refactoring/rename/docstringParams.py b/python/testData/refactoring/rename/docstringParams.py
new file mode 100644
index 0000000..4a79b84
--- /dev/null
+++ b/python/testData/refactoring/rename/docstringParams.py
@@ -0,0 +1,9 @@
+class SomeClass(object):
+    """ Awesome class
+
+    @ivar someVar: great stuff
+    @type someVar: string
+    """
+
+    def __init__(self):
+        self.some<caret>Var = None
\ No newline at end of file
diff --git a/python/testData/refactoring/rename/docstringParams_after.py b/python/testData/refactoring/rename/docstringParams_after.py
new file mode 100644
index 0000000..ae4d5e5
--- /dev/null
+++ b/python/testData/refactoring/rename/docstringParams_after.py
@@ -0,0 +1,9 @@
+class SomeClass(object):
+    """ Awesome class
+
+    @ivar bar: great stuff
+    @type bar: string
+    """
+
+    def __init__(self):
+        self.bar = None
\ No newline at end of file