mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Add new method isKeywordOnly() in PyNamedParameter interface
This commit is contained in:
@@ -30,6 +30,14 @@ public interface PyNamedParameter extends PyParameter, PsiNamedElement, PsiNameI
|
||||
|
||||
boolean isKeywordContainer();
|
||||
|
||||
/**
|
||||
* Parameter is considered "keyword-only" if it appears after named or unnamed positional vararg parameter.
|
||||
* See PEP-3102 for more details.
|
||||
*
|
||||
* @return whether this parameter is keyword-only
|
||||
*/
|
||||
boolean isKeywordOnly();
|
||||
|
||||
/**
|
||||
* @param includeDefaultValue if true, include the default value after an " = ".
|
||||
* @return Canonical representation of parameter. Includes asterisks for *param and **param, and name.
|
||||
|
||||
@@ -295,7 +295,7 @@ public class AddCallSuperQuickFix implements LocalQuickFix {
|
||||
else if (param.getText().startsWith("*")) {
|
||||
positionalContainer = param;
|
||||
}
|
||||
else if (positionalContainer == null && singleStarParam == null) {
|
||||
else if (param.getAsNamed() == null || !param.getAsNamed().isKeywordOnly()) {
|
||||
if (param.hasDefaultValue()) {
|
||||
myOptionalParams.add(param);
|
||||
}
|
||||
|
||||
@@ -124,6 +124,26 @@ public class PyNamedParameterImpl extends PyBaseElementImpl<PyNamedParameterStub
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isKeywordOnly() {
|
||||
final PyParameterList parameters = getStubOrPsiParentOfType(PyParameterList.class);
|
||||
if (parameters == null) {
|
||||
return false;
|
||||
}
|
||||
boolean varargSeen = false;
|
||||
for (PyParameter param : parameters.getParameters()) {
|
||||
if (param == this) {
|
||||
break;
|
||||
}
|
||||
final PyNamedParameter named = param.getAsNamed();
|
||||
if ((named != null && named.isPositionalContainer()) || param instanceof PySingleStarParameter) {
|
||||
varargSeen = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return varargSeen;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PyExpression getDefaultValue() {
|
||||
final PyNamedParameterStub stub = getStub();
|
||||
|
||||
Reference in New Issue
Block a user