Skip to content

Commit a944234

Browse files
authored
Merge branch 'master' into master
2 parents 7bf2256 + 18f6ee2 commit a944234

File tree

45 files changed

+1213
-626
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1213
-626
lines changed

changelog.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ Version 3.20.0
1515
[issues resolved](https://github.com/javaparser/javaparser/milestone/181?closed=1)
1616

1717
### Added
18+
* Issue #2991 - Added support for Iterables in CombinedTypeSolver
19+
(PR [#3033](https://github.com/javaparser/javaparser/pull/3033), by [@4everTheOne](https://github.com/4everTheOne))
1820
* Implemented logic for getAllFields in Annotations
1921
(PR [#3097](https://github.com/javaparser/javaparser/pull/3097), by [@4everTheOne](https://github.com/4everTheOne))
2022
### Changed
@@ -40,7 +42,7 @@ Version 3.20.0
4042
(PR [#3129](https://github.com/javaparser/javaparser/pull/3129), by [@dependabot](https://github.com/dependabot))
4143
### Fixed
4244
* Issue #3038 and Issue #3071 - Hanging when certain names are resolved
43-
(PR [#3072](https://github.com/javaparser/javaparser/pull/3072), by [@mernst](https://github.com/mernst))
45+
(PR [#3072](https://github.com/javaparser/javaparser/pull/3072), by [@col-e](https://github.com/Col-E))
4446
* Javadoc fixes
4547
(PR [#3082](https://github.com/javaparser/javaparser/pull/3082), by [@mernst](https://github.com/mernst))
4648
* Update readme with correct Java support versions

javaparser-core-generators/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>javaparser-parent</artifactId>
55
<groupId>com.github.javaparser</groupId>
6-
<version>3.19.1-SNAPSHOT</version>
6+
<version>3.20.1-SNAPSHOT</version>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>
99

javaparser-core-metamodel-generator/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>javaparser-parent</artifactId>
55
<groupId>com.github.javaparser</groupId>
6-
<version>3.19.1-SNAPSHOT</version>
6+
<version>3.20.1-SNAPSHOT</version>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>
99

javaparser-core-serialization/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<parent>
33
<artifactId>javaparser-parent</artifactId>
44
<groupId>com.github.javaparser</groupId>
5-
<version>3.19.1-SNAPSHOT</version>
5+
<version>3.20.1-SNAPSHOT</version>
66
</parent>
77
<modelVersion>4.0.0</modelVersion>
88

javaparser-core-testing-bdd/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<parent>
33
<artifactId>javaparser-parent</artifactId>
44
<groupId>com.github.javaparser</groupId>
5-
<version>3.19.1-SNAPSHOT</version>
5+
<version>3.20.1-SNAPSHOT</version>
66
</parent>
77
<modelVersion>4.0.0</modelVersion>
88

javaparser-core-testing/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<parent>
33
<artifactId>javaparser-parent</artifactId>
44
<groupId>com.github.javaparser</groupId>
5-
<version>3.19.1-SNAPSHOT</version>
5+
<version>3.20.1-SNAPSHOT</version>
66
</parent>
77
<modelVersion>4.0.0</modelVersion>
88

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package com.github.javaparser.ast.type;
2+
3+
import com.github.javaparser.StaticJavaParser;
4+
import com.github.javaparser.ast.NodeList;
5+
import com.github.javaparser.ast.expr.AnnotationExpr;
6+
import com.github.javaparser.ast.expr.SimpleName;
7+
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
8+
import com.github.javaparser.metamodel.JavaParserMetaModel;
9+
import org.junit.jupiter.api.Assertions;
10+
import org.junit.jupiter.api.Test;
11+
12+
import java.util.Optional;
13+
14+
import static org.junit.jupiter.api.Assertions.*;
15+
16+
class ClassOrInterfaceTypeTest {
17+
18+
@Test
19+
void testSetName() {
20+
ClassOrInterfaceType classOrInterfaceType = new ClassOrInterfaceType();
21+
22+
assertNotEquals("A", classOrInterfaceType.getName().toString());
23+
classOrInterfaceType.setName("A");
24+
assertEquals("A", classOrInterfaceType.getName().toString());
25+
}
26+
27+
@Test
28+
void testNestedClass() {
29+
ClassOrInterfaceType classA = new ClassOrInterfaceType();
30+
classA.setName("A");
31+
ClassOrInterfaceType classB = new ClassOrInterfaceType(classA, "B");
32+
33+
assertEquals("A.B", classB.getNameWithScope());
34+
}
35+
36+
@Test
37+
void testWithGeneric() {
38+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
39+
ClassOrInterfaceType classB = new ClassOrInterfaceType(classA, new SimpleName("B"), new NodeList<>(classA));
40+
41+
assertTrue(classB.getTypeArguments().isPresent());
42+
assertEquals(1, classB.getTypeArguments().get().size());
43+
assertEquals(classA, classB.getTypeArguments().get().get(0));
44+
45+
assertEquals("A.B", classB.getNameWithScope());
46+
assertEquals("A.B<A>", classB.asString());
47+
}
48+
49+
@Test
50+
void testWithAnnotations() {
51+
AnnotationExpr annotationExpr = StaticJavaParser.parseAnnotation("@Override");
52+
ClassOrInterfaceType classA = new ClassOrInterfaceType(
53+
null, new SimpleName("A"), null, new NodeList<>(annotationExpr));
54+
55+
assertEquals(1, classA.getAnnotations().size());
56+
assertEquals(annotationExpr, classA.getAnnotation(0));
57+
}
58+
59+
@Test
60+
void testResolveWithoutCompilationUnit() {
61+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
62+
Assertions.assertThrows(IllegalStateException.class, classA::resolve);
63+
}
64+
65+
@Test
66+
void testToDescriptorWithoutCompilationUnit() {
67+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
68+
Assertions.assertThrows(IllegalStateException.class, classA::toDescriptor);
69+
}
70+
71+
@Test
72+
void testToClassOrInterfaceType() {
73+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
74+
75+
Optional<ClassOrInterfaceType> newClass = classA.toClassOrInterfaceType();
76+
assertTrue(newClass.isPresent());
77+
assertSame(classA, newClass.get());
78+
}
79+
80+
@Test
81+
void testIfClassOrInterfaceTypeIsCalled() {
82+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
83+
classA.ifClassOrInterfaceType(classOrInterfaceType -> assertSame(classA, classOrInterfaceType));
84+
}
85+
86+
@Test
87+
void testAsClassOrInterfaceTypeIsTheSame() {
88+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
89+
90+
assertTrue(classA.isClassOrInterfaceType());
91+
assertEquals(classA, classA.asClassOrInterfaceType());
92+
}
93+
94+
@Test
95+
void testCloneClass() {
96+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
97+
assertEquals(classA, classA.clone());
98+
}
99+
100+
@Test
101+
void testMetaModel() {
102+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
103+
assertEquals(JavaParserMetaModel.classOrInterfaceTypeMetaModel, classA.getMetaModel());
104+
}
105+
106+
@Test
107+
void testAcceptVoidVisitor() {
108+
ClassOrInterfaceType classA = new ClassOrInterfaceType(null, "A");
109+
classA.accept(new VoidVisitorAdapter<Object>() {
110+
@Override
111+
public void visit(ClassOrInterfaceType classOrInterfaceType, Object object) {
112+
super.visit(classOrInterfaceType, object);
113+
114+
assertEquals(classA, classOrInterfaceType);
115+
}
116+
}, null);
117+
}
118+
119+
}

javaparser-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<parent>
33
<artifactId>javaparser-parent</artifactId>
44
<groupId>com.github.javaparser</groupId>
5-
<version>3.19.1-SNAPSHOT</version>
5+
<version>3.20.1-SNAPSHOT</version>
66
</parent>
77
<modelVersion>4.0.0</modelVersion>
88

javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/LexicalPreservingPrinter.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@
7474
* in its original formatting including the AST changes.
7575
*/
7676
public class LexicalPreservingPrinter {
77+
78+
private static String JAVA_UTIL_OPTIONAL = Optional.class.getCanonicalName();
79+
private static String JAVAPARSER_AST_NODELIST = NodeList.class.getCanonicalName();
7780

7881
private static AstObserver observer;
7982

@@ -617,21 +620,21 @@ static List<TokenTextElement> findIndentation(Node node) {
617620
//
618621

619622
private static boolean isReturningOptionalNodeList(Method m) {
620-
if (!m.getReturnType().getCanonicalName().equals(Optional.class.getCanonicalName())) {
623+
if (!m.getReturnType().getCanonicalName().equals(JAVA_UTIL_OPTIONAL)) {
621624
return false;
622625
}
623626
if (!(m.getGenericReturnType() instanceof ParameterizedType)) {
624627
return false;
625628
}
626629
ParameterizedType parameterizedType = (ParameterizedType) m.getGenericReturnType();
627630
java.lang.reflect.Type optionalArgument = parameterizedType.getActualTypeArguments()[0];
628-
return (optionalArgument.getTypeName().startsWith(NodeList.class.getCanonicalName()));
631+
return (optionalArgument.getTypeName().startsWith(JAVAPARSER_AST_NODELIST));
629632
}
630633

631634
private static ObservableProperty findNodeListName(NodeList<?> nodeList) {
632635
Node parent = nodeList.getParentNodeForChildren();
633636
for (Method m : parent.getClass().getMethods()) {
634-
if (m.getParameterCount() == 0 && m.getReturnType().getCanonicalName().equals(NodeList.class.getCanonicalName())) {
637+
if (m.getParameterCount() == 0 && m.getReturnType().getCanonicalName().equals(JAVAPARSER_AST_NODELIST)) {
635638
try {
636639
Object raw = m.invoke(parent);
637640
if (!(raw instanceof NodeList)) {

javaparser-core/src/main/java/com/github/javaparser/resolution/types/ResolvedReferenceType.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@
5151
*/
5252
public abstract class ResolvedReferenceType implements ResolvedType,
5353
ResolvedTypeParametrized, ResolvedTypeParameterValueProvider {
54+
55+
protected static String JAVA_LANG_ENUM = java.lang.Enum.class.getCanonicalName();
56+
protected static String JAVA_LANG_OBJECT = java.lang.Object.class.getCanonicalName();
5457

5558
//
5659
// Fields
@@ -549,7 +552,7 @@ private static List<ResolvedType> deriveParams(ResolvedReferenceTypeDeclaration
549552
public boolean isJavaLangObject() {
550553
return this.isReferenceType()
551554
&& hasName() // Consider anonymous classes
552-
&& getQualifiedName().equals(java.lang.Object.class.getCanonicalName());
555+
&& getQualifiedName().equals(JAVA_LANG_OBJECT);
553556
}
554557

555558
/**
@@ -559,7 +562,7 @@ && hasName() // Consider anonymous classes
559562
public boolean isJavaLangEnum() {
560563
return this.isReferenceType()
561564
&& hasName() // Consider anonymous classes
562-
&& getQualifiedName().equals(java.lang.Enum.class.getCanonicalName());
565+
&& getQualifiedName().equals(JAVA_LANG_ENUM);
563566
}
564567

565568

0 commit comments

Comments
 (0)