provide a reference inside qualified target expressions

This commit is contained in:
Dmitry Jemerov
2010-04-14 16:48:09 +04:00
parent f92fc0a577
commit 0edb7918ba
5 changed files with 27 additions and 2 deletions
@@ -18,7 +18,7 @@ import java.util.*;
* @author yole
*/
public class PyQualifiedReferenceImpl extends PyReferenceImpl {
public PyQualifiedReferenceImpl(PyReferenceExpressionImpl element) {
public PyQualifiedReferenceImpl(PyQualifiedExpression element) {
super(element);
}
@@ -33,7 +33,7 @@ import java.util.concurrent.atomic.AtomicInteger;
public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference {
protected final PyQualifiedExpression myElement;
public PyReferenceImpl(PyReferenceExpressionImpl element) {
public PyReferenceImpl(PyQualifiedExpression element) {
myElement = element;
}
@@ -3,6 +3,7 @@ package com.jetbrains.python.psi.impl;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.util.Pair;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.ResolveState;
import com.intellij.psi.scope.PsiScopeProcessor;
import com.intellij.psi.util.PsiTreeUtil;
@@ -161,4 +162,12 @@ public class PyTargetExpressionImpl extends PyPresentableElementImpl<PyTargetExp
final PyExpression value = findAssignedValue();
return value instanceof PyReferenceExpression ? ((PyReferenceExpression) value).asQualifiedName() : null;
}
@Override
public PsiReference getReference() {
if (getQualifier() != null) {
return new PyQualifiedReferenceImpl(this);
}
return null;
}
}
+11
View File
@@ -0,0 +1,11 @@
class Person(object):
def get_full_name(self):
return "%s %s" % (self.first_name, self.last_name)
def set_full_name(self, full_name):
self.first_name, self.last_name = full_name.split()
full_name = property(get_full_name, set_full_name)
p = Person()
p.fu<ref>ll_name = "Dmitry Jemerov"
@@ -239,4 +239,9 @@ public class PyResolveTest extends PyResolveTestCase {
PsiElement targetElement = resolve();
assertNull(targetElement);
}
public void testProperty() throws Exception {
PsiElement targetElement = resolve();
assertTrue(targetElement instanceof PyTargetExpression);
}
}