<table><tr><td style="">flherne created this revision.<br />Restricted Application added a subscriber: kdevelop-devel.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D5442" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>Currently slicing a tuple gets the original type, which is almost always incorrect (because in that case, the user wouldn't do it...)</p>
<p>It's quite common to take tuple slices between fixed indices, e.g.</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">foo = 1, 2.4, "str"
bar = foo[1:] # tuple of (float, str)
baz = foo[::-2] # tuple of (str, int)</pre></div>
<p>This patch gets the correct type if all three parameters (start, stop, step) are either integer literals or left empty. Otherwise it returns an empty tuple. Better would be an unsure-content tuple, but that doesn't exist yet.</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Fixes one existing test, no test regressions. Needs some more cases in the test suite.</p>
<p>Manual testing seems okay so far.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R53 KDevelop: Python Support</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D5442" rel="noreferrer">https://phabricator.kde.org/D5442</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>duchain/expressionvisitor.cpp<br />
duchain/tests/pyduchaintest.cpp</div></div></div><br /><div><strong>To: </strong>flherne, brauch<br /><strong>Cc: </strong>kdevelop-devel<br /></div>