コード例 #1
0
 static Node getBeforeParenthesisNode(Tree.Declaration decNode) {
   Node n = decNode.getIdentifier();
   if (decNode instanceof Tree.TypeDeclaration) {
     Tree.TypeDeclaration td = (Tree.TypeDeclaration) decNode;
     Tree.TypeParameterList tpl = td.getTypeParameterList();
     if (tpl != null) {
       n = tpl;
     }
   }
   if (decNode instanceof Tree.AnyMethod) {
     Tree.AnyMethod am = (Tree.AnyMethod) decNode;
     Tree.TypeParameterList tpl = am.getTypeParameterList();
     if (tpl != null) {
       n = tpl;
     }
   }
   return n;
 }
  @NotNull
  @Override
  public String getDescriptiveName(@NotNull PsiElement element) {
    if (element instanceof CeylonPsi.AttributeDeclarationPsi) {
      return ((CeylonPsi.AttributeDeclarationPsi) element)
          .getCeylonNode()
          .getDeclarationModel()
          .getQualifiedNameString();
    } else if (element instanceof CeylonPsi.ClassOrInterfacePsi) {
      Tree.Declaration ceylonNode = ((CeylonPsi.ClassOrInterfacePsi) element).getCeylonNode();
      //            if (ceylonNode == null) {
      //                // perhaps a stub
      //                return ((CeylonPsi.ClassOrInterfacePsi) element).getQualifiedName();
      //            }
      Declaration model = ceylonNode.getDeclarationModel();
      return model == null ? ceylonNode.getIdentifier().getText() : model.getQualifiedNameString();
    } else if (element instanceof CeylonPsi.AnyMethodPsi) {
      Function model = ((CeylonPsi.AnyMethodPsi) element).getCeylonNode().getDeclarationModel();
      return model == null
          ? ((CeylonPsi.AnyMethodPsi) element).getCeylonNode().getIdentifier().getText()
          : model.getQualifiedNameString();
    } else if (element instanceof CeylonPsi.ParameterDeclarationPsi) {
      return ((CeylonPsi.ParameterDeclarationPsi) element)
          .getCeylonNode()
          .getTypedDeclaration()
          .getIdentifier()
          .getText();
    } else if (element instanceof CeylonPsi.TypeParameterDeclarationPsi) {
      return ((CeylonPsi.TypeParameterDeclarationPsi) element)
          .getCeylonNode()
          .getIdentifier()
          .getText();
    } else if (element instanceof CeylonFile) {
      return ((CeylonFile) element).getName();
    } else if (element instanceof CeylonPsi.ObjectDefinitionPsi) {
      return ((CeylonPsi.ObjectDefinitionPsi) element).getCeylonNode().getIdentifier().getText();
    }

    throw new UnsupportedOperationException(
        "Descriptive name not implemented for " + element.getClass());
  }