use of com.goide.psi.GoExpression in project go-lang-idea-plugin by go-lang-plugin-org.
the class GoSimplifyBoolExprQuickFix method removeRedundantExpressions.
private static void removeRedundantExpressions(@NotNull GoBinaryExpr binaryExpr, @NotNull Project project, @NotNull List<GoExpression> expressions, @NotNull List<GoExpression> toRemove, boolean and) {
for (GoExpression e : toRemove) {
expressions.remove(e);
}
String separator = and ? " && " : " || ";
String text = StringUtil.join(expressions, PsiElement::getText, separator);
GoExpression expression = GoElementFactory.createExpression(project, text);
binaryExpr.replace(expression);
}
use of com.goide.psi.GoExpression in project go-lang-idea-plugin by go-lang-plugin-org.
the class GoExpressionSurrounder method surroundWithParenthesis.
@Nullable
protected TextRange surroundWithParenthesis(@NotNull PsiElement[] elements, boolean withNot) {
GoExpression expression = getExpression(elements);
if (expression == null)
return null;
String text = (withNot ? "!" : "") + "(" + expression.getText() + ")";
GoExpression parenthExprNode = GoElementFactory.createExpression(expression.getProject(), text);
PsiElement replace = expression.replace(parenthExprNode);
int endOffset = replace.getTextRange().getEndOffset();
return TextRange.create(endOffset, endOffset);
}
use of com.goide.psi.GoExpression in project go-lang-idea-plugin by go-lang-plugin-org.
the class GoReplaceAssignmentWithDeclarationQuickFix method invoke.
@Override
public void invoke(@NotNull Project project, @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) {
if (startElement instanceof GoAssignmentStatement) {
GoAssignmentStatement statement = (GoAssignmentStatement) startElement;
String leftSide = statement.getLeftHandExprList().getText();
String rightSide = GoPsiImplUtil.joinPsiElementText(statement.getExpressionList());
statement.replace(GoElementFactory.createShortVarDeclarationStatement(project, leftSide, rightSide));
} else if (startElement instanceof GoRangeClause) {
GoRangeClause rangeClause = (GoRangeClause) startElement;
String leftSide = GoPsiImplUtil.joinPsiElementText(rangeClause.getLeftExpressionsList());
GoExpression rangeExpression = rangeClause.getRangeExpression();
String rightSide = rangeExpression != null ? rangeExpression.getText() : "";
rangeClause.replace(GoElementFactory.createRangeClause(project, leftSide, rightSide));
} else if (startElement instanceof GoRecvStatement) {
GoRecvStatement recvStatement = (GoRecvStatement) startElement;
String leftSide = GoPsiImplUtil.joinPsiElementText(recvStatement.getLeftExpressionsList());
GoExpression recvExpression = recvStatement.getRecvExpression();
String rightSide = recvExpression != null ? recvExpression.getText() : "";
recvStatement.replace(GoElementFactory.createRecvStatement(project, leftSide, rightSide));
}
}
use of com.goide.psi.GoExpression in project go-lang-idea-plugin by go-lang-plugin-org.
the class GoConstSpecStub method getExpressionList.
@NotNull
public List<GoExpression> getExpressionList() {
if (myList == null) {
String text = getExpressionsText();
if (!StringUtil.isNotEmpty(text))
return myList = ContainerUtil.emptyList();
Project project = getPsi().getProject();
List<String> split = StringUtil.split(text, ";");
myList = ContainerUtil.map(split, s -> GoElementFactory.createExpression(project, s));
}
return myList;
}
use of com.goide.psi.GoExpression in project go-lang-idea-plugin by go-lang-plugin-org.
the class GoRangeIterationOnIllegalTypeInspection method buildGoVisitor.
@NotNull
@Override
protected GoVisitor buildGoVisitor(@NotNull ProblemsHolder holder, @NotNull LocalInspectionToolSession session) {
return new GoVisitor() {
@Override
public void visitRangeClause(@NotNull GoRangeClause o) {
super.visitRangeClause(o);
GoExpression expression = o.getRangeExpression();
GoType type = expression != null ? expression.getGoType(null) : null;
if (type != null && !GoTypeUtil.isIterable(type)) {
holder.registerProblem(expression, "Cannot range over data (type " + GoPsiImplUtil.getText(type) + ")", ProblemHighlightType.GENERIC_ERROR_OR_WARNING);
}
}
};
}
Aggregations