From ba4977b359395277bcc7f0aa95e27fb7573595ee Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Sun, 20 Feb 2005 18:46:39 +0300 Subject: [PATCH] IDEADEV-393 --- .../MissingArrayInitializerBraceFixer.java | 27 +++++++++++++++++++ .../smartEnter/SmartEnterProcessor.java | 1 + .../source/parsing/ExpressionParsing.java | 8 +++--- 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 source/com/intellij/codeInsight/editorActions/smartEnter/MissingArrayInitializerBraceFixer.java diff --git a/source/com/intellij/codeInsight/editorActions/smartEnter/MissingArrayInitializerBraceFixer.java b/source/com/intellij/codeInsight/editorActions/smartEnter/MissingArrayInitializerBraceFixer.java new file mode 100644 index 000000000000..145638e517ba --- /dev/null +++ b/source/com/intellij/codeInsight/editorActions/smartEnter/MissingArrayInitializerBraceFixer.java @@ -0,0 +1,27 @@ +package com.intellij.codeInsight.editorActions.smartEnter; + +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.editor.Editor; +import com.intellij.psi.PsiArrayInitializerExpression; +import com.intellij.psi.PsiElement; +import com.intellij.util.IncorrectOperationException; + +/** + * Created by IntelliJ IDEA. + * User: max + * Date: Sep 5, 2003 + * Time: 7:24:03 PM + * To change this template use Options | File Templates. + */ +public class MissingArrayInitializerBraceFixer implements Fixer { + public void apply(Editor editor, SmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException { + if (!(psiElement instanceof PsiArrayInitializerExpression)) return; + PsiArrayInitializerExpression expr = (PsiArrayInitializerExpression)psiElement; + + final Document doc = editor.getDocument(); + + if (!expr.getText().endsWith("}")) { + doc.insertString(expr.getTextRange().getEndOffset(), "}"); + } + } +} diff --git a/source/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java b/source/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java index 12a3d29a6057..48f59e9bdf56 100644 --- a/source/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java +++ b/source/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java @@ -37,6 +37,7 @@ public class SmartEnterProcessor { ourFixers.add(new DoWhileConditionFixer()); ourFixers.add(new BlockBraceFixer()); ourFixers.add(new MissingIfBranchesFixer()); + ourFixers.add(new MissingArrayInitializerBraceFixer()); ourFixers.add(new MissingWhileBodyFixer()); ourFixers.add(new MissingForBodyFixer()); ourFixers.add(new MissingForeachBodyFixer()); diff --git a/source/com/intellij/psi/impl/source/parsing/ExpressionParsing.java b/source/com/intellij/psi/impl/source/parsing/ExpressionParsing.java index 5fcd455f8fb9..80dd19be0ffb 100644 --- a/source/com/intellij/psi/impl/source/parsing/ExpressionParsing.java +++ b/source/com/intellij/psi/impl/source/parsing/ExpressionParsing.java @@ -11,7 +11,6 @@ import com.intellij.psi.impl.source.tree.*; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import com.intellij.util.CharTable; -import com.intellij.lang.ASTNode; public class ExpressionParsing extends Parsing { private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.parsing.ExpressionParsing"); @@ -856,10 +855,9 @@ public class ExpressionParsing extends Parsing { TreeElement arg = parseExpression(lexer); if (arg == null) { if (lexer.getTokenType() != COMMA) { - CompositeElement errorElement = Factory.createErrorElement("Unexpected token"); - TreeUtil.addChildren(errorElement, ParseUtil.createTokenElement(lexer, myContext.getCharTable())); - lexer.advance(); - TreeUtil.addChildren(element, errorElement); + TreeUtil.addChildren(element, Factory.createErrorElement("'}' expected")); + element.putUserData(ParseUtil.UNCLOSED_ELEMENT_PROPERTY, ""); + return element; } else { TreeUtil.addChildren(element, Factory.createErrorElement("Expression expected"));