Skip to content

Commit ee7fcf0

Browse files
committed
Add getContainingFile() to TwigFileVariableCollectorParameter to cache file resolve
1 parent 8565157 commit ee7fcf0

8 files changed

Lines changed: 23 additions & 14 deletions

File tree

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/util/TwigTypeResolveUtil.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.intellij.patterns.PlatformPatterns;
1010
import com.intellij.psi.PsiComment;
1111
import com.intellij.psi.PsiElement;
12+
import com.intellij.psi.PsiFile;
1213
import com.intellij.psi.PsiWhiteSpace;
1314
import com.intellij.psi.formatter.FormatterUtil;
1415
import com.intellij.psi.tree.IElementType;
@@ -348,17 +349,18 @@ public static Map<String, PsiVariable> collectScopeVariables(@NotNull PsiElement
348349

349350
@NotNull
350351
public static Map<String, PsiVariable> collectScopeVariables(@NotNull PsiElement psiElement, @NotNull Set<VirtualFile> visitedFiles) {
351-
VirtualFile virtualFile = psiElement.getContainingFile().getVirtualFile();
352-
if(visitedFiles.contains(virtualFile)) {
352+
PsiFile containingFile = psiElement.getContainingFile();
353+
VirtualFile virtualFile = containingFile.getVirtualFile();
354+
if (visitedFiles.contains(virtualFile)) {
353355
return Collections.emptyMap();
354356
}
355357

356358
visitedFiles.add(virtualFile);
357359

358360
Map<String, VariableData> controllerVars = new HashMap<>();
359361

360-
TwigFileVariableCollectorParameter collectorParameter = new TwigFileVariableCollectorParameter(psiElement, visitedFiles);
361-
for(TwigFileVariableCollector collector: TWIG_FILE_VARIABLE_COLLECTORS.getExtensions()) {
362+
TwigFileVariableCollectorParameter collectorParameter = new TwigFileVariableCollectorParameter(psiElement, containingFile, visitedFiles);
363+
for (TwigFileVariableCollector collector: TWIG_FILE_VARIABLE_COLLECTORS.getExtensions()) {
362364
Map<String, Set<String>> globalVarsScope = new HashMap<>();
363365
collector.collect(collectorParameter, globalVarsScope);
364366

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/variable/TwigFileVariableCollectorParameter.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.intellij.openapi.project.Project;
44
import com.intellij.openapi.vfs.VirtualFile;
55
import com.intellij.psi.PsiElement;
6+
import com.intellij.psi.PsiFile;
67
import org.jetbrains.annotations.NotNull;
78

89
import java.util.Set;
@@ -14,12 +15,13 @@ public class TwigFileVariableCollectorParameter {
1415

1516
private final PsiElement psiElement;
1617
private final Set<VirtualFile> visitedFiles;
17-
private final Project project
18-
;
18+
private final Project project;
19+
private final PsiFile containingFile;
1920

20-
public TwigFileVariableCollectorParameter(@NotNull PsiElement psiElement, @NotNull Set<VirtualFile> visitedFiles) {
21+
public TwigFileVariableCollectorParameter(@NotNull PsiElement psiElement, @NotNull PsiFile containingFile, @NotNull Set<VirtualFile> visitedFiles) {
2122
this.psiElement = psiElement;
2223
this.project = psiElement.getProject();
24+
this.containingFile = containingFile;
2325
this.visitedFiles = visitedFiles;
2426
}
2527

@@ -28,7 +30,12 @@ public PsiElement getElement() {
2830
}
2931

3032
public Project getProject() {
31-
return psiElement.getProject();
33+
return project;
34+
}
35+
36+
@NotNull
37+
public PsiFile getContainingFile() {
38+
return containingFile;
3239
}
3340

3441
public Set<VirtualFile> getVisitedFiles() {

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/variable/collector/FileDocVariableCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
public class FileDocVariableCollector implements TwigFileVariableCollector {
1616
@Override
1717
public void collect(@NotNull TwigFileVariableCollectorParameter parameter, @NotNull Map<String, Set<String>> variables) {
18-
PsiFile containingFile = parameter.getElement().getContainingFile();
18+
PsiFile containingFile = parameter.getContainingFile();
1919
if(!(containingFile instanceof TwigFile)) {
2020
return;
2121
}

src/main/java/fr/adrienbrault/idea/symfony2plugin/templating/variable/collector/IncludeVariableCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ private record IncludeContext(@NotNull Collection<IncludeArgument> arguments, bo
5454

5555
@Override
5656
public void collectPsiVariables(@NotNull final TwigFileVariableCollectorParameter parameter, @NotNull final Map<String, PsiVariable> variables) {
57-
PsiFile psiFile = parameter.getElement().getContainingFile();
57+
PsiFile psiFile = parameter.getContainingFile();
5858
if (!(psiFile instanceof TwigFile) || PsiTreeUtil.getChildOfType(psiFile, TwigExtendsTag.class) != null) {
5959
return;
6060
}

src/main/java/fr/adrienbrault/idea/symfony2plugin/twig/variable/collector/ControllerDocVariableCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class ControllerDocVariableCollector implements TwigFileVariableCollector
3434

3535
@Override
3636
public void collectPsiVariables(@NotNull TwigFileVariableCollectorParameter parameter, @NotNull Map<String, PsiVariable> variables) {
37-
PsiFile psiFile = parameter.getElement().getContainingFile();
37+
PsiFile psiFile = parameter.getContainingFile();
3838
if(!(psiFile instanceof TwigFile)) {
3939
return;
4040
}

src/main/java/fr/adrienbrault/idea/symfony2plugin/twig/variable/collector/ControllerVariableCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
public class ControllerVariableCollector implements TwigFileVariableCollector {
1717
@Override
1818
public void collectPsiVariables(@NotNull TwigFileVariableCollectorParameter parameter, @NotNull Map<String, PsiVariable> variables) {
19-
PsiFile psiFile = parameter.getElement().getContainingFile();
19+
PsiFile psiFile = parameter.getContainingFile();
2020
if(!(psiFile instanceof TwigFile)) {
2121
return;
2222
}

src/main/java/fr/adrienbrault/idea/symfony2plugin/twig/variable/collector/UxComponentVariableCollector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*/
2020
public class UxComponentVariableCollector implements TwigFileVariableCollector {
2121
public void collectPsiVariables(@NotNull TwigFileVariableCollectorParameter parameter, @NotNull Map<String, PsiVariable> variables) {
22-
PsiFile psiFile = parameter.getElement().getContainingFile();
22+
PsiFile psiFile = parameter.getContainingFile();
2323
if (!(psiFile instanceof TwigFile)) {
2424
return;
2525
}

src/main/kotlin/fr/adrienbrault/idea/symfony2plugin/ux/variable/collector/UxComponentVariableCollector.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import fr.adrienbrault.idea.symfony2plugin.util.UxUtil
1414
class UxComponentVariableCollector : TwigFileVariableCollector {
1515
override fun collectPsiVariables(parameter: TwigFileVariableCollectorParameter, variables: MutableMap<String, PsiVariable>) {
1616
val project = parameter.project
17-
val componentClassesForTemplateFile = UxUtil.getComponentClassesForTemplateFile(project, parameter.element.containingFile)
17+
val componentClassesForTemplateFile = UxUtil.getComponentClassesForTemplateFile(project, parameter.containingFile)
1818

1919
if (componentClassesForTemplateFile.isNotEmpty()) {
2020
variables["attributes"] = PsiVariable("\\Symfony\\UX\\TwigComponent\\ComponentAttributes")

0 commit comments

Comments
 (0)