mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix SIOOBE (EA-116377)
This commit is contained in:
+43
-5
@@ -4,11 +4,20 @@ package org.jetbrains.plugins.javaFX.fxml;
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.codeInsight.intention.IntentionActionDelegate;
|
||||
import com.intellij.openapi.application.PluginPathManager;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.roots.ContentEntry;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
import com.intellij.testFramework.LightProjectDescriptor;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
@@ -17,6 +26,7 @@ import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.javaFX.fxml.codeInsight.inspections.JavaFxUnresolvedFxIdReferenceInspection;
|
||||
import org.jetbrains.plugins.javaFX.fxml.codeInsight.intentions.JavaFxInjectPageLanguageIntention;
|
||||
|
||||
@@ -38,6 +48,29 @@ public class JavaFXQuickfixTest extends LightCodeInsightFixtureTestCase {
|
||||
return JAVA_FX_WITH_GROOVY_DESCRIPTOR;
|
||||
}
|
||||
|
||||
public void testCreateControllerMethodEmptyName() {
|
||||
String inputName = getTestName(false);
|
||||
String extension = ".java";
|
||||
String actionName = "Create method";
|
||||
|
||||
String path = PlatformTestUtil.lowercaseFirstLetter(inputName, true) + ".fxml";
|
||||
myFixture.configureByFiles(path, inputName + extension);
|
||||
IntentionAction intention = myFixture.findSingleIntention(actionName);
|
||||
|
||||
Editor editor = myFixture.getEditor();
|
||||
PsiFile file = myFixture.getFile();
|
||||
WriteCommandAction.runWriteCommandAction(getProject(), () -> {
|
||||
Document document = editor.getDocument();
|
||||
|
||||
PsiElement leaf = file.findElementAt(editor.getCaretModel().getOffset());
|
||||
TextRange range = PsiTreeUtil.getParentOfType(leaf, XmlAttributeValue.class).getValueTextRange();
|
||||
document.deleteString(range.getStartOffset(), range.getEndOffset());
|
||||
|
||||
PsiDocumentManager.getInstance(getProject()).commitDocument(document);
|
||||
});
|
||||
assertFalse(intention.isAvailable(getProject(), editor, file));
|
||||
}
|
||||
|
||||
public void testCreateControllerMethod() {
|
||||
doTest("Create method 'bar'", ".java");
|
||||
}
|
||||
@@ -141,13 +174,18 @@ public class JavaFXQuickfixTest extends LightCodeInsightFixtureTestCase {
|
||||
doTest(actionName, getTestName(false), getTestName(false), extension);
|
||||
}
|
||||
|
||||
private void doTest(final String actionName, final String inputName, final String outputName, final String extension) {
|
||||
private void doTest(final String actionName, final String inputName, @Nullable final String outputName, final String extension) {
|
||||
String path = PlatformTestUtil.lowercaseFirstLetter(inputName, true) + ".fxml";
|
||||
myFixture.configureByFiles(path, inputName + extension);
|
||||
final IntentionAction intention = myFixture.findSingleIntention(actionName);
|
||||
assertNotNull(intention);
|
||||
myFixture.launchAction(intention);
|
||||
myFixture.checkResultByFile(inputName + extension, outputName + "_after" + extension, true);
|
||||
|
||||
if (outputName == null) {
|
||||
assertNull(myFixture.getAvailableIntention(actionName));
|
||||
}
|
||||
else {
|
||||
final IntentionAction intention = myFixture.findSingleIntention(actionName);
|
||||
myFixture.launchAction(intention);
|
||||
myFixture.checkResultByFile(inputName + extension, outputName + "_after" + extension, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-1
@@ -41,7 +41,9 @@ class CreateEventHandlerRequest(element: XmlAttributeValue) : CreateMethodReques
|
||||
private val myPointer = element.createSmartPointer(myProject)
|
||||
|
||||
override fun isValid(): Boolean = myPointer.element.let {
|
||||
it != null && it.value != null
|
||||
it != null && it.value.let { value ->
|
||||
value != null && value.length > 2
|
||||
}
|
||||
}
|
||||
|
||||
private val myElement get() = myPointer.element!!
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
public class CreateControllerMethodEmptyName {}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<GridPane xmlns:fx="http://javafx.com/fxml" fx:controller="CreateControllerMethodEmptyName">
|
||||
<Button onAction="#<caret>foo"/>
|
||||
</GridPane>
|
||||
Reference in New Issue
Block a user