@Override public Node leaveUnaryNode(UnaryNode uNode) { if (Token.descType(uNode.getToken()) == TokenType.NEW) { int size = exp.size(); if (size > 1 && ST_CALL.equals(exp.get(size - 2))) { exp.remove(size - 2); } typeOffset = uNode.getExpression().getStart(); if (exp.size() > 0) { exp.add(exp.size() - 1, ST_NEW); } else { exp.add(ST_NEW); } } return super.leaveUnaryNode(uNode); }
functionCalls.put(interceptor, calls); int callOffset = callNode.getFunction().getStart(); if (callNode.getFunction() instanceof AccessNode) { AccessNode anode = (AccessNode)callNode.getFunction();
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());
@Override public boolean enterWithNode(WithNode withNode) { JsObjectImpl currentObject = modelBuilder.getCurrentObject(); Collection<TypeUsage> types = ModelUtils.resolveSemiTypeOfExpression(modelBuilder, withNode.getExpression()); JsWithObjectImpl withObject = new JsWithObjectImpl(currentObject, modelBuilder.getUnigueNameForWithObject(), types, new OffsetRange(withNode.getStart(), withNode.getFinish()), new OffsetRange(withNode.getExpression().getStart(), withNode.getExpression().getFinish()), modelBuilder.getCurrentWith(), parserResult.getSnapshot().getMimeType(), null); currentObject.addProperty(withObject.getName(), withObject); // withNode.getExpression().accept(this); // expression should be visted when the with object is the current object. modelBuilder.setCurrentObject(withObject); withNode.getBody().accept(this); modelBuilder.reset(); return false; }
variable.addAssignment(new TypeUsage(SemiTypeResolverVisitor.ST_NEW + variable.getName() + '.' + jsFunction.getName(), jsFunction.getDeclarationName().getOffsetRange().getStart()), init.getStart());