diff --git a/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/InplaceVariableIntroducer.java b/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/InplaceVariableIntroducer.java index ad90339189d4..b9c702925fb7 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/InplaceVariableIntroducer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/InplaceVariableIntroducer.java @@ -21,8 +21,8 @@ import com.intellij.codeInsight.template.ExpressionContext; import com.intellij.codeInsight.template.TextResult; import com.intellij.codeInsight.template.impl.TemplateManagerImpl; import com.intellij.codeInsight.template.impl.TemplateState; -import com.intellij.lang.ASTNode; -import com.intellij.lang.LanguageTokenSeparatorGenerators; +import com.intellij.lang.*; +import com.intellij.lexer.Lexer; import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.command.impl.StartMarkAction; @@ -76,9 +76,12 @@ public abstract class InplaceVariableIntroducer extends In myOccurrences = occurrences; if (expr != null) { final ASTNode node = expr.getNode(); + ASTNode prev = node.getTreePrev(); final ASTNode astNode = LanguageTokenSeparatorGenerators.INSTANCE.forLanguage(expr.getLanguage()) - .generateWhitespaceBetweenTokens(node.getTreePrev(), node); - if (astNode != null) { + .generateWhitespaceBetweenTokens(prev, node); + final Lexer lexer = LanguageParserDefinitions.INSTANCE.forLanguage(expr.getLanguage()).createLexer(project); + if (astNode != null && + LanguageUtil.canStickTokensTogetherByLexer(prev, prev, lexer) == ParserDefinition.SpaceRequirements.MUST) { PostprocessReformattingAspect.getInstance(project).disablePostprocessFormattingInside(new Runnable() { @Override public void run() {