mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
provide a reference inside qualified target expressions
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user