use of com.google.idea.blaze.base.lang.buildfile.psi.GlobExpression in project intellij by bazelbuild.
the class GlobReferenceSearcher method processQuery.
@Override
public void processQuery(SearchParameters queryParameters, Processor<PsiReference> consumer) {
PsiFileSystemItem file = ResolveUtil.asFileSystemItemSearch(queryParameters.getElementToSearch());
if (file == null) {
return;
}
BlazePackage containingPackage = BlazePackage.getContainingPackage(file);
if (containingPackage == null || !inScope(queryParameters, containingPackage.buildFile)) {
return;
}
String relativePath = containingPackage.getRelativePathToChild(file.getVirtualFile());
if (relativePath == null) {
return;
}
List<GlobExpression> globs = PsiUtils.findAllChildrenOfClassRecursive(containingPackage.buildFile, GlobExpression.class);
for (GlobExpression glob : globs) {
if (glob.matches(relativePath, file.isDirectory())) {
consumer.process(globReference(glob, file));
}
}
}
use of com.google.idea.blaze.base.lang.buildfile.psi.GlobExpression in project intellij by bazelbuild.
the class GlobReferenceTest method testExcludeDirectories2.
@Test
public void testExcludeDirectories2() {
workspace.createDirectory(new WorkspacePath("java/com/google/tests"));
workspace.createPsiFile(new WorkspacePath("java/com/google/tests/Test.java"));
workspace.createPsiFile(new WorkspacePath("java/com/google/Foo.java"));
BuildFile file = createBuildFile(new WorkspacePath("java/com/google/BUILD"), "glob(['**/*'], exclude = ['**/*'])");
GlobExpression glob = PsiUtils.findFirstChildOfClassRecursive(file, GlobExpression.class);
List<PsiElement> references = multiResolve(glob);
assertThat(references).isEmpty();
}
use of com.google.idea.blaze.base.lang.buildfile.psi.GlobExpression in project intellij by bazelbuild.
the class GlobReferenceTest method testIncludeDirectories.
@Test
public void testIncludeDirectories() {
workspace.createDirectory(new WorkspacePath("java/com/google/tests"));
PsiFile test = workspace.createPsiFile(new WorkspacePath("java/com/google/tests/Test.java"));
PsiFile foo = workspace.createPsiFile(new WorkspacePath("java/com/google/Foo.java"));
BuildFile file = createBuildFile(new WorkspacePath("java/com/google/BUILD"), "glob(" + " ['**/*']," + " exclude = ['BUILD']," + " exclude_directories = 0)");
GlobExpression glob = PsiUtils.findFirstChildOfClassRecursive(file, GlobExpression.class);
List<PsiElement> references = multiResolve(glob);
assertThat(references).hasSize(3);
assertThat(references).containsExactly(foo, test, test.getParent());
}
use of com.google.idea.blaze.base.lang.buildfile.psi.GlobExpression in project intellij by bazelbuild.
the class GlobReferenceTest method testGlobReferencingMultipleFiles.
@Test
public void testGlobReferencingMultipleFiles() {
PsiFile ref1 = workspace.createPsiFile(new WorkspacePath("java/com/google/Test.java"));
PsiFile ref2 = workspace.createPsiFile(new WorkspacePath("java/com/google/Foo.java"));
BuildFile file = createBuildFile(new WorkspacePath("java/com/google/BUILD"), "glob(['*.java'])");
GlobExpression glob = PsiUtils.findFirstChildOfClassRecursive(file, GlobExpression.class);
List<PsiElement> references = multiResolve(glob);
assertThat(references).hasSize(2);
assertThat(references).containsExactly(ref1, ref2);
}
use of com.google.idea.blaze.base.lang.buildfile.psi.GlobExpression in project intellij by bazelbuild.
the class GlobReferenceTest method testExcludeDirectories.
@Test
public void testExcludeDirectories() {
workspace.createDirectory(new WorkspacePath("java/com/google/tests"));
PsiFile test = workspace.createPsiFile(new WorkspacePath("java/com/google/tests/Test.java"));
PsiFile foo = workspace.createPsiFile(new WorkspacePath("java/com/google/Foo.java"));
BuildFile file = createBuildFile(new WorkspacePath("java/com/google/BUILD"), "glob(['**/*'], exclude = ['BUILD'])");
GlobExpression glob = PsiUtils.findFirstChildOfClassRecursive(file, GlobExpression.class);
List<PsiElement> references = multiResolve(glob);
assertThat(references).hasSize(2);
assertThat(references).containsExactly(foo, test);
}
Aggregations