@Override public SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { if (typeSolver == null) throw new IllegalArgumentException(); // among constants for (EnumConstantDeclaration constant : wrappedNode.getEntries()) { if (constant.getName().getId().equals(name)) { return SymbolReference.solved(new JavaParserEnumConstantDeclaration(constant, typeSolver)); } } if (this.getDeclaration().hasField(name)) { return SymbolReference.solved(this.getDeclaration().getField(name)); } // then to parent return getParent().solveSymbol(name, typeSolver); }
return new MethodCallExprContext((MethodCallExpr) node, typeSolver); } else if (node instanceof EnumDeclaration) { return new EnumDeclarationContext((EnumDeclaration) node, typeSolver); } else if (node instanceof FieldAccessExpr) { return new FieldAccessContext((FieldAccessExpr) node, typeSolver);
public EnumDeclarationContext(EnumDeclaration wrappedNode, TypeSolver typeSolver) { super(wrappedNode, typeSolver); this.javaParserTypeDeclarationAdapter = new JavaParserTypeDeclarationAdapter(wrappedNode, typeSolver, getDeclaration(), this); }
return new MethodCallExprContext((MethodCallExpr) node, typeSolver); } else if (node instanceof EnumDeclaration) { return new EnumDeclarationContext((EnumDeclaration) node, typeSolver); } else if (node instanceof FieldAccessExpr) { return new FieldAccessContext((FieldAccessExpr) node, typeSolver);
public EnumDeclarationContext(EnumDeclaration wrappedNode, TypeSolver typeSolver) { super(wrappedNode, typeSolver); this.javaParserTypeDeclarationAdapter = new JavaParserTypeDeclarationAdapter(wrappedNode, typeSolver, getDeclaration(), this); }
@Test public void solveSymbolAsValueReferringToDeclaredStaticField() throws ParseException { CompilationUnit cu = parseSample("AnEnum"); com.github.javaparser.ast.body.EnumDeclaration enumDeclaration = Navigator.demandEnum(cu, "MyEnum"); Context context = new EnumDeclarationContext(enumDeclaration, typeSolver); Optional<Value> ref = context.solveSymbolAsValue("j", new MemoryTypeSolver()); assertEquals(true, ref.isPresent()); assertEquals("long", ref.get().getType().describe()); }
@Override public SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { if (typeSolver == null) throw new IllegalArgumentException(); // among constants for (EnumConstantDeclaration constant : wrappedNode.getEntries()) { if (constant.getName().getId().equals(name)) { return SymbolReference.solved(new JavaParserEnumConstantDeclaration(constant, typeSolver)); } } if (this.getDeclaration().hasField(name)) { return SymbolReference.solved(this.getDeclaration().getField(name)); } // then to parent return getParent().solveSymbol(name, typeSolver); }
public EnumDeclarationContext(EnumDeclaration wrappedNode, TypeSolver typeSolver) { super(wrappedNode, typeSolver); this.javaParserTypeDeclarationAdapter = new JavaParserTypeDeclarationAdapter(wrappedNode, typeSolver, getDeclaration(), this); }
@Test public void solveSymbolAsValueReferringToValue() throws ParseException { CompilationUnit cu = parseSample("AnEnum"); com.github.javaparser.ast.body.EnumDeclaration enumDeclaration = Navigator.demandEnum(cu, "MyEnum"); Context context = new EnumDeclarationContext(enumDeclaration, typeSolver); Optional<Value> ref = context.solveSymbolAsValue("E1", new MemoryTypeSolver()); assertEquals(true, ref.isPresent()); assertEquals("MyEnum", ref.get().getType().describe()); }
@Override public SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name) { if (typeSolver == null) throw new IllegalArgumentException(); // among constants for (EnumConstantDeclaration constant : wrappedNode.getEntries()) { if (constant.getName().getId().equals(name)) { return SymbolReference.solved(new JavaParserEnumConstantDeclaration(constant, typeSolver)); } } if (this.getDeclaration().hasField(name)) { return SymbolReference.solved(this.getDeclaration().getField(name)); } // then to parent return getParent().solveSymbol(name); }
return new MethodCallExprContext((MethodCallExpr) node, typeSolver); } else if (node instanceof EnumDeclaration) { return new EnumDeclarationContext((EnumDeclaration) node, typeSolver); } else if (node instanceof FieldAccessExpr) { return new FieldAccessContext((FieldAccessExpr) node, typeSolver);
@Test public void solveSymbolAsValueReferringToDeclaredInstanceField() throws ParseException { CompilationUnit cu = parseSample("AnEnum"); com.github.javaparser.ast.body.EnumDeclaration enumDeclaration = Navigator.demandEnum(cu, "MyEnum"); Context context = new EnumDeclarationContext(enumDeclaration, typeSolver); Optional<Value> ref = context.solveSymbolAsValue("i", new MemoryTypeSolver()); assertEquals(true, ref.isPresent()); assertEquals("int", ref.get().getType().describe()); }
@Test public void solveSymbolReferringToValue() throws ParseException { CompilationUnit cu = parseSample("AnEnum"); com.github.javaparser.ast.body.EnumDeclaration enumDeclaration = Navigator.demandEnum(cu, "MyEnum"); Context context = new EnumDeclarationContext(enumDeclaration, typeSolver); SymbolReference<? extends ResolvedValueDeclaration> ref = context.solveSymbol("E1", new MemoryTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("MyEnum", ref.getCorrespondingDeclaration().getType().describe()); }
@Test public void solveSymbolReferringToDeclaredStaticField() throws ParseException { CompilationUnit cu = parseSample("AnEnum"); com.github.javaparser.ast.body.EnumDeclaration enumDeclaration = Navigator.demandEnum(cu, "MyEnum"); Context context = new EnumDeclarationContext(enumDeclaration, typeSolver); SymbolReference<? extends ResolvedValueDeclaration> ref = context.solveSymbol("j", new MemoryTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("long", ref.getCorrespondingDeclaration().getType().describe()); }
@Test public void solveSymbolReferringToDeclaredInstanceField() throws ParseException { CompilationUnit cu = parseSample("AnEnum"); com.github.javaparser.ast.body.EnumDeclaration enumDeclaration = Navigator.demandEnum(cu, "MyEnum"); Context context = new EnumDeclarationContext(enumDeclaration, typeSolver); SymbolReference<? extends ResolvedValueDeclaration> ref = context.solveSymbol("i", new MemoryTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("int", ref.getCorrespondingDeclaration().getType().describe()); }