@Override public boolean enterIdentNode(IdentNode iNode) { String name = iNode.getPropertyName(); if (ModelUtils.THIS.equals(name)) { //NOI18N exp.add(ST_THIS); } else if (Type.UNDEFINED.equals(name)){ add(UNDEFINED_TYPE); } else { if (getPath().isEmpty()) { exp.add(ST_VAR); } exp.add(name); } return false; }
private void addOccurence(IdentNode iNode, boolean leftSite, boolean isFunction) { if (!iNode.isDestructuredParameter()) { // skip names of destructured param (it's syntetic) addOccurrence(iNode.getName(), getOffsetRange(iNode), leftSite, isFunction); } }
private void handleDeclaredFunction(DeclarationScopeImpl inScope, JsObject parent, FunctionNode fnNode) { LOGGER.log(Level.FINEST, " function: " + debugInfo(fnNode)); // NOI18N String name = fnNode.isAnonymous() ? modelBuilder.getFunctionName(fnNode) : fnNode.getIdent().getName(); Identifier fnName = new Identifier(name, new OffsetRange(fnNode.getIdent().getStart(), fnNode.getIdent().getFinish())); if (fnNode.isClassConstructor() && !ModelUtils.CONSTRUCTOR.equals(fnName.getName())) { // skip artifical/ syntetic constructor nodes, that are created // when a class extends different class return; } // process parameters List<Identifier> parameters = new ArrayList(fnNode.getParameters().size()); for(IdentNode node: fnNode.getParameters()) { Identifier param = create(parserResult, node); if (param != null && !node.isDestructuredParameter()) { // can be null, if it's a generated embeding. parameters.add(param); } } // The parent can be changed in the later processing JsFunctionImpl declaredFn = new JsFunctionImpl(inScope, parent, fnName, parameters, getOffsetRange(fnNode), inScope.getMimeType(), inScope.getSourceLabel()); inScope.addProperty(modelBuilder.getFunctionName(fnNode), declaredFn); if (fnName.getOffsetRange().getLength() > 0 && !fnNode.isNamedFunctionExpression()) { declaredFn.addOccurrence(fnName.getOffsetRange()); } }
private boolean isPriviliged(AccessNode aNode) { Node node = aNode.getBase(); while (node instanceof AccessNode) { node = ((AccessNode)node).getBase(); } if (node instanceof IdentNode && ModelUtils.THIS.endsWith(((IdentNode)node).getName())) { return true; } return false; }
IdentNode iKey = (IdentNode)key; IdentNode iValue = (IdentNode)value; if (iKey.getName().equals(iValue.getName()) && iKey.getStart() == iValue.getStart() && iKey.getFinish() == iValue.getFinish()) { if (!iNode.getPropertyName().equals(name.getName())) { addOccurence((IdentNode)value, false); } else {
IdentNode exported = esNode.getExportIdentifier(); IdentNode local = esNode.getIdentifier(); JsObjectImpl property = (JsObjectImpl)modelBuilder.getCurrentDeclarationFunction().getProperty(local.getName()); if (exported == null) { if (property == null) { TypeUsage type = new TypeUsage(local.getName(), local.getFinish()); property.addAssignment(type, local.getFinish());
@Override public boolean enterIdentNode(IdentNode identNode) { typeOffset = identNode.getStart(); return false; }
@Override public Node leaveCatchNode(CatchNode catchNode) { if (!EmbeddingHelper.containsGeneratedIdentifier(catchNode.getException().getName())) { modelBuilder.reset(); } return super.leaveCatchNode(catchNode); }
parent = parent.getParent(); JsObjectImpl variable = (JsObjectImpl)parent.getProperty(varNode.getName().getName()); Identifier name = ModelElementFactory.create(parserResult, varNode.getName()); if (name != null) { if (!iNode.getName().equals(variable.getName())) { addOccurrence((IdentNode)init, variable.getName()); } else { variable.addAssignment(type, varNode.getName().getFinish()); variable.addAssignment(new TypeUsage(type.getType(), type.getOffset(), true), varNode.getName().getFinish());
@Override public boolean enterFunctionNode(FunctionNode functionNode) { String name = builder.getFunctionName(functionNode); exp.add(name); if (typeOffset == -1) { typeOffset = functionNode.getIdent().getStart(); } return false; }
private boolean isKeyAndValueEquals(PropertyNode pNode) { if (pNode.getKey() instanceof IdentNode && pNode.getValue() instanceof IdentNode) { IdentNode key = (IdentNode)pNode.getKey(); IdentNode value = (IdentNode)pNode.getValue(); return key.getName().equals(value.getName()) && key.getStart() == value.getStart(); } if (pNode.getKey() instanceof IdentNode && pNode.getValue() instanceof BinaryNode && ((BinaryNode)pNode.getValue()).tokenType() == TokenType.ASSIGN && ((BinaryNode)pNode.getValue()).lhs() instanceof IdentNode) { IdentNode key = (IdentNode)pNode.getKey(); IdentNode value = (IdentNode)((BinaryNode)pNode.getValue()).lhs(); return key.getName().equals(value.getName()) && key.getStart() == value.getStart(); } return false; }
public String getFunctionName(FunctionNode node) { if (node.isAnonymous() ) { return globalObject.getName() + node.getName().replace(':', '#'); } else { if (node.isNamedFunctionExpression()) { return node.getName(); } return node.getIdent().getName(); } } }
private boolean isFunctionAnonymous(FunctionNode fn) { boolean result = false; if (fn.isAnonymous() ) { Node lastVisited = getPreviousFromPath(2); if (fn.getIdent().getName().startsWith("L:") && !(lastVisited instanceof PropertyNode)) { //NOI18N // XXX this depends on the implemenation of parser. Find the better way result = true; } else if (fn.getIdent().getStart() == fn.getIdent().getFinish()) { if (lastVisited instanceof CallNode) { result = true; } } } return result; }
IdentNode ident = ((IdentNode) node); return Arrays.<Identifier>asList(new Identifier( ident.getName(), getOffsetRange(ident))); } else if (node instanceof FunctionNode) { if (((FunctionNode) node).getKind() == FunctionNode.Kind.SCRIPT) { ident.getName(), getOffsetRange(ident))); } else { return Collections.<Identifier>emptyList();
private List<Identifier> getName(PropertyNode propertyNode) { List<Identifier> name = new ArrayList(1); if (propertyNode.getGetter() != null || propertyNode.getSetter() != null) { // check whether this is not defining getter or setter of a property. Node previousNode = getPreviousFromPath(1); if (previousNode instanceof FunctionNode) { FunctionNode fNode = (FunctionNode)previousNode; String fName = fNode.getIdent().getName(); if (fName.startsWith("get ") || fName.startsWith("set ")) { //NOI18N name.add(new Identifier(fName, new OffsetRange(fNode.getIdent().getStart(), fNode.getIdent().getFinish()))); return name; } } } return getName(propertyNode, parserResult); }