Skip to content

Commit 175d87c

Browse files
authored
Merge pull request javaparser#2518 from iTakeshi/typesolver-enum
JavaParserEnumDeclaration can have access specifier
2 parents 81a56f7 + 027a1ef commit 175d87c

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserEnumDeclaration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ public Optional<MethodDeclaration> toAst() {
392392

393393
@Override
394394
public AccessSpecifier accessSpecifier() {
395-
throw new UnsupportedOperationException();
395+
return wrappedNode.getAccessSpecifier();
396396
}
397397

398398
@Override

javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/resolution/EnumResolutionTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323

2424
import com.github.javaparser.ParserConfiguration;
2525
import com.github.javaparser.StaticJavaParser;
26+
import com.github.javaparser.ast.AccessSpecifier;
2627
import com.github.javaparser.ast.CompilationUnit;
2728
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
29+
import com.github.javaparser.ast.body.EnumDeclaration;
2830
import com.github.javaparser.ast.body.MethodDeclaration;
2931
import com.github.javaparser.ast.expr.Expression;
3032
import com.github.javaparser.ast.expr.FieldAccessExpr;
@@ -36,6 +38,7 @@
3638
import com.github.javaparser.resolution.types.ResolvedType;
3739
import com.github.javaparser.symbolsolver.JavaSymbolSolver;
3840
import com.github.javaparser.symbolsolver.javaparser.Navigator;
41+
import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserEnumDeclaration;
3942
import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade;
4043
import com.github.javaparser.symbolsolver.model.resolution.SymbolReference;
4144
import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
@@ -97,4 +100,27 @@ void resolveEnumConstantAccess() {
97100
}
98101
}
99102

103+
@Test
104+
void enumAccessSpecifier() {
105+
try {
106+
StaticJavaParser.getConfiguration().setSymbolResolver(new JavaSymbolSolver(new ReflectionTypeSolver()));
107+
CompilationUnit cu = parseSample("EnumAccessSpecifier");
108+
ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "MyClass");
109+
110+
EnumDeclaration ed_public = Navigator.findType(clazz, "EnumPublic").get().toEnumDeclaration().get();
111+
assertEquals(AccessSpecifier.PUBLIC, ((JavaParserEnumDeclaration) ed_public.resolve()).accessSpecifier());
112+
113+
EnumDeclaration ed_protected = Navigator.findType(clazz, "EnumProtected").get().toEnumDeclaration().get();
114+
assertEquals(AccessSpecifier.PROTECTED, ((JavaParserEnumDeclaration) ed_protected.resolve()).accessSpecifier());
115+
116+
EnumDeclaration ed_private = Navigator.findType(clazz, "EnumPrivate").get().toEnumDeclaration().get();
117+
assertEquals(AccessSpecifier.PRIVATE, ((JavaParserEnumDeclaration) ed_private.resolve()).accessSpecifier());
118+
119+
EnumDeclaration ed_default = Navigator.findType(clazz, "EnumDefault").get().toEnumDeclaration().get();
120+
assertEquals(AccessSpecifier.PACKAGE_PRIVATE, ((JavaParserEnumDeclaration) ed_default.resolve()).accessSpecifier());
121+
} finally {
122+
StaticJavaParser.setConfiguration(new ParserConfiguration());
123+
}
124+
}
125+
100126
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class MyClass {
2+
public enum EnumPublic {
3+
}
4+
5+
protected enum EnumProtected {
6+
}
7+
8+
private enum EnumPrivate {
9+
}
10+
11+
enum EnumDefault {
12+
}
13+
}

0 commit comments

Comments
 (0)