@Override public Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { Expression scope = wrappedNode.getScope(); if (wrappedNode.getField().toString().equals(name)) { ResolvedType typeOfScope = JavaParserFacade.get(typeSolver).getType(scope); if (typeOfScope.isArray() && name.equals(ARRAY_LENGTH_FIELD_NAME)) { return Optional.of(new Value(ResolvedPrimitiveType.INT, ARRAY_LENGTH_FIELD_NAME)); } if (typeOfScope.isReferenceType()) { Optional<ResolvedType> typeUsage = typeOfScope.asReferenceType().getFieldType(name); if (typeUsage.isPresent()) { return Optional.of(new Value(typeUsage.get(), name)); } else { return Optional.empty(); } } else { return Optional.empty(); } } else { return getParent().solveSymbolAsValue(name, typeSolver); } }
public SymbolReference<ResolvedValueDeclaration> solveField(String name) { Collection<ResolvedReferenceTypeDeclaration> rrtds = findTypeDeclarations(Optional.of(wrappedNode.getScope())); for (ResolvedReferenceTypeDeclaration rrtd : rrtds) { if (rrtd.isEnum()) { Optional<ResolvedEnumConstantDeclaration> enumConstant = rrtd.asEnum().getEnumConstants().stream().filter(c -> c.getName().equals(name)).findFirst(); if (enumConstant.isPresent()) { return SymbolReference.solved(enumConstant.get()); } } try { return SymbolReference.solved(rrtd.getField(wrappedNode.getName().getId())); } catch (Throwable t) { } } return SymbolReference.unsolved(ResolvedFieldDeclaration.class); } }
public SymbolReference<ResolvedFieldDeclaration> solve(FieldAccessExpr fieldAccessExpr) { return ((FieldAccessContext) JavaParserFactory.getContext(fieldAccessExpr, typeSolver)).solveField(fieldAccessExpr.getName().getId(), typeSolver); }
return new EnumDeclarationContext((EnumDeclaration) node, typeSolver); } else if (node instanceof FieldAccessExpr) { return new FieldAccessContext((FieldAccessExpr) node, typeSolver); } else if (node instanceof SwitchEntryStmt) { return new SwitchEntryContext((SwitchEntryStmt) node, typeSolver);
return new EnumDeclarationContext((EnumDeclaration) node, typeSolver); } else if (node instanceof FieldAccessExpr) { return new FieldAccessContext((FieldAccessExpr) node, typeSolver); } else if (node instanceof SwitchEntryStmt) { return new SwitchEntryContext((SwitchEntryStmt) node, typeSolver);
@Override public Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { Expression scope = wrappedNode.getScope(); if (wrappedNode.getField().toString().equals(name)) { ResolvedType typeOfScope = JavaParserFacade.get(typeSolver).getType(scope); if (typeOfScope.isArray() && name.equals(ARRAY_LENGTH_FIELD_NAME)) { return Optional.of(new Value(ResolvedPrimitiveType.INT, ARRAY_LENGTH_FIELD_NAME)); } if (typeOfScope.isReferenceType()) { Optional<ResolvedType> typeUsage = typeOfScope.asReferenceType().getFieldType(name); if (typeUsage.isPresent()) { return Optional.of(new Value(typeUsage.get(), name)); } else { return Optional.empty(); } } else { return Optional.empty(); } } else { return getParent().solveSymbolAsValue(name, typeSolver); } } }
return new EnumDeclarationContext((EnumDeclaration) node, typeSolver); } else if (node instanceof FieldAccessExpr) { return new FieldAccessContext((FieldAccessExpr) node, typeSolver); } else if (node instanceof SwitchEntry) { return new SwitchEntryContext((SwitchEntry) node, typeSolver);
public SymbolReference<ResolvedFieldDeclaration> solveField(String name, TypeSolver typeSolver) { Collection<ResolvedReferenceTypeDeclaration> rrtds = findTypeDeclarations(Optional.of(wrappedNode.getScope()), typeSolver); for (ResolvedReferenceTypeDeclaration rrtd : rrtds) { try { return SymbolReference.solved(rrtd.getField(wrappedNode.getName().getId())); } catch (Throwable t) { } } return SymbolReference.unsolved(ResolvedFieldDeclaration.class); } }
public SymbolReference<ResolvedValueDeclaration> solve(FieldAccessExpr fieldAccessExpr) { return ((FieldAccessContext) JavaParserFactory.getContext(fieldAccessExpr, typeSolver)).solveField(fieldAccessExpr.getName().getId()); }
@Override public Optional<Value> solveSymbolAsValue(String name) { Expression scope = wrappedNode.getScope(); if (wrappedNode.getName().toString().equals(name)) { ResolvedType typeOfScope = JavaParserFacade.get(typeSolver).getType(scope); if (typeOfScope.isArray() && name.equals(ARRAY_LENGTH_FIELD_NAME)) { return Optional.of(new Value(ResolvedPrimitiveType.INT, ARRAY_LENGTH_FIELD_NAME)); } if (typeOfScope.isReferenceType()) { if (typeOfScope.asReferenceType().getTypeDeclaration().isEnum()) { ResolvedEnumDeclaration enumDeclaration = (ResolvedEnumDeclaration)typeOfScope.asReferenceType().getTypeDeclaration(); if (enumDeclaration.hasEnumConstant(name)) { return Optional.of(new Value(enumDeclaration.getEnumConstant(name).getType(), name)); } } Optional<ResolvedType> typeUsage = typeOfScope.asReferenceType().getFieldType(name); return typeUsage.map(resolvedType -> new Value(resolvedType, name)); } else { return Optional.empty(); } } else { return getParent().solveSymbolAsValue(name); } }