diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2017-10-19 23:49:33 +0200 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2017-10-19 23:49:33 +0200 |
commit | b061b9891dd7908fd4ab5c8ecddaa7f5cd23ee80 (patch) | |
tree | f775e65984eddcbcee2a666d7fe919789bffb152 | |
parent | 179d34079dd694392e6d4e1a111824bbbdd33e01 (diff) | |
parent | 658f4d5f3916a1942067bc40fcb5412dd4034d3f (diff) | |
download | javaparser-b061b9891dd7908fd4ab5c8ecddaa7f5cd23ee80.tar.gz |
Merge remote-tracking branch 'javaparser/master' into no_receiver_param_in_signature
# Conflicts:
# javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java
27 files changed, 143 insertions, 52 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java index c6e625868..335ffacda 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/AnnotationDeclaration.java @@ -37,6 +37,10 @@ import java.util.EnumSet; import java.util.List; import javax.annotation.Generated; import com.github.javaparser.TokenRange; +import com.github.javaparser.resolution.Resolvable; +import com.github.javaparser.resolution.declarations.ResolvedAnnotationDeclaration; +import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration; + import java.util.function.Consumer; /** @@ -44,7 +48,7 @@ import java.util.function.Consumer; * * @author Julio Vilmar Gesser */ -public final class AnnotationDeclaration extends TypeDeclaration<AnnotationDeclaration> implements NodeWithAbstractModifier<AnnotationDeclaration> { +public final class AnnotationDeclaration extends TypeDeclaration<AnnotationDeclaration> implements NodeWithAbstractModifier<AnnotationDeclaration>, Resolvable<ResolvedAnnotationDeclaration> { public AnnotationDeclaration() { this(null, EnumSet.noneOf(Modifier.class), new NodeList<>(), new SimpleName(), new NodeList<>()); @@ -122,4 +126,9 @@ public final class AnnotationDeclaration extends TypeDeclaration<AnnotationDecla public void ifAnnotationDeclaration(Consumer<AnnotationDeclaration> action) { action.accept(this); } + + @Override + public ResolvedAnnotationDeclaration resolve() { + return getSymbolResolver().resolveDeclaration(this, ResolvedAnnotationDeclaration.class); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java index 8071d2221..6791e373c 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/ConstructorDeclaration.java @@ -44,6 +44,10 @@ import com.github.javaparser.metamodel.ConstructorDeclarationMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel; import javax.annotation.Generated; import com.github.javaparser.TokenRange; +import com.github.javaparser.resolution.Resolvable; +import com.github.javaparser.resolution.declarations.ResolvedAnnotationDeclaration; +import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration; + import java.util.function.Consumer; /** @@ -54,7 +58,7 @@ import java.util.function.Consumer; * * @author Julio Vilmar Gesser */ -public final class ConstructorDeclaration extends CallableDeclaration<ConstructorDeclaration> implements NodeWithBlockStmt<ConstructorDeclaration>, NodeWithAccessModifiers<ConstructorDeclaration>, NodeWithJavadoc<ConstructorDeclaration>, NodeWithDeclaration, NodeWithSimpleName<ConstructorDeclaration>, NodeWithParameters<ConstructorDeclaration>, NodeWithThrownExceptions<ConstructorDeclaration>, NodeWithTypeParameters<ConstructorDeclaration> { +public final class ConstructorDeclaration extends CallableDeclaration<ConstructorDeclaration> implements NodeWithBlockStmt<ConstructorDeclaration>, NodeWithAccessModifiers<ConstructorDeclaration>, NodeWithJavadoc<ConstructorDeclaration>, NodeWithDeclaration, NodeWithSimpleName<ConstructorDeclaration>, NodeWithParameters<ConstructorDeclaration>, NodeWithThrownExceptions<ConstructorDeclaration>, NodeWithTypeParameters<ConstructorDeclaration>, Resolvable<ResolvedConstructorDeclaration> { private BlockStmt body; @@ -227,4 +231,9 @@ public final class ConstructorDeclaration extends CallableDeclaration<Constructo public void ifConstructorDeclaration(Consumer<ConstructorDeclaration> action) { action.accept(this); } + + @Override + public ResolvedConstructorDeclaration resolve() { + return getSymbolResolver().resolveDeclaration(this, ResolvedConstructorDeclaration.class); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java index 21d6c0c87..db5364a55 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/EnumDeclaration.java @@ -36,6 +36,9 @@ import com.github.javaparser.ast.visitor.GenericVisitor; import com.github.javaparser.ast.visitor.VoidVisitor; import com.github.javaparser.metamodel.EnumDeclarationMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel; +import com.github.javaparser.resolution.Resolvable; +import com.github.javaparser.resolution.declarations.ResolvedEnumDeclaration; + import javax.annotation.Generated; import java.util.EnumSet; import static com.github.javaparser.utils.Utils.assertNonEmpty; @@ -47,7 +50,7 @@ import java.util.function.Consumer; * * @author Julio Vilmar Gesser */ -public final class EnumDeclaration extends TypeDeclaration<EnumDeclaration> implements NodeWithImplements<EnumDeclaration>, NodeWithConstructors<EnumDeclaration> { +public final class EnumDeclaration extends TypeDeclaration<EnumDeclaration> implements NodeWithImplements<EnumDeclaration>, NodeWithConstructors<EnumDeclaration>, Resolvable<ResolvedEnumDeclaration> { private NodeList<ClassOrInterfaceType> implementedTypes; @@ -214,4 +217,9 @@ public final class EnumDeclaration extends TypeDeclaration<EnumDeclaration> impl public void ifEnumDeclaration(Consumer<EnumDeclaration> action) { action.accept(this); } + + @Override + public ResolvedEnumDeclaration resolve() { + return getSymbolResolver().resolveDeclaration(this, ResolvedEnumDeclaration.class); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java index f92a28780..6a4c8fc0d 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/FieldDeclaration.java @@ -53,6 +53,10 @@ import static com.github.javaparser.ast.NodeList.nodeList; import static com.github.javaparser.utils.Utils.assertNotNull; import javax.annotation.Generated; import com.github.javaparser.TokenRange; +import com.github.javaparser.resolution.Resolvable; +import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration; +import com.github.javaparser.resolution.declarations.ResolvedFieldDeclaration; + import java.util.function.Consumer; /** @@ -64,7 +68,7 @@ import java.util.function.Consumer; * * @author Julio Vilmar Gesser */ -public final class FieldDeclaration extends BodyDeclaration<FieldDeclaration> implements NodeWithJavadoc<FieldDeclaration>, NodeWithVariables<FieldDeclaration>, NodeWithAccessModifiers<FieldDeclaration>, NodeWithStaticModifier<FieldDeclaration>, NodeWithFinalModifier<FieldDeclaration> { +public final class FieldDeclaration extends BodyDeclaration<FieldDeclaration> implements NodeWithJavadoc<FieldDeclaration>, NodeWithVariables<FieldDeclaration>, NodeWithAccessModifiers<FieldDeclaration>, NodeWithStaticModifier<FieldDeclaration>, NodeWithFinalModifier<FieldDeclaration>, Resolvable<ResolvedFieldDeclaration> { private EnumSet<Modifier> modifiers; @@ -288,4 +292,9 @@ public final class FieldDeclaration extends BodyDeclaration<FieldDeclaration> im public void ifFieldDeclaration(Consumer<FieldDeclaration> action) { action.accept(this); } + + @Override + public ResolvedFieldDeclaration resolve() { + return getSymbolResolver().resolveDeclaration(this, ResolvedFieldDeclaration.class); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java index 1e3f794c4..3ab2097a2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/MethodDeclaration.java @@ -345,7 +345,7 @@ public final class MethodDeclaration extends CallableDeclaration<MethodDeclarati @Override public ResolvedMethodDeclaration resolve() { - return getSymbolResolver().resolve(this, ResolvedMethodDeclaration.class); + return getSymbolResolver().resolveDeclaration(this, ResolvedMethodDeclaration.class); } @Generated("com.github.javaparser.generator.core.node.PropertyGenerator") diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java b/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java index 7a9ab90bf..d9c2d177a 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/body/TypeDeclaration.java @@ -34,14 +34,16 @@ import com.github.javaparser.ast.observer.ObservableProperty; import com.github.javaparser.ast.visitor.CloneVisitor; import com.github.javaparser.metamodel.JavaParserMetaModel; import com.github.javaparser.metamodel.TypeDeclarationMetaModel; +import com.github.javaparser.resolution.Resolvable; +import com.github.javaparser.resolution.declarations.ResolvedTypeDeclaration; + import javax.annotation.Generated; import java.util.EnumSet; -import java.util.LinkedList; import java.util.List; +import java.util.function.Consumer; + import static com.github.javaparser.utils.Utils.assertNotNull; import static java.util.stream.Collectors.toList; -import com.github.javaparser.ast.Node; -import java.util.function.Consumer; /** * A base class for all types of type declarations. @@ -235,4 +237,5 @@ public abstract class TypeDeclaration<T extends TypeDeclaration<?>> extends Body public void ifTypeDeclaration(Consumer<TypeDeclaration> action) { action.accept(this); } + } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java index 6529c9808..0f0293348 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/Expression.java @@ -27,6 +27,8 @@ import com.github.javaparser.metamodel.ExpressionMetaModel; import com.github.javaparser.metamodel.JavaParserMetaModel; import javax.annotation.Generated; import com.github.javaparser.TokenRange; +import com.github.javaparser.resolution.types.ResolvedType; + import java.util.function.Consumer; import static com.github.javaparser.utils.CodeGenerationUtils.f; @@ -552,4 +554,8 @@ public abstract class Expression extends Node { @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator") public void ifVariableDeclarationExpr(Consumer<VariableDeclarationExpr> action) { } + + public ResolvedType calculateResolvedType() { + return getSymbolResolver().calculateType(this); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java index 820a9d8a5..6e54be193 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ArrayType.java @@ -50,7 +50,7 @@ public final class ArrayType extends ReferenceType implements NodeWithAnnotation @Override public ResolvedArrayType resolve() { - return getSymbolResolver().resolve(this, ResolvedArrayType.class); + return getSymbolResolver().toResolvedType(this, ResolvedArrayType.class); } /** diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java index 5072e291f..eb12278ee 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/ClassOrInterfaceType.java @@ -286,6 +286,6 @@ public final class ClassOrInterfaceType extends ReferenceType implements NodeWit @Override public ResolvedReferenceType resolve() { - return getSymbolResolver().resolve(this, ResolvedReferenceType.class); + return getSymbolResolver().toResolvedType(this, ResolvedReferenceType.class); } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java index 384a1e4e0..6ea13bec8 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/IntersectionType.java @@ -172,6 +172,6 @@ public final class IntersectionType extends Type implements NodeWithAnnotations< @Override public ResolvedIntersectionType resolve() { - return getSymbolResolver().resolve(this, ResolvedIntersectionType.class); + return getSymbolResolver().toResolvedType(this, ResolvedIntersectionType.class); } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java index d2f5c00b0..9089d5922 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/PrimitiveType.java @@ -226,6 +226,6 @@ public final class PrimitiveType extends Type implements NodeWithAnnotations<Pri @Override public ResolvedPrimitiveType resolve() { - return getSymbolResolver().resolve(this, ResolvedPrimitiveType.class); + return getSymbolResolver().toResolvedType(this, ResolvedPrimitiveType.class); } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java index 6a4c7cf6a..4d681e177 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/TypeParameter.java @@ -232,6 +232,6 @@ public final class TypeParameter extends ReferenceType implements NodeWithSimple @Override public ResolvedTypeVariable resolve() { - return getSymbolResolver().resolve(this, ResolvedTypeVariable.class); + return getSymbolResolver().toResolvedType(this, ResolvedTypeVariable.class); } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java index 5b52bd036..0df8505f2 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/UnionType.java @@ -181,6 +181,6 @@ public final class UnionType extends Type implements NodeWithAnnotations<UnionTy @Override public ResolvedUnionType resolve() { - return getSymbolResolver().resolve(this, ResolvedUnionType.class); + return getSymbolResolver().toResolvedType(this, ResolvedUnionType.class); } } 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 ace0b4bc6..4e467ae44 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 @@ -133,6 +133,6 @@ public final class UnknownType extends Type { @Override public ResolvedType resolve() { - return getSymbolResolver().resolve(this, ResolvedReferenceType.class); + return getSymbolResolver().toResolvedType(this, ResolvedReferenceType.class); } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java index 21b562e4c..32154f5dc 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/VoidType.java @@ -128,6 +128,6 @@ public final class VoidType extends Type implements NodeWithAnnotations<VoidType @Override public ResolvedVoidType resolve() { - return getSymbolResolver().resolve(this, ResolvedVoidType.class); + return getSymbolResolver().toResolvedType(this, ResolvedVoidType.class); } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java b/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java index 61110d2f9..9b8fe56d8 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java +++ b/javaparser-core/src/main/java/com/github/javaparser/ast/type/WildcardType.java @@ -283,6 +283,6 @@ public final class WildcardType extends Type implements NodeWithAnnotations<Wild @Override public ResolvedWildcard resolve() { - return getSymbolResolver().resolve(this, ResolvedWildcard.class); + return getSymbolResolver().toResolvedType(this, ResolvedWildcard.class); } } 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 27b0f4029..f11f009d7 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 @@ -36,6 +36,7 @@ import com.github.javaparser.ast.stmt.*; import com.github.javaparser.ast.type.*; import com.github.javaparser.ast.visitor.Visitable; import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.utils.Utils; import java.util.*; import java.util.stream.Collectors; @@ -304,7 +305,11 @@ public class PrettyPrintVisitor implements VoidVisitor<Void> { @Override public void visit(final JavadocComment n, final Void arg) { printer.print("/**"); - printer.print(n.getContent()); + String commentContent = n.getContent(); + if (configuration.isNormalizeEolInComment()) { + commentContent = Utils.normalizeEolInTextBlock(commentContent, configuration.getEndOfLineCharacter()); + } + printer.print(commentContent); printer.println("*/"); } diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrinterConfiguration.java b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrinterConfiguration.java index 312707682..cae779246 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrinterConfiguration.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/PrettyPrinterConfiguration.java @@ -27,6 +27,7 @@ import static com.github.javaparser.utils.Utils.EOL; import static com.github.javaparser.utils.Utils.assertNotNull; public class PrettyPrinterConfiguration { + private boolean normalizeEolInComment = false; private boolean printComments = true; private boolean printJavaDoc = true; private boolean columnAlignParameters = false; @@ -44,6 +45,15 @@ public class PrettyPrinterConfiguration { return this; } + public boolean isNormalizeEolInComment() { + return normalizeEolInComment; + } + + public PrettyPrinterConfiguration setNormalizeEolInComment(boolean normalizeEolInComment) { + this.normalizeEolInComment = normalizeEolInComment; + return this; + } + public boolean isPrintComments() { return printComments; } @@ -55,7 +65,7 @@ public class PrettyPrinterConfiguration { public boolean isPrintJavaDoc() { return printJavaDoc; } - + public boolean isColumnAlignParameters() { return columnAlignParameters; } @@ -73,12 +83,12 @@ public class PrettyPrinterConfiguration { this.printJavaDoc = printJavaDoc; return this; } - + public PrettyPrinterConfiguration setColumnAlignParameters(boolean columnAlignParameters) { this.columnAlignParameters = columnAlignParameters; return this; } - + public PrettyPrinterConfiguration setColumnAlignFirstMethodChain(boolean columnAlignFirstMethodChain) { this.columnAlignFirstMethodChain = columnAlignFirstMethodChain; return this; diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/SourcePrinter.java b/javaparser-core/src/main/java/com/github/javaparser/printer/SourcePrinter.java index 623d70263..d2cdd9d28 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/SourcePrinter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/SourcePrinter.java @@ -27,6 +27,7 @@ import java.util.LinkedList; import java.util.regex.Pattern; import com.github.javaparser.Position; +import com.github.javaparser.utils.Utils; public class SourcePrinter { @@ -143,4 +144,8 @@ public class SourcePrinter { public String toString() { return getSource(); } + + public String normalizeEolInTextBlock(String content) { + return Utils.normalizeEolInTextBlock(content, endOfLineCharacter); + } } diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/concretesyntaxmodel/CsmComment.java b/javaparser-core/src/main/java/com/github/javaparser/printer/concretesyntaxmodel/CsmComment.java index 848341b99..8e684c4c5 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/concretesyntaxmodel/CsmComment.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/concretesyntaxmodel/CsmComment.java @@ -28,22 +28,21 @@ import com.github.javaparser.ast.comments.JavadocComment; import com.github.javaparser.ast.comments.LineComment; import com.github.javaparser.printer.SourcePrinter; -import static com.github.javaparser.utils.Utils.EOL; - public class CsmComment implements CsmElement { static void process(Comment comment, SourcePrinter printer) { + String content = printer.normalizeEolInTextBlock(comment.getContent()); if (comment instanceof BlockComment) { printer.print("/*"); - printer.print(comment.getContent()); - printer.print("*/" + EOL); + printer.print(content); + printer.println("*/"); } else if (comment instanceof JavadocComment) { printer.print("/**"); - printer.print(comment.getContent()); - printer.print("*/" + EOL); + printer.print(content); + printer.println("*/"); } else if (comment instanceof LineComment) { printer.print("//"); - printer.print(comment.getContent()); + printer.print(content); printer.println(); } else { throw new UnsupportedOperationException(comment.getClass().getSimpleName()); diff --git a/javaparser-core/src/main/java/com/github/javaparser/resolution/SymbolResolver.java b/javaparser-core/src/main/java/com/github/javaparser/resolution/SymbolResolver.java index 977fb0904..67f8a00ce 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/resolution/SymbolResolver.java +++ b/javaparser-core/src/main/java/com/github/javaparser/resolution/SymbolResolver.java @@ -22,7 +22,21 @@ package com.github.javaparser.resolution; import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.expr.Expression; +import com.github.javaparser.ast.type.Type; +import com.github.javaparser.resolution.types.ResolvedType; public interface SymbolResolver { - <T> T resolve(Node node, Class<T> resultClass); + /** + * For a reference it would find the corresponding + * declaration. + */ + <T> T resolveDeclaration(Node node, Class<T> resultClass); + + /** + * For types it would find the corresponding resolved types. + */ + <T> T toResolvedType(Type javaparserType, Class<T> resultClass); + + ResolvedType calculateType(Expression expression); } 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 6649e41e5..637460e0e 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 @@ -220,4 +220,10 @@ public class Utils { public static <T> Set<T> set(T... items) { return new HashSet<>(asList(items)); } + + public static String normalizeEolInTextBlock(String content, String endOfLineCharacter) { + content.replaceAll("\\r\\n", "\n"); + content = content.replaceAll("\\r", "\n"); + return content.replaceAll("\\n", endOfLineCharacter); + } } diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ast/NodeTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/NodeTest.java index aef89a87b..9135d33b4 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/ast/NodeTest.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/NodeTest.java @@ -42,6 +42,7 @@ import java.util.EnumSet; import java.util.List; import static com.github.javaparser.JavaParser.parse; +import static com.github.javaparser.utils.Utils.EOL; import static org.junit.Assert.*; public class NodeTest { @@ -309,18 +310,18 @@ public class NodeTest { MethodDeclaration methodDeclaration = cu.getType(0).getMethods().get(0); methodDeclaration.getName().removeForced(); // Name is required, so to remove it the whole method is removed. - assertEquals("class X {\n}\n", cu.toString()); + assertEquals(String.format("class X {%1$s}%1$s", EOL), cu.toString()); } @Test public void removingTheSecondOfAListOfIdenticalStatementsDoesNotMessUpTheParents() { - CompilationUnit unit = JavaParser.parse("public class Example {\n" + - " public static void example() {\n" + - " boolean swapped;\n" + - " swapped=false;\n" + - " swapped=false;\n" + - " }\n" + - "}\n"); + CompilationUnit unit = JavaParser.parse(String.format("public class Example {%1$s" + + " public static void example() {%1$s" + + " boolean swapped;%1$s" + + " swapped=false;%1$s" + + " swapped=false;%1$s" + + " }%1$s" + + "}%1$s", EOL)); // remove the second swapped=false Node target = unit.getChildNodes().get(0).getChildNodes().get(1).getChildNodes().get(2).getChildNodes().get(2); target.remove(); diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ast/ReplaceNodeTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/ReplaceNodeTest.java index 822bd9433..4e93efce6 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/ast/ReplaceNodeTest.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/ReplaceNodeTest.java @@ -4,6 +4,7 @@ import org.junit.Test; import static com.github.javaparser.JavaParser.parse; import static com.github.javaparser.JavaParser.parsePackageDeclaration; +import static com.github.javaparser.utils.Utils.EOL; import static org.junit.Assert.assertEquals; public class ReplaceNodeTest { @@ -11,21 +12,21 @@ public class ReplaceNodeTest { public void testSimplePropertyWithGenericReplace() { CompilationUnit cu = parse("package x; class Y {}"); cu.replace(cu.getPackageDeclaration().get(), parsePackageDeclaration("package z;")); - assertEquals("package z;\n" + - "\n" + - "class Y {\n" + - "}\n", cu.toString()); + assertEquals(String.format("package z;%1$s" + + "%1$s" + + "class Y {%1$s" + + "}%1$s", EOL), cu.toString()); } @Test public void testListProperty() { CompilationUnit cu = parse("package x; class Y {}"); cu.replace(cu.getClassByName("Y").get(), parse("class B{int y;}").getClassByName("B").get()); - assertEquals("package x;\n" + - "\n" + - "class B {\n" + - "\n" + - " int y;\n" + - "}\n", cu.toString()); + assertEquals(String.format("package x;%1$s" + + "%1$s" + + "class B {%1$s" + + "%1$s" + + " int y;%1$s" + + "}%1$s", EOL), cu.toString()); } } diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java index 24c99c8ab..63310ec78 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/body/ConstructorDeclarationTest.java @@ -7,6 +7,7 @@ import org.junit.Test; import static com.github.javaparser.ParseStart.CLASS_BODY; import static com.github.javaparser.Providers.provider; import static com.github.javaparser.utils.TestUtils.assertProblems; +import static com.github.javaparser.utils.Utils.EOL; import static org.junit.Assert.assertEquals; public class ConstructorDeclarationTest { @@ -17,9 +18,9 @@ public class ConstructorDeclarationTest { ConstructorDeclaration cons = new ConstructorDeclaration("Cons"); cons.createBody().addStatement("super();"); - assertEquals("public Cons() {\n" + - " super();\n" + - "}", cons.toString()); + assertEquals(String.format("public Cons() {%1$s" + + " super();%1$s" + + "}", EOL), cons.toString()); } @Test diff --git a/javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/PrettyPrintingSteps.java b/javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/PrettyPrintingSteps.java index b10302c49..da83a0d21 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/PrettyPrintingSteps.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/bdd/steps/PrettyPrintingSteps.java @@ -21,11 +21,11 @@ package com.github.javaparser.bdd.steps; -import com.github.javaparser.JavaParser; import com.github.javaparser.ParseException; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.Node; import com.github.javaparser.ast.visitor.ModifierVisitor; +import com.github.javaparser.printer.PrettyPrinterConfiguration; import org.jbehave.core.annotations.Given; import org.jbehave.core.annotations.Then; import org.jbehave.core.annotations.When; @@ -112,4 +112,9 @@ public class PrettyPrintingSteps { assertEquals(src.trim(), resultNode.toString().trim()); } + @Then("it is printed with normalized EOL in comments as:$src") + public void isPrintedWithEolAs(String src) { + PrettyPrinterConfiguration conf = new PrettyPrinterConfiguration().setNormalizeEolInComment(true); + assertEquals(src.trim(), resultNode.toString(conf).trim()); + } } diff --git a/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story index 355b6784e..50bbe1f50 100644 --- a/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story +++ b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/pretty_printing_scenarios.story @@ -472,7 +472,7 @@ public class Abc<@C A, @C X extends @C String & @C Serializable> { Scenario: we can parse a package-info file. Given the class in the file "package-info.java" When the class is parsed by the Java parser -Then it is printed as: +Then it is printed with normalized EOL in comments as: /** * This package contains class for doing some stuff. */ |