Fixes couple exceptions

This commit is contained in:
Nikolay Krasko
2012-02-25 00:04:56 +04:00
parent 782ea7b1c3
commit 010090cd51
4 changed files with 37 additions and 4 deletions
@@ -90,7 +90,7 @@ public class JetFunctionInsertHandler implements InsertHandler<LookupElement> {
// Insert () if it's not already exist // Insert () if it's not already exist
document.insertString(endOffset, "()"); document.insertString(endOffset, "()");
bothParentheses = true; bothParentheses = true;
} else if (endOffset + 1 < documentText.length() && documentText.charAt(endOffset) == ')') { } else if (endOffset + 1 < documentText.length() && documentText.charAt(endOffset + 1) == ')') {
bothParentheses = true; bothParentheses = true;
} }
@@ -44,6 +44,8 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder {
private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) { private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) {
return new SpacingBuilder(settings) return new SpacingBuilder(settings)
.after(NAMESPACE_HEADER).blankLines(1)
.before(IMPORT_DIRECTIVE).lineBreakInCode() .before(IMPORT_DIRECTIVE).lineBreakInCode()
.between(IMPORT_DIRECTIVE, CLASS).blankLines(1) .between(IMPORT_DIRECTIVE, CLASS).blankLines(1)
.between(IMPORT_DIRECTIVE, FUN).blankLines(1) .between(IMPORT_DIRECTIVE, FUN).blankLines(1)
@@ -89,9 +89,14 @@ public class ImportClassHelper {
} }
else { else {
List<JetDeclaration> declarations = file.getDeclarations(); List<JetDeclaration> declarations = file.getDeclarations();
assert !declarations.isEmpty();
JetDeclaration firstDeclaration = declarations.iterator().next(); if (!declarations.isEmpty()) {
firstDeclaration.getParent().addBefore(newDirective, firstDeclaration); JetDeclaration firstDeclaration = declarations.iterator().next();
firstDeclaration.getParent().addBefore(newDirective, firstDeclaration);
}
else {
file.getNamespaceHeader().getParent().addAfter(newDirective, file.getNamespaceHeader());
}
} }
} }
@@ -21,6 +21,8 @@ import com.intellij.openapi.application.ApplicationManager;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.plugin.PluginTestCaseBase;
import java.io.IOException;
/** /**
* @author Nikolay Krasko * @author Nikolay Krasko
*/ */
@@ -48,6 +50,30 @@ public class ImportClassHelperTest extends LightDaemonAnalyzerTestCase {
checkResultByFile(getTestName(false) + ".kt.after"); 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 @Override
protected String getTestDataPath() { protected String getTestDataPath() {
return PluginTestCaseBase.getTestDataPathBase() + "/quickfix/importHelper/"; return PluginTestCaseBase.getTestDataPathBase() + "/quickfix/importHelper/";