@Override public List<TextRange> getRanges() { List<TextRange> list = new ArrayList<TextRange>(); JetValueArgumentList valueArgumentList = getExpression().getValueArgumentList(); if (valueArgumentList != null) { if (valueArgumentList.getArguments().size() > 0) { ASTNode valueArgumentListNode = valueArgumentList.getNode(); ASTNode lPar = valueArgumentListNode.findChildByType(JetTokens.LPAR); if (lPar != null) { list.add(getRange(lPar)); } ASTNode rPar = valueArgumentListNode.findChildByType(JetTokens.RPAR); if (rPar != null) { list.add(getRange(rPar)); } } else { list.add(getRange(valueArgumentList.getNode())); } } List<JetExpression> functionLiteralArguments = getExpression().getFunctionLiteralArguments(); for (JetExpression functionLiteralArgument : functionLiteralArguments) { while (functionLiteralArgument instanceof JetPrefixExpression) { functionLiteralArgument = ((JetPrefixExpression) functionLiteralArgument).getBaseExpression(); } if (functionLiteralArgument instanceof JetFunctionLiteralExpression) { JetFunctionLiteralExpression functionLiteralExpression = (JetFunctionLiteralExpression) functionLiteralArgument; list.add(getRange(functionLiteralExpression.getLeftCurlyBrace())); ASTNode rightCurlyBrace = functionLiteralExpression.getRightCurlyBrace(); if (rightCurlyBrace != null) { list.add(getRange(rightCurlyBrace)); } } } return list; }
@Override public void updateParameterInfo( @NotNull JetValueArgumentList argumentList, @NotNull UpdateParameterInfoContext context) { if (context.getParameterOwner() != argumentList) context.removeHint(); int offset = context.getOffset(); ASTNode child = argumentList.getNode().getFirstChildNode(); int i = 0; while (child != null && child.getStartOffset() < offset) { if (child.getElementType() == JetTokens.COMMA) ++i; child = child.getTreeNext(); } context.setCurrentParameter(i); }