mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
allow evaluating method return type while calculating Introduce Variable name suggestions (PY-1336)
This commit is contained in:
@@ -73,7 +73,7 @@ abstract public class IntroduceHandler implements RefactoringActionHandler {
|
||||
if (text != null) {
|
||||
candidates.addAll(NameSuggestorUtil.generateNames(text));
|
||||
}
|
||||
PyType type = expression.getType(TypeEvalContext.fast());
|
||||
PyType type = expression.getType(TypeEvalContext.slow());
|
||||
if (type != null) {
|
||||
final String typeName = type.getName();
|
||||
if (typeName != null) {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class MyClass:
|
||||
pass
|
||||
|
||||
def factory():
|
||||
return MyClass()
|
||||
|
||||
<caret>factory()
|
||||
@@ -2,6 +2,7 @@ package com.jetbrains.python.refactoring;
|
||||
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.jetbrains.python.fixtures.PyLightFixtureTestCase;
|
||||
import com.jetbrains.python.psi.PyCallExpression;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
import com.jetbrains.python.refactoring.introduce.variable.VariableIntroduceHandler;
|
||||
|
||||
@@ -25,19 +26,25 @@ public class PyIntroduceVariableTest extends PyLightFixtureTestCase {
|
||||
}
|
||||
|
||||
public void testSuggestKeywordArgumentName() { // PY-1260
|
||||
myFixture.configureByFile(getTestName(true) + ".py");
|
||||
VariableIntroduceHandler handler = new VariableIntroduceHandler();
|
||||
PyExpression expr = PsiTreeUtil.getParentOfType(myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset()), PyExpression.class);
|
||||
final Collection<String> names = handler.getSuggestedNames(expr);
|
||||
assertTrue(names.contains("extra_context"));
|
||||
doTestSuggestions(PyExpression.class, "extra_context");
|
||||
}
|
||||
|
||||
public void testSuggestArgumentName() { // PY-1260
|
||||
doTestSuggestions(PyExpression.class, "extra_context");
|
||||
}
|
||||
|
||||
public void testSuggestTypeName() { // PY-1336
|
||||
doTestSuggestions(PyCallExpression.class, "my_class");
|
||||
}
|
||||
|
||||
private void doTestSuggestions(Class<? extends PyExpression> parentClass, String... expectedNames) {
|
||||
myFixture.configureByFile(getTestName(true) + ".py");
|
||||
VariableIntroduceHandler handler = new VariableIntroduceHandler();
|
||||
PyExpression expr = PsiTreeUtil.getParentOfType(myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset()), PyExpression.class);
|
||||
PyExpression expr = PsiTreeUtil.getParentOfType(myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset()), parentClass);
|
||||
final Collection<String> names = handler.getSuggestedNames(expr);
|
||||
assertTrue(names.contains("extra_context"));
|
||||
for (String expectedName : expectedNames) {
|
||||
assertTrue(names.contains(expectedName));
|
||||
}
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
|
||||
Reference in New Issue
Block a user