Summary: | Properties setters aren't supported and override the getter | ||
---|---|---|---|
Product: | [Developer tools] kdev-python | Reporter: | Nicolás Alvarez <nalvarez> |
Component: | Language support | Assignee: | Sven Brauch <mail> |
Status: | CONFIRMED --- | ||
Severity: | normal | CC: | |
Priority: | NOR | ||
Version: | 5.1.0 | ||
Target Milestone: | --- | ||
Platform: | Debian stable | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Nicolás Alvarez
2016-11-10 00:58:55 UTC
kdev-python doesn't really support decorators in general, there are only special-cases for essential builtin ones. In this case, @property is only handled in the code-completion, which avoids suggesting brackets. Really handling decorators will be tricky, especially property() which is quite complicated. Perhaps we could just add more special-cases for the time being. Git commit eec18d928db9bc1c698569a528819c0b23392dc1 by Francis Herne. Committed on 20/01/2017 at 23:01. Pushed by flherne into branch '5.1'. Very basic property getter support Property decorators were ignored except for code-completion, trying to access properties would get a function rather than the returned type. Just replace property functions with their return type in ExpressionVisitor::visitCall(). This only works for getter-only properties - if there's a setter function for the property (which idiomatically has the same name), visitCall() finds that declaration instead and gives the wrong return type. Still, it's useful in a good proportion of cases. To make this work properly, I think we need a specific declaration type for properties, and to update that when visiting the getter/setter instead of creating the function declarations directly in the class? One new test fail->pass. Two new tests still fail. No test regressions. Differential Revision: https://phabricator.kde.org/D4207 M +13 -7 duchain/expressionvisitor.cpp M +19 -3 duchain/tests/pyduchaintest.cpp https://commits.kde.org/kdev-python/eec18d928db9bc1c698569a528819c0b23392dc1 |