From 30466cd793d92fdf46aa54c4eb597d41c293a75d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sun, 23 Aug 2020 20:05:16 +0200 Subject: [PATCH] Use fillAttributes instead More easily extensible --- .../pmd/lang/java/JavaAttributesPrinter.java | 15 ++++----------- .../sourceforge/pmd/lang/ast/test/NodePrinters.kt | 15 ++++++++------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaAttributesPrinter.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaAttributesPrinter.java index c38e8d27b9..26cf55657b 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaAttributesPrinter.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/JavaAttributesPrinter.java @@ -4,7 +4,6 @@ package net.sourceforge.pmd.lang.java; -import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -23,19 +22,13 @@ import net.sourceforge.pmd.lang.rule.xpath.Attribute; */ public class JavaAttributesPrinter extends RelevantAttributePrinter { - @Override - protected @NonNull Iterable getAttributes(@NonNull Node node) { + protected void fillAttributes(@NonNull Node node, @NonNull List result) { + super.fillAttributes(node, result); if (node instanceof ASTModifierList) { - List attributes = new ArrayList<>(); - super.getAttributes(node).forEach(attributes::add); - - attributes.add(getModifierAttr("EffectiveModifiers", ((ASTModifierList) node).getEffectiveModifiers())); - attributes.add(getModifierAttr("ExplicitModifiers", ((ASTModifierList) node).getExplicitModifiers())); - - return attributes; + result.add(getModifierAttr("EffectiveModifiers", ((ASTModifierList) node).getEffectiveModifiers())); + result.add(getModifierAttr("ExplicitModifiers", ((ASTModifierList) node).getExplicitModifiers())); } - return super.getAttributes(node); } @Override diff --git a/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/NodePrinters.kt b/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/NodePrinters.kt index 832a2028fc..7d47162c49 100644 --- a/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/NodePrinters.kt +++ b/pmd-lang-test/src/main/kotlin/net/sourceforge/pmd/lang/ast/test/NodePrinters.kt @@ -42,18 +42,19 @@ open class BaseNodeAttributePrinter : TextTreeRenderer(true, -1) { protected open fun ignoreAttribute(node: Node, attribute: Attribute): Boolean = true - protected open fun getAttributes(node: Node): Iterable = - node.xPathAttributesIterator - .asSequence() - .filterNot { ignoreAttribute(node, it) } - .map { AttributeInfo(it.name, it.value?.toString()) } - .asIterable() + protected open fun fillAttributes(node: Node, result: MutableList) { + node.xPathAttributesIterator + .asSequence() + .filterNot { ignoreAttribute(node, it) } + .map { AttributeInfo(it.name, it.value?.toString()) } + .forEach { result += it } + } override fun appendNodeInfoLn(out: Appendable, node: Node) { out.append(node.xPathNodeName) - val attrs = getAttributes(node).toMutableList() + val attrs = mutableListOf().also { fillAttributes(node, it) } // sort to get deterministic results attrs.sortBy { it.name }