From 010090cd51ea7f8778c5b4fcfc7373ce035ad908 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Sat, 25 Feb 2012 00:04:56 +0400 Subject: [PATCH] Fixes couple exceptions --- .../handlers/JetFunctionInsertHandler.java | 2 +- .../formatter/JetFormattingModelBuilder.java | 2 ++ .../plugin/quickfix/ImportClassHelper.java | 11 +++++--- .../quickfix/ImportClassHelperTest.java | 26 +++++++++++++++++++ 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java index 637bbf68543..40612db4ebd 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java @@ -90,7 +90,7 @@ public class JetFunctionInsertHandler implements InsertHandler { // Insert () if it's not already exist document.insertString(endOffset, "()"); bothParentheses = true; - } else if (endOffset + 1 < documentText.length() && documentText.charAt(endOffset) == ')') { + } else if (endOffset + 1 < documentText.length() && documentText.charAt(endOffset + 1) == ')') { bothParentheses = true; } diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java index 6f45d821a4d..99a006df400 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java @@ -44,6 +44,8 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder { private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) { return new SpacingBuilder(settings) + .after(NAMESPACE_HEADER).blankLines(1) + .before(IMPORT_DIRECTIVE).lineBreakInCode() .between(IMPORT_DIRECTIVE, CLASS).blankLines(1) .between(IMPORT_DIRECTIVE, FUN).blankLines(1) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ImportClassHelper.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ImportClassHelper.java index 59b552f7f8a..5c0cf8aaa05 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ImportClassHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ImportClassHelper.java @@ -89,9 +89,14 @@ public class ImportClassHelper { } else { List declarations = file.getDeclarations(); - assert !declarations.isEmpty(); - JetDeclaration firstDeclaration = declarations.iterator().next(); - firstDeclaration.getParent().addBefore(newDirective, firstDeclaration); + + if (!declarations.isEmpty()) { + JetDeclaration firstDeclaration = declarations.iterator().next(); + firstDeclaration.getParent().addBefore(newDirective, firstDeclaration); + } + else { + file.getNamespaceHeader().getParent().addAfter(newDirective, file.getNamespaceHeader()); + } } } diff --git a/idea/tests/org/jetbrains/jet/plugin/quickfix/ImportClassHelperTest.java b/idea/tests/org/jetbrains/jet/plugin/quickfix/ImportClassHelperTest.java index ef2edbe353a..ed6184b6b43 100644 --- a/idea/tests/org/jetbrains/jet/plugin/quickfix/ImportClassHelperTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/quickfix/ImportClassHelperTest.java @@ -21,6 +21,8 @@ import com.intellij.openapi.application.ApplicationManager; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.plugin.PluginTestCaseBase; +import java.io.IOException; + /** * @author Nikolay Krasko */ @@ -48,6 +50,30 @@ public class ImportClassHelperTest extends LightDaemonAnalyzerTestCase { checkResultByFile(getTestName(false) + ".kt.after"); } + public void testInsertInEmptyFile() throws IOException { + configureFromFileText("testInsertInEmptyFile.kt", ""); + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + ImportClassHelper.addImportDirective("java.util.ArrayList", (JetFile) getFile()); + } + }); + + checkResultByText("import java.util.ArrayList"); + } + + public void testInsertInPackageOnlyFile() throws IOException { + configureFromFileText("testInsertInPackageOnlyFile.kt", "package some"); + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + ImportClassHelper.addImportDirective("java.util.ArrayList", (JetFile) getFile()); + } + }); + + checkResultByText("package some\n\nimport java.util.ArrayList"); + } + @Override protected String getTestDataPath() { return PluginTestCaseBase.getTestDataPathBase() + "/quickfix/importHelper/";