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
Original file line number Diff line number Diff line change
Expand Up @@ -295,9 +295,13 @@ class SqlParameterCompletionProvider : CompletionProvider<CompletionParameters>(

var isBatchAnnotation = false
if (top.parent !is PsiFile && top.parent?.parent !is PsiDirectory) {
val staticDirective = top.findNodeParent(SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR)
staticDirective?.let {
topElementType = getElementTypeByStaticFieldAccess(top, it, topText) ?: return
// In function-parameter elements, apply the same processing as normal field access.
val parameter = top.findNodeParent(SqlTypes.EL_PARAMETERS)
if (parameter == null) {
val staticDirective = top.findNodeParent(SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR)
staticDirective?.let {
topElementType = getElementTypeByStaticFieldAccess(top, it, topText) ?: return
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,14 @@ class SqlCompleteTest : DomaSqlTest() {
"$testDaoName/completeParameterFirstProperty.sql",
"$testDaoName/completeParameterSecond.sql",
"$testDaoName/completeParameterSecondProperty.sql",
"$testDaoName/completeParameterFirstInStaticAccess.sql",
"$testDaoName/completeParameterFirstPropertyInStaticAccess.sql",
"$testDaoName/completeParameterSecondInStaticAccess.sql",
"$testDaoName/completeParameterSecondPropertyInStaticAccess.sql",
"$testDaoName/completeParameterFirstInCustomFunctions.sql",
"$testDaoName/completeParameterFirstPropertyInCustomFunctions.sql",
"$testDaoName/completeParameterSecondInCustomFunctions.sql",
"$testDaoName/completeParameterSecondPropertyInCustomFunctions.sql",
"$testDaoName/completeCallStaticPropertyClassPackage.sql",
"$testDaoName/completeCallStaticPropertyClass.sql",
"$testDaoName/completeForItemHasNext.sql",
Expand Down Expand Up @@ -379,6 +387,130 @@ class SqlCompleteTest : DomaSqlTest() {
)
}

fun testCompleteParameterInStaticAccess() {
innerDirectiveCompleteTest(
"$testDaoName/completeParameterFirstInStaticAccess.sql",
listOf(
"project",
),
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
)

innerDirectiveCompleteTest(
"$testDaoName/completeParameterFirstPropertyInStaticAccess.sql",
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
listOf(
"project",
),
)

innerDirectiveCompleteTest(
"$testDaoName/completeParameterSecondInStaticAccess.sql",
listOf("project"),
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
)

innerDirectiveCompleteTest(
"$testDaoName/completeParameterSecondPropertyInStaticAccess.sql",
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
listOf("project"),
)
}

fun testCompleteParameterInCustomFunctions() {
innerDirectiveCompleteTest(
"$testDaoName/completeParameterFirstInCustomFunctions.sql",
listOf(
"project",
),
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
)

innerDirectiveCompleteTest(
"$testDaoName/completeParameterFirstPropertyInCustomFunctions.sql",
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
listOf(
"project",
),
)

innerDirectiveCompleteTest(
"$testDaoName/completeParameterSecondInCustomFunctions.sql",
listOf("project"),
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
)

innerDirectiveCompleteTest(
"$testDaoName/completeParameterSecondPropertyInCustomFunctions.sql",
listOf(
"projectId",
"projectName",
"rank",
"projectNumber",
"projectCategory",
"getFirstEmployee()",
"getTermNumber()",
),
listOf("project"),
)
}

fun testCompleteOptionalDaoParam() {
innerDirectiveCompleteTest(
"$testDaoName/completeOptionalDaoParam.sql",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,30 @@ interface SqlCompleteTestDao {
@Select
Employee completeParameterSecondProperty(Employee employee);

@Select
ProjectDetail completeParameterFirstInStaticAccess(Project project);

@Select
ProjectDetail completeParameterFirstPropertyInStaticAccess(Project project);

@Select
ProjectDetail completeParameterSecondInStaticAccess(Project project);

@Select
ProjectDetail completeParameterSecondPropertyInStaticAccess(Project project);

@Select
ProjectDetail completeParameterFirstInCustomFunctions(Project project);

@Select
ProjectDetail completeParameterFirstPropertyInCustomFunctions(Project project);

@Select
ProjectDetail completeParameterSecondInCustomFunctions(Project project);

@Select
ProjectDetail completeParameterSecondPropertyInCustomFunctions(Project project);

@Select
Employee completeCallStaticPropertyClassPackage();

Expand Down Expand Up @@ -108,4 +132,5 @@ interface SqlCompleteTestDao {

@Select
Employee completeNotImplementCustomFunction(Project project);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @langCode(<caret>) */1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @doma.example.entity.Project@getTermNumber(<caret>) */1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @langCode(project.<caret>) */1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @doma.example.entity.Project@getTermNumber(project.<caret>) */1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @langCode(project.cons, <caret>) */1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @doma.example.entity.Project@getTermNumber(project.cons, <caret>) */1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @langCode(project.cost, project.<caret>) */1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
select * from project_detail
where number = /* @doma.example.entity.Project@getTermNumber(project.cost, project.<caret>) */1
Loading