Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/java/org/domaframework/doma/intellij/Sql.bnf
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ el_and_expr ::= el_expr "&&" el_expr
el_or_expr ::= el_expr "||" el_expr

// term
el_term_expr ::= el_comparison_expr_group | el_arithmetic_expr_group | el_factor_expr
el_term_expr ::= el_comparison_expr_group | el_arithmetic_expr_group | el_factor_expr | el_paren_expr
private el_comparison_expr_group ::= el_eq_expr | el_ne_expr | el_lt_expr | el_le_expr | el_gt_expr | el_ge_expr
private el_arithmetic_expr_group ::= el_add_expr | el_subtract_expr | el_multiply_expr | el_divide_expr | el_mod_expr
el_eq_expr ::= el_factor_expr "==" el_factor_expr
Expand Down Expand Up @@ -165,7 +165,7 @@ el_class ::= el_id_expr ("." el_id_expr)*
el_parameters ::= "(" (el_expr ("," el_expr)*)? ")" {pin=1}

// primary
el_primary_expr ::= el_literal_expr | el_id_expr | el_paren_expr
el_primary_expr ::= el_literal_expr | el_id_expr //| el_paren_expr
private el_literal_expr ::= EL_NULL | BOOLEAN | (EL_PLUS | EL_MINUS)? EL_NUMBER | EL_STRING | EL_CHAR
el_id_expr ::= EL_IDENTIFIER
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,12 @@
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiReference;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class SqlCustomExprImpl extends ASTWrapperPsiElement implements SqlCustomElExpr {
public class SqlCustomExprImpl extends ASTWrapperPsiElement
implements SqlCustomElExpr, SqlElTermExpr {

public SqlCustomExprImpl(@NotNull ASTNode node) {
super(node);
Expand All @@ -31,4 +34,9 @@ public SqlCustomExprImpl(@NotNull ASTNode node) {
public PsiReference @NotNull [] getReferences() {
return ReferenceProvidersRegistry.getReferencesFromProviders(this);
}

@Override
public @Nullable SqlElExpr getElExpr() {
return PsiTreeUtil.getChildOfAnyType(this, SqlElExpr.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ val SqlElStaticFieldAccessExpr.accessElements: List<SqlElIdExpr>

val SqlElFieldAccessExpr.accessElements: List<SqlElIdExpr?>
get() =
this.elExprList
this
.getElPrimaryExprList()
.mapNotNull { it as SqlElIdExpr }
.sortedBy { it.textOffset }
.toList()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package org.domaframework.doma.intellij.document
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiElement
import org.domaframework.doma.intellij.DomaSqlTest
import org.domaframework.doma.intellij.extension.expr.accessElements
import org.domaframework.doma.intellij.psi.SqlBlockComment
import org.domaframework.doma.intellij.psi.SqlElFieldAccessExpr
import org.domaframework.doma.intellij.psi.SqlElForDirective
Expand Down Expand Up @@ -196,6 +197,6 @@ class SqlSymbolDocumentTestCase : DomaSqlTest() {
return forDirective.elExprList.firstOrNull { it.text == searchElementName }
}

return fieldAccessExpr.elExprList.firstOrNull { it.text == searchElementName }
return fieldAccessExpr.accessElements.firstOrNull { it?.text == searchElementName }
}
}
4 changes: 2 additions & 2 deletions src/test/testData/sql/parser/SQLParser.sql
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ SELECT e.employee_id
WHERE e.user_id = /* user.userId */0
AND e.employee_id = /* employee.employeeId */0
AND e.join_date <= /* referenceDate + 1 */'2099/12/31'
/*%if @isNotBlank(employee.departmentId) */
/*%if @isNotBlank(employee.departmentId) && (employee.departmentId > 100) */
/*%if employee.departmentId.startsWith("200") */ 
AND e.department_id = /* employee.departmentId + 1 */'dept'
/*%elseif employee.numberOfProjects >= 3 */
/*%elseif (employee.numberOfProjects >= 3) */
AND pe.start_date <= CURRENT_DATE
AND pe.end_date >= CURRENT_DATE
/*%end*/
Expand Down
Loading