private void handleDeclaredFunction(DeclarationScopeImpl inScope, JsObject parent, FunctionNode fnNode) {
LOGGER.log(Level.FINEST, " function: " + debugInfo(fnNode));
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())) {
return;
}
List<Identifier> parameters = new ArrayList(fnNode.getParameters().size());
for(IdentNode node: fnNode.getParameters()) {
Identifier param = create(parserResult, node);
if (param != null && !node.isDestructuredParameter()) {
parameters.add(param);
}
}
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());
}
}