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()); }