Ejemplo n.º 1
0
 public static PsiElement getUpperScope(final PsiElement element) {
   if (element instanceof PsiPackage) {
     return ((PsiPackage) element).getParentPackage();
   }
   if (element instanceof PbFile) {
     JavaPsiFacade facade = JavaPsiFacade.getInstance(element.getManager().getProject());
     return facade.findPackage(((PbFile) element).getPackageName());
   }
   if (element instanceof PbPsiElement) {
     PbPsiElement scope = (PbPsiElement) element.getParent();
     while (scope != null && !(scope instanceof PbFile) && !(scope instanceof PbBlock)) {
       scope = (PbPsiElement) scope.getParent();
     }
     /* // TC: This seems to skip from message block scope to package scope, preventing finding other messages
     defined in the same file.  Commenting out for now, since I don't see a good reason for it.
     if (scope instanceof PbFile) {
         JavaPsiFacade facade = JavaPsiFacade.getInstance(scope.getManager().getProject());
         return facade.findPackage(((PbFile) scope).getPackageName());
     }*/
     return scope;
   }
   assert false;
   return null;
 }
Ejemplo n.º 2
0
 public static PsiElement getRootScope(final PsiElement element) {
   return JavaPsiFacade.getInstance(element.getManager().getProject()).findPackage("");
 }