Skip to content

Commit 5955785

Browse files
authored
Merge pull request #172 from domaframework/fix/injection-file-inspection
Fix missing inspections for injection files
2 parents 9493012 + 623da66 commit 5955785

File tree

4 files changed

+13
-31
lines changed

4 files changed

+13
-31
lines changed

src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlInspectionVisitor.kt

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package org.domaframework.doma.intellij.inspection.sql.visitor
1717

1818
import com.intellij.codeInspection.ProblemsHolder
1919
import com.intellij.psi.PsiElement
20-
import com.intellij.psi.PsiFile
2120
import com.intellij.psi.PsiLiteralExpression
2221
import com.intellij.psi.util.elementType
2322
import org.domaframework.doma.intellij.common.isInjectionSqlFile
@@ -38,14 +37,13 @@ class SqlInspectionVisitor(
3837
private val shortName: String,
3938
) : SqlVisitorBase() {
4039
override fun visitElement(element: PsiElement) {
41-
if (setFile(element)) return
42-
val visitFile: PsiFile = file ?: return
43-
if (isJavaOrKotlinFileType(visitFile) && element is PsiLiteralExpression) {
44-
val injectionFile = initInjectionElement(visitFile, element.project, element) ?: return
40+
val file = element.containingFile ?: return
41+
if (isJavaOrKotlinFileType(file) && element is PsiLiteralExpression) {
42+
val injectionFile = initInjectionElement(file, element.project, element) ?: return
4543
injectionFile.accept(this)
4644
super.visitElement(element)
4745
}
48-
if (isInjectionSqlFile(visitFile)) {
46+
if (isInjectionSqlFile(file)) {
4947
element.acceptChildren(this)
5048
}
5149
}
@@ -58,11 +56,9 @@ class SqlInspectionVisitor(
5856

5957
override fun visitElFieldAccessExpr(element: SqlElFieldAccessExpr) {
6058
super.visitElFieldAccessExpr(element)
61-
if (setFile(element)) return
62-
val visitFile: PsiFile = file ?: return
63-
59+
val file = element.containingFile ?: return
6460
val processor = InspectionFieldAccessVisitorProcessor(shortName, element)
65-
processor.check(holder, visitFile)
61+
processor.check(holder, file)
6662
}
6763

6864
override fun visitElForDirective(element: SqlElForDirective) {
@@ -72,12 +68,10 @@ class SqlInspectionVisitor(
7268
}
7369

7470
override fun visitElPrimaryExpr(element: SqlElPrimaryExpr) {
75-
super.visitElPrimaryExpr(element)
71+
val file = element.containingFile ?: return
7672
if (!element.isFirstElement() || element.prevSibling?.elementType == SqlTypes.AT_SIGN) return
77-
if (setFile(element)) return
78-
val visitFile: PsiFile = file ?: return
7973

8074
val processor = InspectionPrimaryVisitorProcessor(this.shortName, element)
81-
processor.check(holder, visitFile)
75+
processor.check(holder, file)
8276
}
8377
}

src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlTestDataAfterBlockCommentVisitor.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package org.domaframework.doma.intellij.inspection.sql.visitor
1818
import com.intellij.codeInspection.ProblemsHolder
1919
import com.intellij.psi.PsiComment
2020
import com.intellij.psi.PsiElement
21-
import com.intellij.psi.PsiFile
2221
import com.intellij.psi.PsiLiteralExpression
2322
import com.intellij.psi.util.PsiTreeUtil
2423
import com.intellij.psi.util.nextLeafs
@@ -37,14 +36,13 @@ class SqlTestDataAfterBlockCommentVisitor(
3736
private val shortName: String,
3837
) : SqlVisitorBase() {
3938
override fun visitElement(element: PsiElement) {
40-
if (setFile(element)) return
41-
val visitFile: PsiFile = file ?: return
42-
if (isJavaOrKotlinFileType(visitFile) && element is PsiLiteralExpression) {
43-
val injectionFile = initInjectionElement(visitFile, element.project, element) ?: return
39+
val file = element.containingFile ?: return
40+
if (isJavaOrKotlinFileType(file) && element is PsiLiteralExpression) {
41+
val injectionFile = initInjectionElement(file, element.project, element) ?: return
4442
injectionFile.accept(this)
4543
super.visitElement(element)
4644
}
47-
if (isInjectionSqlFile(visitFile)) {
45+
if (isInjectionSqlFile(file)) {
4846
element.acceptChildren(this)
4947
}
5048
}

src/main/kotlin/org/domaframework/doma/intellij/inspection/sql/visitor/SqlVisitorBase.kt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,12 @@ package org.domaframework.doma.intellij.inspection.sql.visitor
1717

1818
import com.intellij.lang.injection.InjectedLanguageManager
1919
import com.intellij.openapi.project.Project
20-
import com.intellij.psi.PsiElement
2120
import com.intellij.psi.PsiFile
2221
import com.intellij.psi.PsiLiteralExpression
2322
import org.domaframework.doma.intellij.common.isJavaOrKotlinFileType
2423
import org.domaframework.doma.intellij.psi.SqlVisitor
2524

2625
open class SqlVisitorBase : SqlVisitor() {
27-
var file: PsiFile? = null
28-
29-
protected fun setFile(element: PsiElement): Boolean {
30-
if (file == null) {
31-
file = element.containingFile
32-
}
33-
return false
34-
}
35-
3626
/**
3727
* For processing inside Sql annotations, get it as an injected custom language
3828
*/

src/test/testData/src/main/java/doma/example/dao/inspection/TestDataCheckDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package doma.example.dao.inspection;
22

3-
import doma.example.entity.*:
3+
import doma.example.entity.*;
44
import org.seasar.doma.*;
55
import org.seasar.doma.jdbc.Config;
66
import org.seasar.doma.jdbc.PreparedSql;

0 commit comments

Comments
 (0)