handle null argument in ChangeUtil.generateTreeElement (EA-72435 - IAE: PsiUtilCore.ensureValid)

This commit is contained in:
peter
2015-11-16 14:16:55 +01:00
parent a7db319772
commit a42243540c
4 changed files with 7 additions and 4 deletions
@@ -49,7 +49,7 @@ public class JavaTreeGenerator implements TreeGenerator {
@Override
@Nullable
public TreeElement generateTreeFor(PsiElement original, final CharTable table, final PsiManager manager) {
public TreeElement generateTreeFor(@NotNull PsiElement original, @NotNull final CharTable table, @NotNull final PsiManager manager) {
if (original instanceof PsiKeyword || original instanceof PsiIdentifier) {
final String text = original.getText();
return createLeafFromText(text, table, manager, original, ((PsiJavaToken)original).getTokenType());
@@ -144,7 +144,8 @@ public class ChangeUtil {
}
@Nullable
public static TreeElement generateTreeElement(PsiElement original, CharTable table, final PsiManager manager) {
public static TreeElement generateTreeElement(@Nullable PsiElement original, @NotNull CharTable table, @NotNull final PsiManager manager) {
if (original == null) return null;
PsiUtilCore.ensureValid(original);
if (SourceTreeToPsiMap.hasTreeElement(original)) {
return copyElement((TreeElement)SourceTreeToPsiMap.psiElementToTree(original), table);
@@ -23,11 +23,12 @@ import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiManager;
import com.intellij.util.CharTable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface TreeGenerator {
ExtensionPointName<TreeGenerator> EP_NAME = ExtensionPointName.create("com.intellij.treeGenerator");
@Nullable
TreeElement generateTreeFor(PsiElement original, CharTable table, final PsiManager manager);
TreeElement generateTreeFor(@NotNull PsiElement original, @NotNull CharTable table, @NotNull final PsiManager manager);
}
@@ -20,12 +20,13 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.source.tree.TreeElement;
import com.intellij.psi.impl.source.tree.TreeGenerator;
import com.intellij.util.CharTable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList;
public class GroovyTreeGenerator implements TreeGenerator {
@Override
public TreeElement generateTreeFor(PsiElement original, CharTable table, PsiManager manager) {
public TreeElement generateTreeFor(@NotNull PsiElement original, @NotNull CharTable table, @NotNull PsiManager manager) {
if (original instanceof GrModifierList) {
final String text = original.getText();