Skip to content

Commit 124d2ca

Browse files
committed
feat: cache completion values
1 parent 45a10f8 commit 124d2ca

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

src/main/kotlin/com/github/tempest/framework/router/completion/RouteParameterCompletionContributor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class RouteParameterCompletionContributor : CompletionContributor() {
5151
if (firstParameter == element) return
5252

5353
RouteResolveUtils
54-
.resolve(firstParameter)
54+
.resolveCached(firstParameter)
5555
.flatMap { RouteLookupElementBuilder.create(it) }
5656
.apply { result.addAllElements(this) }
5757
.apply { if (isNotEmpty()) result.stopHere() }

src/main/kotlin/com/github/tempest/framework/router/references/RouteParameterReference.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ class RouteParameterReference(
1616
override fun resolve(): PsiElement? {
1717
val phpIndex = PhpIndex.getInstance(routeReferenceElement.project)
1818
return RouteResolveUtils
19-
.resolve(routeReferenceElement)
19+
.resolveCached(routeReferenceElement)
2020
.firstOrNull()
2121
?.let { phpIndex.getMethodsByFQN(it.action) }
2222
?.firstOrNull()
2323
?.getParameter(parameterName)
2424
}
2525

2626
override fun getVariants() = RouteResolveUtils
27-
.resolve(routeReferenceElement)
27+
.resolveCached(routeReferenceElement)
2828
.flatMap { RouteLookupElementBuilder.create(it) }
2929
.toTypedArray()
3030

src/main/kotlin/com/github/tempest/framework/router/references/RouteResolveUtils.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,22 @@ import com.github.tempest.framework.TempestFrameworkClasses
44
import com.github.tempest.framework.router.index.Route
55
import com.github.tempest.framework.router.index.RouterIndexUtils
66
import com.intellij.psi.PsiElement
7+
import com.intellij.psi.util.CachedValueProvider
8+
import com.intellij.psi.util.CachedValuesManager
79
import com.jetbrains.php.lang.PhpReferenceContributor
810
import com.jetbrains.php.lang.psi.elements.ArrayCreationExpression
911
import com.jetbrains.php.lang.psi.elements.Method
1012
import com.jetbrains.php.lang.psi.elements.StringLiteralExpression
1113

1214
object RouteResolveUtils {
15+
fun resolveCached(firstParameter: PsiElement): Collection<Route> =
16+
CachedValuesManager.getCachedValue(firstParameter) {
17+
CachedValueProvider.Result.create(
18+
resolve(firstParameter),
19+
firstParameter.containingFile,
20+
)
21+
}
22+
1323
fun resolve(firstParameter: PsiElement): Collection<Route> =
1424
when (firstParameter) {
1525
is ArrayCreationExpression -> fromArrayCreation(firstParameter)

0 commit comments

Comments
 (0)