File tree Expand file tree Collapse file tree 7 files changed +310
-277
lines changed
java/org/domaframework/doma/intellij
kotlin/org/domaframework/doma/intellij/extension/expr
kotlin/org/domaframework/doma/intellij/document
src/main/resources/META-INF/doma/example/dao/EmployeeSummaryDao Expand file tree Collapse file tree 7 files changed +310
-277
lines changed Original file line number Diff line number Diff line change @@ -136,7 +136,7 @@ el_and_expr ::= el_expr "&&" el_expr
136136el_or_expr ::= el_expr "||" el_expr
137137
138138// term
139- el_term_expr ::= el_comparison_expr_group | el_arithmetic_expr_group | el_factor_expr
139+ el_term_expr ::= el_comparison_expr_group | el_arithmetic_expr_group | el_factor_expr | el_paren_expr
140140private el_comparison_expr_group ::= el_eq_expr | el_ne_expr | el_lt_expr | el_le_expr | el_gt_expr | el_ge_expr
141141private el_arithmetic_expr_group ::= el_add_expr | el_subtract_expr | el_multiply_expr | el_divide_expr | el_mod_expr
142142el_eq_expr ::= el_factor_expr "==" el_factor_expr
@@ -165,7 +165,7 @@ el_class ::= el_id_expr ("." el_id_expr)*
165165el_parameters ::= "(" (el_expr ("," el_expr)*)? ")" {pin=1}
166166
167167// primary
168- el_primary_expr ::= el_literal_expr | el_id_expr | el_paren_expr
168+ el_primary_expr ::= el_literal_expr | el_id_expr // | el_paren_expr
169169private el_literal_expr ::= EL_NULL | BOOLEAN | (EL_PLUS | EL_MINUS)? EL_NUMBER | EL_STRING | EL_CHAR
170170el_id_expr ::= EL_IDENTIFIER
171171{
Original file line number Diff line number Diff line change 1919import com .intellij .lang .ASTNode ;
2020import com .intellij .psi .PsiReference ;
2121import com .intellij .psi .impl .source .resolve .reference .ReferenceProvidersRegistry ;
22+ import com .intellij .psi .util .PsiTreeUtil ;
2223import org .jetbrains .annotations .NotNull ;
24+ import org .jetbrains .annotations .Nullable ;
2325
24- public class SqlCustomExprImpl extends ASTWrapperPsiElement implements SqlCustomElExpr {
26+ public class SqlCustomExprImpl extends ASTWrapperPsiElement
27+ implements SqlCustomElExpr , SqlElTermExpr {
2528
2629 public SqlCustomExprImpl (@ NotNull ASTNode node ) {
2730 super (node );
@@ -31,4 +34,9 @@ public SqlCustomExprImpl(@NotNull ASTNode node) {
3134 public PsiReference @ NotNull [] getReferences () {
3235 return ReferenceProvidersRegistry .getReferencesFromProviders (this );
3336 }
37+
38+ @ Override
39+ public @ Nullable SqlElExpr getElExpr () {
40+ return PsiTreeUtil .getChildOfAnyType (this , SqlElExpr .class );
41+ }
3442}
Original file line number Diff line number Diff line change @@ -34,7 +34,8 @@ val SqlElStaticFieldAccessExpr.accessElements: List<SqlElIdExpr>
3434
3535val SqlElFieldAccessExpr .accessElements: List <SqlElIdExpr ?>
3636 get() =
37- this .elExprList
37+ this
38+ .getElPrimaryExprList()
3839 .mapNotNull { it as SqlElIdExpr }
3940 .sortedBy { it.textOffset }
4041 .toList()
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ package org.domaframework.doma.intellij.document
1818import com.intellij.openapi.vfs.VirtualFile
1919import com.intellij.psi.PsiElement
2020import org.domaframework.doma.intellij.DomaSqlTest
21+ import org.domaframework.doma.intellij.extension.expr.accessElements
2122import org.domaframework.doma.intellij.psi.SqlBlockComment
2223import org.domaframework.doma.intellij.psi.SqlElFieldAccessExpr
2324import org.domaframework.doma.intellij.psi.SqlElForDirective
@@ -196,6 +197,6 @@ class SqlSymbolDocumentTestCase : DomaSqlTest() {
196197 return forDirective.elExprList.firstOrNull { it.text == searchElementName }
197198 }
198199
199- return fieldAccessExpr.elExprList .firstOrNull { it.text == searchElementName }
200+ return fieldAccessExpr.accessElements .firstOrNull { it? .text == searchElementName }
200201 }
201202}
Original file line number Diff line number Diff line change @@ -14,10 +14,10 @@ SELECT e.employee_id
1414 WHERE e .user_id = /* user.userId */ 0
1515 AND e .employee_id = /* employee.employeeId */ 0
1616 AND e .join_date <= /* referenceDate + 1 */ ' 2099/12/31'
17- /* %if @isNotBlank(employee.departmentId) */
17+ /* %if @isNotBlank(employee.departmentId) && (employee.departmentId > 100) */
1818 /* %if employee.departmentId.startsWith("200") */
1919 AND e .department_id = /* employee.departmentId + 1 */ ' dept'
20- /* %elseif employee.numberOfProjects >= 3 */
20+ /* %elseif ( employee.numberOfProjects >= 3) */
2121 AND pe .start_date <= CURRENT_DATE
2222 AND pe .end_date >= CURRENT_DATE
2323 /* %end*/
You can’t perform that action at this time.
0 commit comments