@Override public boolean enterLiteralNode(LiteralNode lNode) { Object value = lNode.getObject(); TypeUsage type = null; if (value instanceof Boolean) { type = BOOLEAN_TYPE; } else if (value instanceof String) { type = STRING_TYPE; } else if (value instanceof Integer || value instanceof Float || value instanceof Double) { type = NUMBER_TYPE; } else if (lNode instanceof LiteralNode.ArrayLiteralNode) { type = ARRAY_TYPE; } else if (value instanceof Lexer.RegexToken) { type = REGEXP_TYPE; } if (type != null) { if (getPath().size() > 1 && getPreviousFromPath(2) instanceof CallNode) { exp.add(type.getType()); } else { add(type); } } return false; }
@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; }
if (iNode.getIndex() instanceof LiteralNode) { LiteralNode lNode = (LiteralNode)iNode.getIndex(); if (lNode.isString()) { name.add(new Identifier(lNode.getPropertyName(), new OffsetRange(lNode.getStart(), lNode.getFinish()))); if (lNode.isNumeric()) { baseIdent = new Identifier("Number", OffsetRange.NONE); //NOI8N
name.add(new Identifier(lNode.getPropertyName(), new OffsetRange(lNode.getStart(), lNode.getFinish()))); } else if (indexNode.getIndex() instanceof IdentNode) {
if (lNode.isString()) { Identifier newPropName = ModelElementFactory.create(parserResult, lNode); if (newPropName != null) { indexNodeReferProperty = true; if (lObject.getProperty(lNode.getString()) == null) { JsObject newProperty = new JsObjectImpl(lObject, newPropName, newPropName.getOffsetRange(), true, parserResult.getSnapshot().getMimeType(), null); lObject.addProperty(newPropName.getName(), newProperty); assignmentOffset = lNode.getFinish();
private boolean isResultString(BinaryNode binaryNode) { boolean bResult = false; TokenType tokenType = binaryNode.tokenType(); Node lhs = binaryNode.lhs(); Node rhs = binaryNode.rhs(); if (tokenType == TokenType.ADD && ((lhs instanceof LiteralNode && ((LiteralNode) lhs).isString()) || (rhs instanceof LiteralNode && ((LiteralNode) rhs).isString()))) { bResult = true; } else { if (lhs instanceof JoinPredecessorExpression) { lhs = ((JoinPredecessorExpression)lhs).getExpression(); } if (rhs instanceof JoinPredecessorExpression) { rhs = ((JoinPredecessorExpression)rhs).getExpression(); } if (lhs instanceof BinaryNode) { bResult = isResultString((BinaryNode) lhs); } else if (rhs instanceof BinaryNode) { bResult = isResultString((BinaryNode) rhs); } } return bResult; }
private boolean isResultNumber(BinaryNode binaryNode) { boolean bResult = false; TokenType tokenType = binaryNode.tokenType(); Node lhs = binaryNode.lhs(); Node rhs = binaryNode.rhs(); if ((tokenType == TokenType.BIT_OR || tokenType == TokenType.BIT_AND) && ((lhs instanceof LiteralNode && ((LiteralNode) lhs).isNumeric()) || (rhs instanceof LiteralNode && ((LiteralNode) rhs).isNumeric()))) { bResult = true; } else if (tokenType == TokenType.DIV || tokenType == TokenType.MUL || tokenType == TokenType.SUB ){ bResult = true; } else { if (lhs instanceof BinaryNode) { bResult = isResultNumber((BinaryNode) lhs); } else if (rhs instanceof BinaryNode) { bResult = isResultNumber((BinaryNode) rhs); } } return bResult; }
if (binNode.lhs() instanceof IndexNode) { Node index = ((IndexNode)binNode.lhs()).getIndex(); if (!(index instanceof LiteralNode && ((LiteralNode)index).isString())) { treatAsAnonymous = true;
private static List<Identifier> getName(PropertyNode propertyNode, ParserResult parserResult) { List<Identifier> name = new ArrayList(1); if (propertyNode.getKey() instanceof IdentNode) { IdentNode ident = (IdentNode) propertyNode.getKey(); name.add(new Identifier(ident.getName(), getOffsetRange(ident))); } else if (propertyNode.getKey() instanceof LiteralNode){ LiteralNode lNode = (LiteralNode)propertyNode.getKey(); name.add(new Identifier(lNode.getString(), new OffsetRange(lNode.getStart(), lNode.getFinish()))); } return name; }
if (literal.isString()) { String index = literal.getPropertyName(); JsObjectImpl property = (JsObjectImpl)parent.getProperty(index); if (property != null) {
if (binLhs instanceof IndexNode) { Node index = ((IndexNode)binLhs).getIndex(); if (!(index instanceof LiteralNode && ((LiteralNode)index).isString())) { treatAsAnonymous = true;