From e79b624ec387dc5be9424400998049e84deefa9e Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Tue, 6 Sep 2016 16:02:52 +0300 Subject: [PATCH] PY-20063 Fixed: Code introspection / autocomplete does not resolve types in Sets (and perhaps other collection types) when used with single-character iteration expressions Add skeletons for set.__iter__ --- python/helpers/python-skeletons/__builtin__.py | 6 ++++++ python/helpers/python-skeletons/builtins.py | 6 ++++++ python/testSrc/com/jetbrains/python/PyTypeTest.java | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/python/helpers/python-skeletons/__builtin__.py b/python/helpers/python-skeletons/__builtin__.py index 69e30af36951..cd5ecda0da56 100644 --- a/python/helpers/python-skeletons/__builtin__.py +++ b/python/helpers/python-skeletons/__builtin__.py @@ -2349,6 +2349,12 @@ class set(object): """ return False + def __iter__(self): + """ + :rtype: collections.Iterator[T] + """ + pass + class frozenset(object): """frozenset object.""" diff --git a/python/helpers/python-skeletons/builtins.py b/python/helpers/python-skeletons/builtins.py index 7171c52192ab..67f797586bb8 100644 --- a/python/helpers/python-skeletons/builtins.py +++ b/python/helpers/python-skeletons/builtins.py @@ -2039,6 +2039,12 @@ class set(object): """ return False + def __iter__(self): + """ + :rtype: collections.Iterator[T] + """ + pass + class frozenset(object): """frozenset object.""" diff --git a/python/testSrc/com/jetbrains/python/PyTypeTest.java b/python/testSrc/com/jetbrains/python/PyTypeTest.java index d8e4f32b2d01..3c386e2e59a0 100644 --- a/python/testSrc/com/jetbrains/python/PyTypeTest.java +++ b/python/testSrc/com/jetbrains/python/PyTypeTest.java @@ -1102,6 +1102,14 @@ public class PyTypeTest extends PyTestCase { TypeEvalContext.userInitiated(expr.getProject(), expr.getContainingFile())); } + // PY-20063 + public void testIteratedSetElement() { + doTest("int", + "xs = {1}\n" + + "for expr in xs:\n" + + " print(expr)"); + } + private static List getTypeEvalContexts(@NotNull PyExpression element) { return ImmutableList.of(TypeEvalContext.codeAnalysis(element.getProject(), element.getContainingFile()).withTracing(), TypeEvalContext.userInitiated(element.getProject(), element.getContainingFile()).withTracing());