/**
* @author yole
*/
-public interface ComprehensionComponent {
+public interface PyComprehensionComponent {
}
*/
public interface PyComprehensionElement extends PyExpression, PyNamedElementContainer {
PyExpression getResultExpression();
- List<ComprehensionComponent> getComponents();
- List<ComprhForComponent> getForComponents();
- List<ComprhIfComponent> getIfComponents();
+ List<PyComprehensionComponent> getComponents();
+ List<PyComprehensionForComponent> getForComponents();
+ List<PyComprehensionIfComponent> getIfComponents();
}
* User: dcheryasov
* Date: Jul 31, 2008
*/
-public interface ComprhForComponent extends ComprehensionComponent {
+public interface PyComprehensionForComponent extends PyComprehensionComponent {
PyExpression getIteratorVariable();
PyExpression getIteratedList();
boolean isAsync();
* User: dcheryasov
* Date: Jul 31, 2008
*/
-public interface ComprhIfComponent extends ComprehensionComponent {
+public interface PyComprehensionIfComponent extends PyComprehensionComponent {
@Nullable
PyExpression getTest();
}
myBuilder.startNode(node);
List<Instruction> iterators = new ArrayList<>();
- for (ComprehensionComponent component : node.getComponents()) {
- if (component instanceof ComprhForComponent) {
- final ComprhForComponent c = (ComprhForComponent) component;
+ for (PyComprehensionComponent component : node.getComponents()) {
+ if (component instanceof PyComprehensionForComponent) {
+ final PyComprehensionForComponent c = (PyComprehensionForComponent) component;
final PyExpression iteratedList = c.getIteratedList();
final PyExpression iteratorVariable = c.getIteratorVariable();
if (prevCondition != null) {
// Inner "for" and "if" constructs will be linked to all outer iterators
iterators.add(iterator);
}
- else if (component instanceof ComprhIfComponent) {
- final ComprhIfComponent c = (ComprhIfComponent) component;
+ else if (component instanceof PyComprehensionIfComponent) {
+ final PyComprehensionIfComponent c = (PyComprehensionIfComponent) component;
final PyExpression condition = c.getTest();
if (condition == null) {
continue;
private static PyForStatement createForLoop(final PyListCompExpression expression, final PyElementGenerator elementGenerator,
final String result) {
- final List<ComprehensionComponent> components = expression.getComponents();
+ final List<PyComprehensionComponent> components = expression.getComponents();
final StringBuilder stringBuilder = new StringBuilder();
int slashNum = 1;
- for (ComprehensionComponent component : components) {
- if (component instanceof ComprhForComponent) {
+ for (PyComprehensionComponent component : components) {
+ if (component instanceof PyComprehensionForComponent) {
stringBuilder.append("for ");
- stringBuilder.append(((ComprhForComponent)component).getIteratorVariable().getText());
+ stringBuilder.append(((PyComprehensionForComponent)component).getIteratorVariable().getText());
stringBuilder.append(" in ");
- stringBuilder.append(((ComprhForComponent)component).getIteratedList().getText());
+ stringBuilder.append(((PyComprehensionForComponent)component).getIteratedList().getText());
stringBuilder.append(":\n");
}
- if (component instanceof ComprhIfComponent) {
- final PyExpression test = ((ComprhIfComponent)component).getTest();
+ if (component instanceof PyComprehensionIfComponent) {
+ final PyExpression test = ((PyComprehensionIfComponent)component).getTest();
if (test != null) {
stringBuilder.append("if ");
stringBuilder.append(test.getText());
public void visitPyComprehensionElement(PyComprehensionElement node) {
super.visitPyComprehensionElement(node);
- for (ComprhForComponent forComponent : node.getForComponents()) {
+ for (PyComprehensionForComponent forComponent : node.getForComponents()) {
checkIteratedValue(forComponent.getIteratedList(), forComponent.isAsync());
}
}
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
assert keyValueExpression.getValue() != null;
- final List<ComprehensionComponent> components = expression.getComponents();
+ final List<PyComprehensionComponent> components = expression.getComponents();
final StringBuilder replacement = new StringBuilder("dict([(" + keyValueExpression.getKey().getText() + ", " +
keyValueExpression.getValue().getText() + ")");
int slashNum = 1;
- for (ComprehensionComponent component : components) {
- if (component instanceof ComprhForComponent) {
+ for (PyComprehensionComponent component : components) {
+ if (component instanceof PyComprehensionForComponent) {
replacement.append("for ");
- replacement.append(((ComprhForComponent)component).getIteratorVariable().getText());
+ replacement.append(((PyComprehensionForComponent)component).getIteratorVariable().getText());
replacement.append(" in ");
- replacement.append(((ComprhForComponent)component).getIteratedList().getText());
+ replacement.append(((PyComprehensionForComponent)component).getIteratedList().getText());
replacement.append(" ");
}
- if (component instanceof ComprhIfComponent) {
- final PyExpression test = ((ComprhIfComponent)component).getTest();
+ if (component instanceof PyComprehensionIfComponent) {
+ final PyExpression test = ((PyComprehensionIfComponent)component).getTest();
if (test != null) {
replacement.append("if ");
replacement.append(test.getText());
* In "[x+1 for x in (1,2,3)]" a "for component" is "x".
* @return all "for components"
*/
- public List<ComprhForComponent> getForComponents() {
- final List<ComprhForComponent> list = new ArrayList<>(5);
+ public List<PyComprehensionForComponent> getForComponents() {
+ final List<PyComprehensionForComponent> list = new ArrayList<>(5);
visitComponents(new ComprehensionElementVisitor() {
@Override
- void visitForComponent(ComprhForComponent component) {
+ void visitForComponent(PyComprehensionForComponent component) {
list.add(component);
}
});
.map(asyncNode -> asyncNode.getElementType() == PyTokenTypes.ASYNC_KEYWORD)
.orElse(false);
- visitor.visitForComponent(new ComprhForComponent() {
+ visitor.visitForComponent(new PyComprehensionForComponent() {
public PyExpression getIteratorVariable() {
return variable;
}
}
else if (type == PyTokenTypes.IF_KEYWORD) {
final PyExpression test = (PyExpression)next.getPsi();
- visitor.visitIfComponent(new ComprhIfComponent() {
+ visitor.visitIfComponent(new PyComprehensionIfComponent() {
public PyExpression getTest() {
return test;
}
}
}
- public List<ComprhIfComponent> getIfComponents() {
- final List<ComprhIfComponent> list = new ArrayList<>(5);
+ public List<PyComprehensionIfComponent> getIfComponents() {
+ final List<PyComprehensionIfComponent> list = new ArrayList<>(5);
visitComponents(new ComprehensionElementVisitor() {
@Override
- void visitIfComponent(ComprhIfComponent component) {
+ void visitIfComponent(PyComprehensionIfComponent component) {
list.add(component);
}
});
return list;
}
- public List<ComprehensionComponent> getComponents() {
- final List<ComprehensionComponent> list = new ArrayList<>(5);
+ public List<PyComprehensionComponent> getComponents() {
+ final List<PyComprehensionComponent> list = new ArrayList<>(5);
visitComponents(new ComprehensionElementVisitor() {
@Override
- void visitForComponent(ComprhForComponent component) {
+ void visitForComponent(PyComprehensionForComponent component) {
list.add(component);
}
@Override
- void visitIfComponent(ComprhIfComponent component) {
+ void visitIfComponent(PyComprehensionIfComponent component) {
list.add(component);
}
});
@NotNull
public List<PsiNamedElement> getNamedElements() {
// extract whatever names are defined in "for" components
- List<ComprhForComponent> fors = getForComponents();
+ List<PyComprehensionForComponent> fors = getForComponents();
PyExpression[] for_targets = new PyExpression[fors.size()];
int i = 0;
- for (ComprhForComponent for_comp : fors) {
+ for (PyComprehensionForComponent for_comp : fors) {
for_targets[i] = for_comp.getIteratorVariable();
i += 1;
}
}
abstract class ComprehensionElementVisitor {
- void visitIfComponent(ComprhIfComponent component) {
+ void visitIfComponent(PyComprehensionIfComponent component) {
}
- void visitForComponent(ComprhForComponent component) {
+ void visitForComponent(PyComprehensionForComponent component) {
}
}
}
@NotNull
public List<PsiNamedElement> getNamedElements() {
// extract whatever names are defined in "for" components
- List<ComprhForComponent> fors = getForComponents();
+ List<PyComprehensionForComponent> fors = getForComponents();
PyExpression[] for_targets = new PyExpression[fors.size()];
int i = 0;
- for (ComprhForComponent for_comp : fors) {
+ for (PyComprehensionForComponent for_comp : fors) {
for_targets[i] = for_comp.getIteratorVariable();
i += 1;
}
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
-import com.jetbrains.python.psi.ComprhForComponent;
+import com.jetbrains.python.psi.PyComprehensionForComponent;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyListCompExpression;
import org.jetbrains.annotations.Nullable;
if (listCompExpression == null){
return null;
}
- for (ComprhForComponent component : listCompExpression.getForComponents()) {
+ for (PyComprehensionForComponent component : listCompExpression.getForComponents()) {
final PyExpression variable = component.getIteratorVariable();
if (variable != null && PsiTreeUtil.isAncestor(variable, element, false)){
return listCompExpression;
}
final PyComprehensionElement comprh = PsiTreeUtil.getParentOfType(this, PyComprehensionElement.class);
if (comprh != null) {
- for (ComprhForComponent c : comprh.getForComponents()) {
+ for (PyComprehensionForComponent c : comprh.getForComponents()) {
final PyExpression expr = c.getIteratorVariable();
if (PsiTreeUtil.isAncestor(expr, this, false)) {
target = expr;
}
private static boolean containsDeclaration(@NotNull PyComprehensionElement comprehensionElement, @NotNull String variableName) {
- for (ComprhForComponent forComponent : comprehensionElement.getForComponents()) {
+ for (PyComprehensionForComponent forComponent : comprehensionElement.getForComponents()) {
final PyExpression iteratorVariable = forComponent.getIteratorVariable();
if (iteratorVariable instanceof PyTupleExpression) {
public void visitPyListCompExpression(final PyListCompExpression node) {
super.visitPyListCompExpression(node);
- final List<PyExpression> nodes = node.getForComponents().stream().map(ComprhForComponent::getIteratedList).collect(Collectors.toList());
+ final List<PyExpression> nodes = node.getForComponents().stream().map(PyComprehensionForComponent::getIteratedList).collect(Collectors.toList());
registerForAllMatchingVersions(level -> UnsupportedFeaturesUtil.visitPyListCompExpression(node, level),
" not support this syntax in list comprehensions.",
nodes,
}
public static boolean visitPyListCompExpression(final PyListCompExpression node, LanguageLevel versionToProcess) {
- final List<ComprhForComponent> forComponents = node.getForComponents();
+ final List<PyComprehensionForComponent> forComponents = node.getForComponents();
if (versionToProcess.isPy3K()) {
- for (ComprhForComponent forComponent : forComponents) {
+ for (PyComprehensionForComponent forComponent : forComponents) {
final PyExpression iteratedList = forComponent.getIteratedList();
if (iteratedList instanceof PyTupleExpression) {
return true;