Skip to content

Commit

Permalink
* Plugged optionality bug in CommentsInserter
Browse files Browse the repository at this point in the history
* Fixed UnknownType never having a range
  • Loading branch information
matozoid committed Dec 14, 2016
1 parent 51d13b3 commit 21ae591
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 9 deletions.
Expand Up @@ -173,6 +173,10 @@ && attributeLineCommentToNodeOrChild(child,
}

private boolean attributeLineCommentToNodeOrChild(Node node, LineComment lineComment) {
if (!node.getRange().isPresent() || !lineComment.getRange().isPresent()) {
return false;
}

// The node start and end at the same line as the comment,
// let's give to it the comment
if (node.getBegin().get().line == lineComment.getBegin().get().line
Expand Down
Expand Up @@ -21,6 +21,7 @@

package com.github.javaparser.ast.type;

import com.github.javaparser.Range;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.AnnotationExpr;
import com.github.javaparser.ast.visitor.GenericVisitor;
Expand All @@ -39,6 +40,10 @@ public UnknownType() {
super(null, new NodeList<>());
}

public UnknownType(Range range) {
super(range, new NodeList<>());
}

@Override
public <R, A> R accept(final GenericVisitor<R, A> v, final A arg) {
return v.visit(this, arg);
Expand Down
12 changes: 6 additions & 6 deletions javaparser-core/src/main/javacc/java_1_8.jj
Expand Up @@ -171,14 +171,14 @@ final class ASTParser {
Optional<Expression> inner = ((EnclosedExpr) ret).getInner();
if (inner.isPresent() && inner.get() instanceof NameExpr) {
SimpleName id = ((NameExpr)inner.get()).getName();
NodeList<Parameter> params = add(emptyList(), new Parameter(ret.getRange().get(), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(), false, id));
NodeList<Parameter> params = add(emptyList(), new Parameter(ret.getRange().get(), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(id.getRange().get()), false, id));
ret = new LambdaExpr(range(ret.getBegin().get(), lambdaBody.getEnd().get()), params, lambdaBody, true);
} else {
ret = new LambdaExpr(range(ret.getBegin().get(), lambdaBody.getEnd().get()), emptyList(), lambdaBody, true);
}
} else if (ret instanceof NameExpr) {
SimpleName id = ((NameExpr)ret).getName();
NodeList<Parameter> params = add(emptyList(), new Parameter(ret.getRange().get(), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(), false, id));
NodeList<Parameter> params = add(emptyList(), new Parameter(ret.getRange().get(), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(id.getRange().get()), false, id));
ret = new LambdaExpr(ret.getRange().get(), params, lambdaBody, false);
} else if (ret instanceof LambdaExpr) {
((LambdaExpr) ret).setBody(lambdaBody);
Expand Down Expand Up @@ -1807,9 +1807,9 @@ NodeList<Parameter> InferredLambdaParameters():
}
{
","
id = VariableDeclaratorId() { ret = add(ret, new Parameter(range(id.a.getBegin().get(), id.a.getEnd().get()), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(), false, id.a));}
id = VariableDeclaratorId() { ret = add(ret, new Parameter(range(id.a.getBegin().get(), id.a.getEnd().get()), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(id.a.getRange().get()), false, id.a));}
(
"," id = VariableDeclaratorId() { ret = add(ret, new Parameter(range(id.a.getBegin().get(), id.a.getEnd().get()), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(), false, id.a)); }
"," id = VariableDeclaratorId() { ret = add(ret, new Parameter(range(id.a.getBegin().get(), id.a.getEnd().get()), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(id.a.getRange().get()), false, id.a)); }
)*
{ return ret; }
}
Expand Down Expand Up @@ -2541,7 +2541,7 @@ Expression PrimaryPrefix():
if(ret instanceof NameExpr)
{
id = ((NameExpr)ret).getName();
p = new Parameter(range(ret.getBegin().get(), ret.getEnd().get()), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(), false, id);
p = new Parameter(range(ret.getBegin().get(), ret.getEnd().get()), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(id.getRange().get()), false, id);
}

}
Expand Down Expand Up @@ -2571,7 +2571,7 @@ Expression PrimaryPrefix():
if (hasArgs) {
ret = new MethodCallExpr(range(begin, tokenEnd()), null, emptyList(), name, args);
} else {
ret = new NameExpr(name);
ret = new NameExpr(range(begin, tokenEnd()), name);
}
}
)
Expand Down
Expand Up @@ -34,10 +34,13 @@
import static org.junit.Assert.assertEquals;

public class CommentsInserterTest {
private String makeFilename(String sampleName) {
return "com/github/javaparser/issue_samples/" + sampleName + ".java.txt";
}

private ParseResult<CompilationUnit> parseSample(String sampleName) throws IOException {
Provider p = Providers.resourceProvider(
"com/github/javaparser/issue_samples/" + sampleName + ".java.txt");
makeFilename(sampleName));
return new JavaParser().parse(ParseStart.COMPILATION_UNIT, p);
}

Expand All @@ -53,8 +56,8 @@ public void issue290() throws IOException {
}

@Test
public void issue624() {
ParseResult result = parseSample("Issue624");
public void issue624() throws IOException {
JavaParser.parseResource(makeFilename("Issue624"));
// Should not fail
}

Expand Down

0 comments on commit 21ae591

Please sign in to comment.