diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index c506d8d2221..f5e8cf85c78 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -234,7 +234,7 @@ - + { + if (root !is JetFile) { + return FoldingDescriptor.EMPTY } - List descriptors = new ArrayList(); - JetFile file = (JetFile) root; + val descriptors = ArrayList() - List imports = file.getImportDirectives(); + val imports = root.getImportDirectives() if (imports.size() > 1) { - PsiElement importKeyword = imports.get(0).getFirstChild(); - int startOffset = importKeyword.getTextRange().getEndOffset() + 1; + val importKeyword = imports.get(0).getFirstChild() + val startOffset = importKeyword.getTextRange().getEndOffset() + 1 - JetImportList importList = file.getImportList(); - int endOffset = importList.getTextRange().getEndOffset(); + val importList = root.getImportList() + if (importList != null) { + val endOffset = importList.getTextRange().getEndOffset() - TextRange range = new TextRange(startOffset, endOffset); - descriptors.add(new FoldingDescriptor(importList, range)); + val range = TextRange(startOffset, endOffset) + descriptors.add(FoldingDescriptor(importList, range)) + } } - appendDescriptors(root.getNode(), document, descriptors); - return descriptors.toArray(new FoldingDescriptor[descriptors.size()]); + appendDescriptors(root.getNode(), document, descriptors) + return descriptors.copyToArray() } - private static void appendDescriptors(ASTNode node, Document document, List descriptors) { - TextRange textRange = node.getTextRange(); - IElementType type = node.getElementType(); + private fun appendDescriptors(node: ASTNode, document: Document, descriptors: MutableList) { + val textRange = node.getTextRange() + val type = node.getElementType() if ((type == JetNodeTypes.BLOCK || type == JetNodeTypes.CLASS_BODY || type == JetTokens.BLOCK_COMMENT || type == KDocTokens.KDOC) && !isOneLine(textRange, document)) { - descriptors.add(new FoldingDescriptor(node, textRange)); + descriptors.add(FoldingDescriptor(node, textRange)) } - ASTNode child = node.getFirstChildNode(); + var child: ASTNode? = node.getFirstChildNode() while (child != null) { - appendDescriptors(child, document, descriptors); - child = child.getTreeNext(); + appendDescriptors(child, document, descriptors) + child = child.getTreeNext() } } - private static boolean isOneLine(TextRange textRange, Document document) { - return document.getLineNumber(textRange.getStartOffset()) == document.getLineNumber(textRange.getEndOffset()); - } + private fun isOneLine(textRange: TextRange, document: Document) = + document.getLineNumber(textRange.getStartOffset()) == document.getLineNumber(textRange.getEndOffset()) - @Override - public String getPlaceholderText(@NotNull ASTNode node) { + override fun getPlaceholderText(node: ASTNode): String? { if (node.getElementType() == JetTokens.BLOCK_COMMENT) { - return "/.../"; + return "/.../" } if (node.getElementType() == KDocTokens.KDOC) { - return "/**...*/"; + return "/**...*/" } - if (node.getPsi() instanceof JetImportList) { - return "..."; + if (node.getPsi() is JetImportList) { + return "..." } - return "{...}"; + return "{...}" } - @Override - public boolean isCollapsedByDefault(@NotNull ASTNode astNode) { - JavaCodeFoldingSettings settings = JavaCodeFoldingSettings.getInstance(); + override fun isCollapsedByDefault(astNode: ASTNode): Boolean { + val settings = JavaCodeFoldingSettings.getInstance() - if (astNode.getPsi() instanceof JetImportList) { - return settings.isCollapseImports(); + if (astNode.getPsi() is JetImportList) { + return settings.isCollapseImports() } - IElementType type = astNode.getElementType(); + val type = astNode.getElementType() if (type == JetTokens.BLOCK_COMMENT || type == KDocTokens.KDOC) { if (isFirstElementInFile(astNode.getPsi())) { - return settings.isCollapseFileHeader(); + return settings.isCollapseFileHeader() } } - return false; + return false } - private static boolean isFirstElementInFile(PsiElement element) { - PsiElement parent = element.getParent(); - if (parent instanceof JetFile) { - PsiElement firstChild = parent.getFirstChild(); - if (firstChild instanceof PsiWhiteSpace) { - firstChild = firstChild.getNextSibling(); + private fun isFirstElementInFile(element: PsiElement): Boolean { + val parent = element.getParent() + if (parent is JetFile) { + var firstChild = parent.getFirstChild() + if (firstChild is PsiWhiteSpace) { + firstChild = firstChild.getNextSibling() } - return element == firstChild; + return element == firstChild } - return false; + return false } }