fix for EI_EXPOSE_REP. Issue #778
This commit is contained in:
parent
01b9628d34
commit
a8f5fa3225
|
|
@ -276,25 +276,25 @@ public abstract class AbstractJavadocCheck extends Check
|
|||
/**
|
||||
* Converts ParseTree (that is generated by ANTLRv4) to DetailNode tree.
|
||||
*
|
||||
* @param rootParseTree root node of ParseTree
|
||||
* @param parseTreeNode root node of ParseTree
|
||||
* @return root of DetailNode tree
|
||||
*/
|
||||
private DetailNode convertParseTree2DetailNode(ParseTree rootParseTree)
|
||||
private DetailNode convertParseTree2DetailNode(ParseTree parseTreeNode)
|
||||
{
|
||||
final ParseTree currentParseTreeNode = rootParseTree;
|
||||
final JavadocNodeImpl rootJavadocNode = createJavadocNode(currentParseTreeNode, null, -1);
|
||||
final JavadocNodeImpl rootJavadocNode = createJavadocNode(parseTreeNode, null, -1);
|
||||
|
||||
int childCount = currentParseTreeNode.getChildCount();
|
||||
JavadocNodeImpl[] children = (JavadocNodeImpl[]) rootJavadocNode.getChildren();
|
||||
int childCount = parseTreeNode.getChildCount();
|
||||
JavadocNodeImpl[] children = new JavadocNodeImpl[childCount];
|
||||
|
||||
for (int i = 0; i < childCount; i++) {
|
||||
final JavadocNodeImpl child = createJavadocNode(currentParseTreeNode.getChild(i)
|
||||
final JavadocNodeImpl child = createJavadocNode(parseTreeNode.getChild(i)
|
||||
, rootJavadocNode, i);
|
||||
children[i] = child;
|
||||
}
|
||||
rootJavadocNode.setChildren(children);
|
||||
|
||||
JavadocNodeImpl currentJavadocParent = rootJavadocNode;
|
||||
ParseTree currentParseTreeParent = currentParseTreeNode;
|
||||
ParseTree parseTreeParent = parseTreeNode;
|
||||
|
||||
while (currentJavadocParent != null) {
|
||||
children = (JavadocNodeImpl[]) currentJavadocParent.getChildren();
|
||||
|
|
@ -302,10 +302,10 @@ public abstract class AbstractJavadocCheck extends Check
|
|||
|
||||
for (int i = 0; i < childCount; i++) {
|
||||
final JavadocNodeImpl currentJavadocNode = children[i];
|
||||
final ParseTree currentParseTreeNodeChild = currentParseTreeParent.getChild(i);
|
||||
final ParseTree currentParseTreeNodeChild = parseTreeParent.getChild(i);
|
||||
|
||||
final JavadocNodeImpl[] subChildren = (JavadocNodeImpl[]) currentJavadocNode
|
||||
.getChildren();
|
||||
final JavadocNodeImpl[] subChildren =
|
||||
new JavadocNodeImpl[currentJavadocNode.getChildren().length];
|
||||
|
||||
for (int j = 0; j < subChildren.length; j++) {
|
||||
final JavadocNodeImpl child =
|
||||
|
|
@ -314,23 +314,24 @@ public abstract class AbstractJavadocCheck extends Check
|
|||
|
||||
subChildren[j] = child;
|
||||
}
|
||||
currentJavadocNode.setChildren(subChildren);
|
||||
}
|
||||
|
||||
if (childCount > 0) {
|
||||
currentJavadocParent = children[0];
|
||||
currentParseTreeParent = currentParseTreeParent.getChild(0);
|
||||
parseTreeParent = parseTreeParent.getChild(0);
|
||||
}
|
||||
else {
|
||||
JavadocNodeImpl nextJavadocSibling = (JavadocNodeImpl) JavadocUtils
|
||||
.getNextSibling(currentJavadocParent);
|
||||
|
||||
ParseTree nextParseTreeSibling = getNextSibling(currentParseTreeParent);
|
||||
ParseTree nextParseTreeSibling = getNextSibling(parseTreeParent);
|
||||
|
||||
if (nextJavadocSibling == null) {
|
||||
JavadocNodeImpl tempJavadocParent =
|
||||
(JavadocNodeImpl) currentJavadocParent.getParent();
|
||||
|
||||
ParseTree tempParseTreeParent = currentParseTreeParent.getParent();
|
||||
ParseTree tempParseTreeParent = parseTreeParent.getParent();
|
||||
|
||||
while (nextJavadocSibling == null && tempJavadocParent != null) {
|
||||
|
||||
|
|
@ -344,7 +345,7 @@ public abstract class AbstractJavadocCheck extends Check
|
|||
}
|
||||
}
|
||||
currentJavadocParent = nextJavadocSibling;
|
||||
currentParseTreeParent = nextParseTreeSibling;
|
||||
parseTreeParent = nextParseTreeSibling;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ package com.puppycrawl.tools.checkstyle.checks.javadoc;
|
|||
|
||||
import com.puppycrawl.tools.checkstyle.api.DetailNode;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
*
|
||||
* Implementation of DetailNode interface that is mutable.
|
||||
|
|
@ -91,7 +93,7 @@ public class JavadocNodeImpl implements DetailNode
|
|||
@Override
|
||||
public DetailNode[] getChildren()
|
||||
{
|
||||
return children;
|
||||
return Arrays.copyOf(children, children.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -128,7 +130,7 @@ public class JavadocNodeImpl implements DetailNode
|
|||
|
||||
public void setChildren(DetailNode[] children)
|
||||
{
|
||||
this.children = children;
|
||||
this.children = Arrays.copyOf(children, children.length);
|
||||
}
|
||||
|
||||
public void setParent(DetailNode parent)
|
||||
|
|
|
|||
Loading…
Reference in New Issue