private ITreeRange AdjustTreeRange(ITreeRange range) { if (range.First == range.Last) { var statement = range.First as IJavaScriptStatement; if (statement != null) return AdjustStatement(range, statement); var expression = range.First as IJavaScriptExpression; if (expression != null) return AdjustExpression(range, expression); var compoundExpression = range.First as ICompoundExpression; if (compoundExpression != null) return AdjustExpression(range, compoundExpression); } return range; }
private ITreeRange AdjustStatement(ITreeRange range, IJavaScriptStatement statement) { var ifStatementByThen = IfStatementNavigator.GetByThen(statement); if (ifStatementByThen != null) { if (ifStatementByThen.Else == null) { return(new TreeRange(ifStatementByThen, ifStatementByThen)); } if (!_executing) { return(range); } ifStatementByThen.ReplaceBy(ifStatementByThen.Else); return(null); } var ifStatementByElse = IfStatementNavigator.GetByElse(statement); if (ifStatementByElse != null) { if (ifStatementByElse.Then == null) { return(new TreeRange(ifStatementByElse, ifStatementByElse)); } if (!_executing) { return(range); } ifStatementByElse.SetElse(null); return(null); } var doStatement = DoStatementNavigator.GetByStatement(statement); if (doStatement != null) { return(new TreeRange(doStatement, doStatement)); } var whileStatement = WhileStatementNavigator.GetByStatement(statement); if (whileStatement != null) { return(new TreeRange(whileStatement, whileStatement)); } var forStatement = ForStatementNavigator.GetByStatement(statement); if (forStatement != null) { return(new TreeRange(forStatement, forStatement)); } var foreachStatement = ForeachStatementNavigator.GetByStatement(statement); if (foreachStatement != null) { return(new TreeRange(foreachStatement, foreachStatement)); } var withStatement = WithStatementNavigator.GetByStatement(statement); if (withStatement != null) { return(new TreeRange(withStatement, withStatement)); } return(range); }
private ITreeRange AdjustExpression(ITreeRange range, ICompoundExpression expression) { var expressionStatement = ExpressionStatementNavigator.GetByExpression(expression); if (expressionStatement != null) { return(AdjustStatement(new TreeRange(expressionStatement, expressionStatement), expressionStatement)); } var ifStatement = IfStatementNavigator.GetByCondition(expression); if (ifStatement != null) { if (ifStatement.Else == null) { return(new TreeRange(ifStatement, ifStatement)); } if (_executing) { var block = ifStatement.Else as IBlock; if (block == null) { ifStatement.ReplaceBy(ifStatement.Else); } else { //StatementUtil.ReplaceStatementWithBlock(block, ifStatementByCondition); } } return(null); } var switchStatement = SwitchStatementNavigator.GetByCondition(expression); if (switchStatement != null) { return(new TreeRange(switchStatement, switchStatement)); } var whileStatement = WhileStatementNavigator.GetByCondition(expression); if (whileStatement != null) { return(new TreeRange(whileStatement, whileStatement)); } var doStatement = DoStatementNavigator.GetByCondition(expression); if (doStatement != null) { if (!_executing) { return(range); } var block = doStatement.Statement as IBlock; if (block != null && block.Statements.Count == 1) { doStatement.ReplaceBy(block.Statements[0]); } else { doStatement.ReplaceBy(doStatement.Statement); } return(null); } var forStatement = ForStatementNavigator.GetByForCondition(expression); if (forStatement != null) { return(new TreeRange(forStatement, forStatement)); } return(range); }
public ITreeRange HandleChangeStatements(IPsiServices psiServices, ITreeRange rangeBeforeChange, Func<ITreeRange> changeAction, bool strict) { return changeAction(); }
public override ITreeRange FormatInsertedRange(ITreeNode nodeFirst, ITreeNode nodeLast, ITreeRange origin) { return(new TreeRange(nodeFirst, nodeLast)); }
public override ITreeRange FormatInsertedRange(ITreeNode nodeFirst, ITreeNode nodeLast, ITreeRange origin) => origin;
public override ITreeRange FormatInsertedRange(ITreeNode nodeFirst, ITreeNode nodeLast, ITreeRange origin) => null;
public void HandleRemoveStatementsRange(IPsiServices psiServices, ITreeRange treeRange, Action action) => action();
public RemoveUnreachableCodeFix(HeuristicallyUnreachableCodeWarning error) { _range = error.TreeRange; }
public RemoveUnreachableCodeFix(UnreachableCodeWarning error) { _range = error.TreeRange; }
private ITreeRange AdjustStatement(ITreeRange range, IJavaScriptStatement statement) { var ifStatementByThen = IfStatementNavigator.GetByThen(statement); if (ifStatementByThen != null) { if (ifStatementByThen.Else == null) return new TreeRange(ifStatementByThen, ifStatementByThen); if (!_executing) return range; ifStatementByThen.ReplaceBy(ifStatementByThen.Else); return null; } var ifStatementByElse = IfStatementNavigator.GetByElse(statement); if (ifStatementByElse != null) { if (ifStatementByElse.Then == null) return new TreeRange(ifStatementByElse, ifStatementByElse); if (!_executing) return range; ifStatementByElse.SetElse(null); return null; } var doStatement = DoStatementNavigator.GetByStatement(statement); if (doStatement != null) return new TreeRange(doStatement, doStatement); var whileStatement = WhileStatementNavigator.GetByStatement(statement); if (whileStatement != null) return new TreeRange(whileStatement, whileStatement); var forStatement = ForStatementNavigator.GetByStatement(statement); if (forStatement != null) return new TreeRange(forStatement, forStatement); var foreachStatement = ForeachStatementNavigator.GetByStatement(statement); if (foreachStatement != null) return new TreeRange(foreachStatement, foreachStatement); var withStatement = WithStatementNavigator.GetByStatement(statement); if (withStatement != null) return new TreeRange(withStatement, withStatement); return range; }
private ITreeRange AdjustExpression(ITreeRange range, ICompoundExpression expression) { var expressionStatement = ExpressionStatementNavigator.GetByExpression(expression); if (expressionStatement != null) return AdjustStatement(new TreeRange(expressionStatement, expressionStatement), expressionStatement); var ifStatement = IfStatementNavigator.GetByCondition(expression); if (ifStatement != null) { if (ifStatement.Else == null) { return new TreeRange(ifStatement, ifStatement); } if (_executing) { var block = ifStatement.Else as IBlock; if (block == null) { ifStatement.ReplaceBy(ifStatement.Else); } else { //StatementUtil.ReplaceStatementWithBlock(block, ifStatementByCondition); } } return null; } var switchStatement = SwitchStatementNavigator.GetByCondition(expression); if (switchStatement != null) return new TreeRange(switchStatement, switchStatement); var whileStatement = WhileStatementNavigator.GetByCondition(expression); if (whileStatement != null) return new TreeRange(whileStatement, whileStatement); var doStatement = DoStatementNavigator.GetByCondition(expression); if (doStatement != null) { if (!_executing) return range; var block = doStatement.Statement as IBlock; if (block != null && block.Statements.Count == 1) { doStatement.ReplaceBy(block.Statements[0]); } else { doStatement.ReplaceBy(doStatement.Statement); } return null; } var forStatement = ForStatementNavigator.GetByForCondition(expression); if (forStatement != null) return new TreeRange(forStatement, forStatement); return range; }
private ITreeRange AdjustExpression(ITreeRange range, IJavaScriptExpression expression) { var binaryExpressionByLeftOperand = BinaryExpressionNavigator.GetByLeftOperand(expression); if (binaryExpressionByLeftOperand != null && binaryExpressionByLeftOperand.Sign != null) return new TreeRange(expression, binaryExpressionByLeftOperand.Sign); var binaryExpressionByRightOperand = BinaryExpressionNavigator.GetByRightOperand(expression); if (binaryExpressionByRightOperand != null && binaryExpressionByRightOperand.Sign != null) return new TreeRange(binaryExpressionByRightOperand.Sign, expression); var conditionalTernaryExpressionByConditionOperand = ConditionalTernaryExpressionNavigator.GetByConditionOperand(expression); if (conditionalTernaryExpressionByConditionOperand != null) return AdjustExpression(new TreeRange(conditionalTernaryExpressionByConditionOperand, conditionalTernaryExpressionByConditionOperand), conditionalTernaryExpressionByConditionOperand); var conditionalTernaryExpressionByThenResult = ConditionalTernaryExpressionNavigator.GetByThenResult(expression); if (conditionalTernaryExpressionByThenResult != null) { if (conditionalTernaryExpressionByThenResult.ElseResult == null) return AdjustExpression(new TreeRange(conditionalTernaryExpressionByThenResult, conditionalTernaryExpressionByThenResult), conditionalTernaryExpressionByThenResult); if (!_executing) return range; conditionalTernaryExpressionByThenResult.ReplaceBy(conditionalTernaryExpressionByThenResult.ElseResult); return null; } var conditionalTernaryExpressionByElseResult = ConditionalTernaryExpressionNavigator.GetByElseResult(expression); if (conditionalTernaryExpressionByElseResult != null) { if (!_executing) return range; conditionalTernaryExpressionByElseResult.ReplaceBy(conditionalTernaryExpressionByElseResult.ThenResult); return null; } var prefixExpression = PrefixExpressionNavigator.GetByOperand(expression); if (prefixExpression != null) return AdjustExpression(new TreeRange(prefixExpression, prefixExpression), prefixExpression); var postfixExpression = PostfixExpressionNavigator.GetByOperand(expression); if (postfixExpression != null) return AdjustExpression(new TreeRange(postfixExpression, postfixExpression), postfixExpression); return range; }
public override void FormatReplacedRange(ITreeNode first, ITreeNode last, ITreeRange oldNodes) { FormatInsertedNodes(first, last, false); FormatterImplHelper.CheckForMinimumSeparator(this, first, last); }
public override ITreeRange FormatInsertedRange(ITreeNode nodeFirst, ITreeNode nodeLast, ITreeRange origin) => FormatterImplHelper.FormatInsertedRangeHelper(this, nodeFirst, nodeLast, origin, true);
public ITreeRange HandleChangeStatements(IPsiServices psiServices, ITreeRange rangeBeforeChange, Func <ITreeRange> changeAction, bool strict) => changeAction();
public override ITreeRange FormatInsertedRange(ITreeNode nodeFirst, ITreeNode nodeLast, ITreeRange origin) { Format(nodeFirst, nodeLast, CodeFormatProfile.GENERATOR, null); return new TreeRange(nodeFirst, nodeLast); }
public override ITreeRange FormatInsertedRange(ITreeNode nodeFirst, ITreeNode nodeLast, ITreeRange origin) { Format(nodeFirst, nodeLast, CodeFormatProfile.GENERATOR, null); return(new TreeRange(nodeFirst, nodeLast)); }
private static void SwapFileHeaderNode(ICSharpFile file, string newHeader) { ITreeRange existingHeaderRange = Utils.GetFileHeaderTreeRange(file); using (WriteLockCookie.Create(file.IsPhysical())) { ICommentNode newCommentNode; if (existingHeaderRange.IsEmpty) { // existing header missing so add on a new line for our new header newHeader += Environment.NewLine; IWhitespaceNode node = file.ToTreeNode().FirstChild as IWhitespaceNode; bool insertNewLine = true; while (node != null) { if (node.IsNewLine) { insertNewLine = false; break; } node = node.NextSibling as IWhitespaceNode; } if (insertNewLine) { newHeader += Environment.NewLine; } newCommentNode = (ICommentNode) CSharpTokenType.END_OF_LINE_COMMENT.Create(new JB::JetBrains.Text.StringBuffer(newHeader), new TreeOffset(0), new TreeOffset(newHeader.Length)); LowLevelModificationUtil.AddChildBefore(file.ToTreeNode().FirstChild, new ITreeNode[] { newCommentNode }); } else { ITokenNode lastToken = (ITokenNode)existingHeaderRange.Last; ITokenNode nextToken = lastToken.GetNextToken(); if (nextToken != null) { ITokenNode nextNextToken = nextToken.GetNextToken(); if (nextNextToken != null) { ITokenNode nextNextNextToken = nextNextToken.GetNextToken(); if (!nextToken.IsNewLine() || !nextNextToken.IsNewLine()) { newHeader += Environment.NewLine; } if (nextNextNextToken.GetTokenType() == CSharpTokenType.PP_SHARP && nextToken.IsNewLine() && nextNextToken.IsNewLine()) { newHeader += Environment.NewLine; } newCommentNode = (ICommentNode) CSharpTokenType.END_OF_LINE_COMMENT.Create( new JB::JetBrains.Text.StringBuffer(newHeader), new TreeOffset(0), new TreeOffset(newHeader.Length)); LowLevelModificationUtil.ReplaceChildRange(existingHeaderRange.First, existingHeaderRange.Last, new ITreeNode[] { newCommentNode }); } } } } }
public override void FormatReplacedRange(ITreeNode first, ITreeNode last, ITreeRange oldNodes) { }
private ITreeRange AdjustExpression(ITreeRange range, IJavaScriptExpression expression) { var binaryExpressionByLeftOperand = BinaryExpressionNavigator.GetByLeftOperand(expression); if (binaryExpressionByLeftOperand != null && binaryExpressionByLeftOperand.Sign != null) { return(new TreeRange(expression, binaryExpressionByLeftOperand.Sign)); } var binaryExpressionByRightOperand = BinaryExpressionNavigator.GetByRightOperand(expression); if (binaryExpressionByRightOperand != null && binaryExpressionByRightOperand.Sign != null) { return(new TreeRange(binaryExpressionByRightOperand.Sign, expression)); } var conditionalTernaryExpressionByConditionOperand = ConditionalTernaryExpressionNavigator.GetByConditionOperand(expression); if (conditionalTernaryExpressionByConditionOperand != null) { return(AdjustExpression(new TreeRange(conditionalTernaryExpressionByConditionOperand, conditionalTernaryExpressionByConditionOperand), conditionalTernaryExpressionByConditionOperand)); } var conditionalTernaryExpressionByThenResult = ConditionalTernaryExpressionNavigator.GetByThenResult(expression); if (conditionalTernaryExpressionByThenResult != null) { if (conditionalTernaryExpressionByThenResult.ElseResult == null) { return(AdjustExpression(new TreeRange(conditionalTernaryExpressionByThenResult, conditionalTernaryExpressionByThenResult), conditionalTernaryExpressionByThenResult)); } if (!_executing) { return(range); } conditionalTernaryExpressionByThenResult.ReplaceBy(conditionalTernaryExpressionByThenResult.ElseResult); return(null); } var conditionalTernaryExpressionByElseResult = ConditionalTernaryExpressionNavigator.GetByElseResult(expression); if (conditionalTernaryExpressionByElseResult != null) { if (!_executing) { return(range); } conditionalTernaryExpressionByElseResult.ReplaceBy(conditionalTernaryExpressionByElseResult.ThenResult); return(null); } var prefixExpression = PrefixExpressionNavigator.GetByOperand(expression); if (prefixExpression != null) { return(AdjustExpression(new TreeRange(prefixExpression, prefixExpression), prefixExpression)); } var postfixExpression = PostfixExpressionNavigator.GetByOperand(expression); if (postfixExpression != null) { return(AdjustExpression(new TreeRange(postfixExpression, postfixExpression), postfixExpression)); } return(range); }
public void HandleRemoveStatementsRange(IPsiServices psiServices, ITreeRange treeRange, Action action) { action(); }