From 21ae591ad9842e89b1895ff6d2bef99225eff397 Mon Sep 17 00:00:00 2001 From: Danny van Bruggen Date: Tue, 13 Dec 2016 18:58:47 +0100 Subject: [PATCH] * Plugged optionality bug in CommentsInserter * Fixed UnknownType never having a range --- .../java/com/github/javaparser/CommentsInserter.java | 4 ++++ .../com/github/javaparser/ast/type/UnknownType.java | 5 +++++ javaparser-core/src/main/javacc/java_1_8.jj | 12 ++++++------ .../com/github/javaparser/CommentsInserterTest.java | 9 ++++++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/javaparser-core/src/main/java/com/github/javaparser/CommentsInserter.java b/javaparser-core/src/main/java/com/github/javaparser/CommentsInserter.java index 03b7723b13..59e40d3f50 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/CommentsInserter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/CommentsInserter.java @@ -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 diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java index 3fc9f8693c..0adb7acd6f 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnknownType.java @@ -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; @@ -39,6 +40,10 @@ public UnknownType() { super(null, new NodeList<>()); } + public UnknownType(Range range) { + super(range, new NodeList<>()); + } + @Override public R accept(final GenericVisitor v, final A arg) { return v.visit(this, arg); diff --git a/javaparser-core/src/main/javacc/java_1_8.jj b/javaparser-core/src/main/javacc/java_1_8.jj index 9e26794913..d0d0a5c722 100644 --- a/javaparser-core/src/main/javacc/java_1_8.jj +++ b/javaparser-core/src/main/javacc/java_1_8.jj @@ -171,14 +171,14 @@ final class ASTParser { Optional inner = ((EnclosedExpr) ret).getInner(); if (inner.isPresent() && inner.get() instanceof NameExpr) { SimpleName id = ((NameExpr)inner.get()).getName(); - NodeList params = add(emptyList(), new Parameter(ret.getRange().get(), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(), false, id)); + NodeList 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 params = add(emptyList(), new Parameter(ret.getRange().get(), EnumSet.noneOf(Modifier.class), emptyList(), new UnknownType(), false, id)); + NodeList 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); @@ -1807,9 +1807,9 @@ NodeList 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; } } @@ -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); } } @@ -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); } } ) diff --git a/javaparser-testing/src/test/java/com/github/javaparser/CommentsInserterTest.java b/javaparser-testing/src/test/java/com/github/javaparser/CommentsInserterTest.java index 7c28f3de9a..79c27ee3e9 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/CommentsInserterTest.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/CommentsInserterTest.java @@ -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 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); } @@ -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 }