Ejemplo n.º 1
0
  /** Reads annotations and metadata and produces a cacheable map */
  private Map<String, Collection<String>> parseTypes(Project project) {
    Map<String, Collection<String>> map =
        new THashMap<String, Collection<String>>(); // parent -> known-key[]
    Collection<Variable> variables = getVariables(project, "CONFIG_KEYS");
    for (Variable variable : variables) {
      if (!NAMESPACE_NAME.equals(variable.getNamespaceName())) continue;
      PsiElement parent = variable.getParent();

      if (parent instanceof AssignmentExpression) {
        PhpPsiElement value = ((AssignmentExpression) parent).getValue();
        if (value instanceof ArrayCreationExpression) {
          Iterable<ArrayHashElement> elements = ((ArrayCreationExpression) value).getHashElements();
          parseTypes2(map, elements, "");
        }
      }
    }
    return map;
  }