diff options
author | Danny van Bruggen <lol@meuk.info> | 2018-02-02 15:38:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-02 15:38:11 +0100 |
commit | 204b8d3d6950b8784b359ae6918bd493c652042e (patch) | |
tree | 788aa334aebe2aa5dd11dba67ceee6beaccfdde5 /javaparser-core/src/main | |
parent | a14e906792ecea9c208e6c4ead73a6f24982d8d5 (diff) | |
parent | 7eb04f3e0bc2d7fe6e2840c32430e9109619b96e (diff) | |
download | platform_external_javaparser-204b8d3d6950b8784b359ae6918bd493c652042e.tar.gz platform_external_javaparser-204b8d3d6950b8784b359ae6918bd493c652042e.tar.bz2 platform_external_javaparser-204b8d3d6950b8784b359ae6918bd493c652042e.zip |
Merge branch 'master' into issue_200_javadocced_enum_constants
Diffstat (limited to 'javaparser-core/src/main')
6 files changed, 135 insertions, 66 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java b/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java index 94ff436fe..bbe9797e2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java +++ b/javaparser-core/src/main/java/com/github/javaparser/JavadocParser.java @@ -25,13 +25,13 @@ import com.github.javaparser.ast.comments.JavadocComment; import com.github.javaparser.javadoc.Javadoc; import com.github.javaparser.javadoc.JavadocBlockTag; import com.github.javaparser.javadoc.description.JavadocDescription; -import com.github.javaparser.utils.Utils; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static com.github.javaparser.utils.Utils.*; import static com.github.javaparser.utils.Utils.nextWord; /** @@ -47,7 +47,7 @@ class JavadocParser { } public static Javadoc parse(String commentContent) { - List<String> cleanLines = cleanLines(commentContent); + List<String> cleanLines = cleanLines(normalizeEolInTextBlock(commentContent, EOL)); int indexOfFirstBlockTag = cleanLines.stream() .filter(JavadocParser::isABlockLine) .map(cleanLines::indexOf) @@ -56,24 +56,24 @@ class JavadocParser { List<String> blockLines; String descriptionText; if (indexOfFirstBlockTag == -1) { - descriptionText = trimRight(String.join("\n", cleanLines)); + descriptionText = trimRight(String.join(EOL, cleanLines)); blockLines = Collections.emptyList(); } else { - descriptionText = trimRight(String.join("\n", cleanLines.subList(0, indexOfFirstBlockTag))); + descriptionText = trimRight(String.join(EOL, cleanLines.subList(0, indexOfFirstBlockTag))); //Combine cleaned lines, but only starting with the first block tag till the end //In this combined string it is easier to handle multiple lines which actually belong together String tagBlock = cleanLines.subList(indexOfFirstBlockTag, cleanLines.size()) .stream() - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(EOL)); - //Split up the entire tag black again, considering now that some lines belong to the same block tag. - //The pattern used splits the block at each new line starting with the '@' symbol, thus the symbol + //Split up the entire tag back again, considering now that some lines belong to the same block tag. + //The pattern splits the block at each new line starting with the '@' symbol, thus the symbol //then needs to be added again so that the block parsers handles everything correctly. blockLines = BLOCK_PATTERN .splitAsStream(tagBlock) - .filter(Utils.STRING_NOT_EMPTY) - .map(s -> BLOCK_TAG_PREFIX + s.replace("\n", " ").trim()) + .filter(STRING_NOT_EMPTY) + .map(s -> BLOCK_TAG_PREFIX + s) .collect(Collectors.toList()); } Javadoc document = new Javadoc(JavadocDescription.parseText(descriptionText)); @@ -100,7 +100,7 @@ class JavadocParser { } private static List<String> cleanLines(String content) { - String[] lines = content.split("\n"); + String[] lines = content.split(EOL); List<String> cleanedLines = Arrays.stream(lines).map(l -> { int asteriskIndex = startsWithAsterisk(l); if (asteriskIndex == -1) { diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java index efa172dcd..db03718ae 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/AssignExpr.java @@ -24,14 +24,19 @@ import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; + import static com.github.javaparser.utils.Utils.assertNotNull; + import com.github.javaparser.ast.Node; import com.github.javaparser.ast.visitor.CloneVisitor; import com.github.javaparser.metamodel.AssignExprMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel; import com.github.javaparser.printer.Printable; + import javax.annotation.Generated; + import com.github.javaparser.TokenRange; + import java.util.function.Consumer; import java.util.Optional; @@ -49,26 +54,23 @@ public final class AssignExpr extends Expression { public enum Operator implements Printable { - ASSIGN("=", null), - PLUS("+=", BinaryExpr.Operator.PLUS), - MINUS("-=", BinaryExpr.Operator.MINUS), - MULTIPLY("*=", BinaryExpr.Operator.MULTIPLY), - DIVIDE("/=", BinaryExpr.Operator.DIVIDE), - BINARY_AND("&=", BinaryExpr.Operator.BINARY_AND), - BINARY_OR("|=", BinaryExpr.Operator.BINARY_OR), - XOR("^=", BinaryExpr.Operator.XOR), - REMAINDER("%=", BinaryExpr.Operator.REMAINDER), - LEFT_SHIFT("<<=", BinaryExpr.Operator.LEFT_SHIFT), - SIGNED_RIGHT_SHIFT(">>=", BinaryExpr.Operator.SIGNED_RIGHT_SHIFT), - UNSIGNED_RIGHT_SHIFT(">>>=", BinaryExpr.Operator.UNSIGNED_RIGHT_SHIFT); + ASSIGN("="), + PLUS("+="), + MINUS("-="), + MULTIPLY("*="), + DIVIDE("/="), + BINARY_AND("&="), + BINARY_OR("|="), + XOR("^="), + REMAINDER("%="), + LEFT_SHIFT("<<="), + SIGNED_RIGHT_SHIFT(">>="), + UNSIGNED_RIGHT_SHIFT(">>>="); private final String codeRepresentation; - private final BinaryExpr.Operator binaryOperatorEquivalent; - - Operator(String codeRepresentation, BinaryExpr.Operator binaryOperatorEquivalent) { + Operator(String codeRepresentation) { this.codeRepresentation = codeRepresentation; - this.binaryOperatorEquivalent = binaryOperatorEquivalent; } public String asString() { @@ -76,7 +78,32 @@ public final class AssignExpr extends Expression { } public Optional<BinaryExpr.Operator> toBinaryOperator() { - return Optional.ofNullable(binaryOperatorEquivalent); + switch (this) { + case PLUS: + return Optional.of(BinaryExpr.Operator.PLUS); + case MINUS: + return Optional.of(BinaryExpr.Operator.MINUS); + case MULTIPLY: + return Optional.of(BinaryExpr.Operator.MULTIPLY); + case DIVIDE: + return Optional.of(BinaryExpr.Operator.DIVIDE); + case BINARY_AND: + return Optional.of(BinaryExpr.Operator.BINARY_AND); + case BINARY_OR: + return Optional.of(BinaryExpr.Operator.BINARY_OR); + case XOR: + return Optional.of(BinaryExpr.Operator.XOR); + case REMAINDER: + return Optional.of(BinaryExpr.Operator.REMAINDER); + case LEFT_SHIFT: + return Optional.of(BinaryExpr.Operator.LEFT_SHIFT); + case SIGNED_RIGHT_SHIFT: + return Optional.of(BinaryExpr.Operator.SIGNED_RIGHT_SHIFT); + case UNSIGNED_RIGHT_SHIFT: + return Optional.of(BinaryExpr.Operator.UNSIGNED_RIGHT_SHIFT); + default: + return Optional.empty(); + } } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java index fc75b67d9..ac4729ac9 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/BinaryExpr.java @@ -24,14 +24,19 @@ import com.github.javaparser.ast.AllFieldsConstructor; import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; + import static com.github.javaparser.utils.Utils.assertNotNull; + import com.github.javaparser.ast.Node; import com.github.javaparser.ast.visitor.CloneVisitor; import com.github.javaparser.metamodel.BinaryExprMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel; import com.github.javaparser.printer.Printable; + import javax.annotation.Generated; + import com.github.javaparser.TokenRange; + import java.util.function.Consumer; import java.util.Optional; @@ -47,33 +52,30 @@ public final class BinaryExpr extends Expression { public enum Operator implements Printable { - OR("||", null), - AND("&&", null), - BINARY_OR("|", AssignExpr.Operator.BINARY_OR), - BINARY_AND("&", AssignExpr.Operator.BINARY_AND), - XOR("^", AssignExpr.Operator.XOR), - EQUALS("==", null), - NOT_EQUALS("!=", null), - LESS("<", null), - GREATER(">", null), - LESS_EQUALS("<=", null), - GREATER_EQUALS(">=", null), - LEFT_SHIFT("<<", AssignExpr.Operator.LEFT_SHIFT), - SIGNED_RIGHT_SHIFT(">>", AssignExpr.Operator.SIGNED_RIGHT_SHIFT), - UNSIGNED_RIGHT_SHIFT(">>>", AssignExpr.Operator.UNSIGNED_RIGHT_SHIFT), - PLUS("+", AssignExpr.Operator.PLUS), - MINUS("-", AssignExpr.Operator.MINUS), - MULTIPLY("*", AssignExpr.Operator.MULTIPLY), - DIVIDE("/", AssignExpr.Operator.DIVIDE), - REMAINDER("%", AssignExpr.Operator.REMAINDER); + OR("||"), + AND("&&"), + BINARY_OR("|"), + BINARY_AND("&"), + XOR("^"), + EQUALS("=="), + NOT_EQUALS("!="), + LESS("<"), + GREATER(">"), + LESS_EQUALS("<="), + GREATER_EQUALS(">="), + LEFT_SHIFT("<<"), + SIGNED_RIGHT_SHIFT(">>"), + UNSIGNED_RIGHT_SHIFT(">>>"), + PLUS("+"), + MINUS("-"), + MULTIPLY("*"), + DIVIDE("/"), + REMAINDER("%"); private final String codeRepresentation; - private final AssignExpr.Operator assignOperatorEquivalent; - - Operator(String codeRepresentation, AssignExpr.Operator assignOperatorEquivalent) { + Operator(String codeRepresentation) { this.codeRepresentation = codeRepresentation; - this.assignOperatorEquivalent = assignOperatorEquivalent; } public String asString() { @@ -81,7 +83,32 @@ public final class BinaryExpr extends Expression { } public Optional<AssignExpr.Operator> toAssignOperator() { - return Optional.ofNullable(assignOperatorEquivalent); + switch (this) { + case BINARY_OR: + return Optional.of(AssignExpr.Operator.BINARY_OR); + case BINARY_AND: + return Optional.of(AssignExpr.Operator.BINARY_AND); + case XOR: + return Optional.of(AssignExpr.Operator.XOR); + case LEFT_SHIFT: + return Optional.of(AssignExpr.Operator.LEFT_SHIFT); + case SIGNED_RIGHT_SHIFT: + return Optional.of(AssignExpr.Operator.SIGNED_RIGHT_SHIFT); + case UNSIGNED_RIGHT_SHIFT: + return Optional.of(AssignExpr.Operator.UNSIGNED_RIGHT_SHIFT); + case PLUS: + return Optional.of(AssignExpr.Operator.PLUS); + case MINUS: + return Optional.of(AssignExpr.Operator.MINUS); + case MULTIPLY: + return Optional.of(AssignExpr.Operator.MULTIPLY); + case DIVIDE: + return Optional.of(AssignExpr.Operator.DIVIDE); + case REMAINDER: + return Optional.of(AssignExpr.Operator.REMAINDER); + default: + return Optional.empty(); + } } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java b/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java index 3239997cd..41ed01bdc 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java +++ b/javaparser-core/src/main/java/com/github/javaparser/javadoc/Javadoc.java @@ -27,6 +27,8 @@ import com.github.javaparser.javadoc.description.JavadocDescription; import java.util.LinkedList; import java.util.List; +import static com.github.javaparser.utils.Utils.*; + /** * The structured content of a single Javadoc comment. * <p> @@ -66,14 +68,14 @@ public class Javadoc { StringBuilder sb = new StringBuilder(); if (!description.isEmpty()) { sb.append(description.toText()); - sb.append("\n"); + sb.append(EOL); } if (!blockTags.isEmpty()) { - sb.append("\n"); + sb.append(EOL); } blockTags.forEach(bt -> { sb.append(bt.toText()); - sb.append("\n"); + sb.append(EOL); }); return sb.toString(); } @@ -88,13 +90,14 @@ public class Javadoc { } } StringBuilder sb = new StringBuilder(); - sb.append("\n"); - if (!toText().isEmpty()) { - for (String line : toText().split("\n")) { + sb.append(EOL); + final String text = toText(); + if (!text.isEmpty()) { + for (String line : text.split(EOL)) { sb.append(indentation); sb.append(" * "); sb.append(line); - sb.append("\n"); + sb.append(EOL); } } sb.append(indentation); diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java index dd76cf7ed..3a09cbf9b 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrintVisitor.java @@ -44,6 +44,7 @@ import static com.github.javaparser.ast.Node.Parsedness.UNPARSABLE; import static com.github.javaparser.utils.PositionUtils.sortByBeginPosition; import static com.github.javaparser.utils.Utils.isNullOrEmpty; import static com.github.javaparser.utils.Utils.normalizeEolInTextBlock; +import static com.github.javaparser.utils.Utils.trimTrailingSpaces; /** * Outputs the AST as formatted Java source code. @@ -328,10 +329,11 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> { boolean skippingLeadingEmptyLines = true; boolean prependEmptyLine = false; for (String line : lines) { - line = line.trim(); - if (line.startsWith("*")) { - line = line.substring(1).trim(); + final String trimmedLine = line.trim(); + if (trimmedLine.startsWith("*")) { + line = trimmedLine.substring(1); } + line = trimTrailingSpaces(line); if (line.isEmpty()) { if (!skippingLeadingEmptyLines) { prependEmptyLine = true; @@ -342,7 +344,7 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> { printer.println(" *"); prependEmptyLine = false; } - printer.println(" * " + line); + printer.println(" *" + line); } } printer.println(" */"); @@ -507,10 +509,9 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> { n.getName().accept(this, arg); n.getAncestorOfType(NodeWithVariables.class).ifPresent(ancestor -> { - Optional<Type> maximumCommonType = ancestor.getMaximumCommonType(); - maximumCommonType.ifPresent(commonType -> { + ((NodeWithVariables<?>) ancestor).getMaximumCommonType().ifPresent(commonType -> { - Type type = n.getType(); + final Type type = n.getType(); ArrayType arrayType = null; diff --git a/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java b/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java index 7319ff4af..2db00e522 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java +++ b/javaparser-core/src/main/java/com/github/javaparser/utils/Utils.java @@ -49,7 +49,7 @@ public class Utils { public static <E> boolean isNullOrEmpty(Collection<E> collection) { return collection == null || collection.isEmpty(); } - + public static <T> T assertNotNull(T o) { if (o == null) { throw new AssertionError("A reference was unexpectedly null."); @@ -239,4 +239,15 @@ public class Utils { return filename.substring(0, extensionIndex); } + + /** + * Like {@link String#trim()}, but only the trailing spaces. + */ + public static String trimTrailingSpaces(String line) { + while (line.length() > 0 && line.charAt(line.length() - 1) <= 0x20) { + line = line.substring(0, line.length() - 1); + } + return line; + } + } |