mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-12195 Changing signature of decorator removes '@'
This commit is contained in:
+6
-2
@@ -110,8 +110,12 @@ public class PyChangeSignatureUsageProcessor implements ChangeSignatureUsageProc
|
||||
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(element.getProject());
|
||||
StringBuilder builder = buildSignature((PyChangeInfo)changeInfo, call);
|
||||
|
||||
final PyExpression newCall =
|
||||
elementGenerator.createExpressionFromText(LanguageLevel.forElement(element), builder.toString());
|
||||
final PyExpression newCall;
|
||||
if (call instanceof PyDecorator) {
|
||||
newCall = elementGenerator.createDecoratorList("@" + builder.toString()).getDecorators()[0];
|
||||
}
|
||||
else
|
||||
newCall = elementGenerator.createExpressionFromText(LanguageLevel.forElement(element), builder.toString());
|
||||
call.replace(newCall);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
def decorator(arg1):
|
||||
print('Wrapped with', arg1, arg2)
|
||||
def wraps(f):
|
||||
return f
|
||||
return wraps
|
||||
|
||||
@decorator('arg1')
|
||||
def do_things():
|
||||
print('Things done')
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
def dec<caret>orator(arg1, arg2):
|
||||
print('Wrapped with', arg1, arg2)
|
||||
def wraps(f):
|
||||
return f
|
||||
return wraps
|
||||
|
||||
@decorator('arg1', 'arg2')
|
||||
def do_things():
|
||||
print('Things done')
|
||||
+5
-1
@@ -31,7 +31,7 @@ import java.util.List;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
@TestDataPath("$CONTENT_ROOT/../testData/refactoring/changeSignature/")
|
||||
@TestDataPath("$CONTENT_ROOT/../testData/")
|
||||
public class PyChangeSignatureTest extends PyTestCase {
|
||||
|
||||
public void testChooseSuperMethod() {
|
||||
@@ -176,6 +176,10 @@ public class PyChangeSignatureTest extends PyTestCase {
|
||||
PyBundle.message("refactoring.change.signature.dialog.validation.parameter.name"));
|
||||
}
|
||||
|
||||
public void testDecorator() {
|
||||
doChangeSignatureTest("decorator", Arrays.asList(new PyParameterInfo(0, "arg1", null, false)));
|
||||
}
|
||||
|
||||
public void testNonDefaultAfterDefault() {
|
||||
doValidationTest(null, Arrays.asList(new PyParameterInfo(-1, "a", "2", false), new PyParameterInfo(1, "b", "2", false)), null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user