@Override public boolean enterIndexNode(IndexNode indexNode) { addToPath(indexNode); indexNode.getBase().accept(this); int size = exp.size(); if (size > 1 && ST_PRO.equals(exp.get(size - 2))) { exp.remove(size - 2); } if (exp.isEmpty()) { exp.add(ST_ARR); } else { boolean propertyAccess = false; if (indexNode.getIndex() instanceof LiteralNode) { LiteralNode lNode = (LiteralNode)indexNode.getIndex(); if (lNode.isString()) { exp.add(ST_PRO); exp.add(lNode.getPropertyName()); propertyAccess = true; } } if (!propertyAccess) { exp.add(exp.size() - 1, ST_ARR); } } //add(exp, indexNode.getStart(), false); //reset(); return false; }
private boolean fillName(IndexNode node, List<String> result) { Node index = node.getIndex(); Node base = node.getBase(); if (index instanceof LiteralNode && base instanceof AccessNode) { LiteralNode literal = (LiteralNode) index; if (literal.isString()) { result.add(0, literal.getString()); List<Identifier> fqn = getName((AccessNode) base, parserResult); for (int i = fqn.size() - 1; i >= 0; i--) { result.add(0, fqn.get(i).getName()); } return true; } } return false; }
@Override public Node leaveIndexNode(IndexNode indexNode) { if (indexNode.getIndex() instanceof LiteralNode) { Node base = indexNode.getBase(); JsObjectImpl parent = null; if (parent != null && indexNode.getIndex() instanceof LiteralNode) { LiteralNode literal = (LiteralNode)indexNode.getIndex(); if (literal.isString()) { String index = literal.getPropertyName(); JsObjectImpl property = (JsObjectImpl)parent.getProperty(index); if (property != null) { property.addOccurrence(new OffsetRange(indexNode.getIndex().getStart(), indexNode.getIndex().getFinish())); } else { Identifier name = ModelElementFactory.create(parserResult, (LiteralNode)indexNode.getIndex()); if (name != null) { property = new JsObjectImpl(parent, name, name.getOffsetRange(), parserResult.getSnapshot().getMimeType(), null);
name.add(create(parserResult, (IdentNode)indexNode.getBase())); if (indexNode.getIndex() instanceof LiteralNode) { LiteralNode lNode = (LiteralNode)indexNode.getIndex(); name.add(new Identifier(lNode.getPropertyName(), new OffsetRange(lNode.getStart(), lNode.getFinish()))); } else if (indexNode.getIndex() instanceof IdentNode) {
BinaryNode binNode = (BinaryNode) lastVisited; if (binNode.lhs() instanceof IndexNode) { Node index = ((IndexNode)binNode.lhs()).getIndex(); if (!(index instanceof LiteralNode && ((LiteralNode)index).isString())) { treatAsAnonymous = true;
Node binLhs = binNode.lhs(); if (binLhs instanceof IndexNode) { Node index = ((IndexNode)binLhs).getIndex(); if (!(index instanceof LiteralNode && ((LiteralNode)index).isString())) { treatAsAnonymous = true;