@CheckForNull static Identifier create(ParserResult parserResult, IdentNode node) { return create(parserResult, node.getName(), node.getStart(), node.getFinish()); }
private static List<Identifier> getName(VarNode varNode, ParserResult parserResult) { List<Identifier> name = new ArrayList(); name.add(new Identifier(varNode.getName().getName(), new OffsetRange(varNode.getName().getStart(), varNode.getName().getFinish()))); return name; }
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; }
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); }
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()); } }
if (jsProperty != null && jsProperty.isDeclared()) { found = true; jsProperty.addOccurrence(new OffsetRange(iNode.getStart(), iNode.getFinish())); } else { Collection<? extends JsObject> variables = ModelUtils.getVariables(scope.getParentScope()); for (JsObject jsObject : variables) { if (valueName.equals(jsObject.getName())) { jsObject.addOccurrence(new OffsetRange(iNode.getStart(), iNode.getFinish())); found = true; break;
Identifier refName = new Identifier(fn.getIdent().getName(), new OffsetRange(fn.getIdent().getStart(), fn.getIdent().getFinish())); JsFunctionReference jsRef = new JsFunctionReference(jsFunction, refName, jsFunction, true, EnumSet.of(Modifier.PRIVATE)); jsRef.addOccurrence(jsRef.getDeclarationName().getOffsetRange()); Identifier refName = new Identifier(fn.getIdent().getName(), new OffsetRange(fn.getIdent().getStart(), fn.getIdent().getFinish())); JsFunctionReference jsRef = new JsFunctionReference(jsFunction, refName, jsFunction, true, EnumSet.of(Modifier.PRIVATE)); jsRef.addOccurrence(jsRef.getDeclarationName().getOffsetRange());