Skip to content

Commit

Permalink
Fix test83804 and test83804a - incorrect source ranges / lengths
Browse files Browse the repository at this point in the history
Signed-off-by: Rob Stryker <[email protected]>
  • Loading branch information
Rob Stryker committed Sep 3, 2024
1 parent 42a4125 commit 56e4a17
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -391,9 +391,16 @@ private ImportDeclaration convert(JCImport javac) {
}

void commonSettings(ASTNode res, JCTree javac) {
if( javac != null ) {
int length = commonSettingsGetLength(res, javac);
commonSettings(res, javac, length, true);
}
}

int commonSettingsGetLength(ASTNode res, JCTree javac) {
int length = -1;
if( javac != null ) {
int start = javac.getStartPosition();
int length = -1;
if (start >= 0) {
int endPos = javac.getEndPosition(this.javacCompilationUnit.endPositions);
if( endPos < 0 ) {
Expand All @@ -409,17 +416,16 @@ void commonSettings(ASTNode res, JCTree javac) {
if (start + Math.max(0, length) > this.rawText.length()) {
length = this.rawText.length() - start;
}
res.setSourceRange(start, Math.max(0, length));
}
commonSettings(res, javac, length);
return Math.max(0, length);
}
return length;
}

void commonSettings(ASTNode res, JCTree javac, int length) {
if( javac != null ) {
if (length >= 0) {
int start = javac.getStartPosition();
res.setSourceRange(start, Math.max(0, length));
void commonSettings(ASTNode res, JCTree javac, int length, boolean removeWhitespace) {
if( javac != null && length >= 0) {
res.setSourceRange(javac.getStartPosition(), Math.max(0, length));
if( removeWhitespace ) {
removeSurroundingWhitespaceFromRange(res);
}
this.domToJavac.put(res, javac);
Expand Down Expand Up @@ -448,8 +454,9 @@ private void nameSettings(SimpleName name, JCVariableDecl javac, String varName)
}

private Name toName(JCTree expression) {
return toName(expression, this::commonSettings);
return toName(expression, null);
}

Name toName(JCTree expression, BiConsumer<ASTNode, JCTree> extraSettings ) {
if (expression instanceof JCIdent ident) {
Name res = convertName(ident.getName());
Expand Down Expand Up @@ -2825,7 +2832,7 @@ Type convertToType(JCTree javac) {
int ordinal = ordinalIndexOf(raw, "]", dims);
if( ordinal != -1 ) {
int indOf = ordinal + 1;
commonSettings(res, jcArrayType, indOf);
commonSettings(res, jcArrayType, indOf, true);
return res;
}
} catch( Throwable tErr) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,6 @@ private Optional<TagElement> convertBlockTag(DCTree javac) {
} else if (javac instanceof DCSee see) {
res.setTagName(TagElement.TAG_SEE);
convertElementCombiningNodes(see.reference.stream().filter(x -> x != null).toList()).forEach(res.fragments::add);
//see.reference.stream().filter(a -> a != null).flatMap(this::convertElement).forEach(res.fragments::add);
} else if (javac instanceof DCDeprecated deprecated) {
res.setTagName(TagElement.TAG_DEPRECATED);
convertElementCombiningNodes(deprecated.body.stream().filter(x -> x != null).toList()).forEach(res.fragments::add);
Expand Down Expand Up @@ -537,9 +536,6 @@ private List<IDocElement> convertElementCombiningNodes(List<DCTree> treeElements
elements.addAll(convertElementGroup(combinable.toArray(new DCTree[0])).toList());
return elements;
}



private Stream<? extends IDocElement> convertElement(DCTree javac) {
if (javac instanceof DCText text) {
return splitLines(text).map(this::toTextElement);
Expand All @@ -553,7 +549,8 @@ private Stream<? extends IDocElement> convertElement(DCTree javac) {
if( reference.qualifierExpression != null ) {
Name res = this.javacConverter.toName(reference.qualifierExpression, (dom, javacNode) -> {
int startPosition = this.docComment.getSourcePosition(reference.getPreferredPosition()) + javacNode.getStartPosition();
dom.setSourceRange(startPosition, dom.getLength());
int len = this.javacConverter.commonSettingsGetLength(dom, javacNode);
dom.setSourceRange(startPosition, len);
if (this.contextTreePath != null) {
this.converted.put(dom, DocTreePath.getPath(this.contextTreePath, this.docComment, javac));
}
Expand Down

0 comments on commit 56e4a17

Please sign in to comment.