PsiJavaParserFacade no longer extends PsiParserFacade

This commit is contained in:
Dmitry Jemerov
2011-09-22 19:31:26 +02:00
parent 44663f0c05
commit 8410cb5ab0
17 changed files with 32 additions and 30 deletions
@@ -82,8 +82,8 @@ public class GenerateMembersUtil {
// }
whiteSpace += "\n";
}
PsiElementFactory factory = JavaPsiFacade.getInstance(file.getProject()).getElementFactory();
final ASTNode singleNewLineWhitespace = factory.createWhiteSpaceFromText(whiteSpace).getNode();
final PsiParserFacade parserFacade = PsiParserFacade.SERVICE.getInstance(file.getProject());
final ASTNode singleNewLineWhitespace = parserFacade.createWhiteSpaceFromText(whiteSpace).getNode();
if (singleNewLineWhitespace != null) {
spaceNode.getTreeParent().replaceChild(spaceNode, singleNewLineWhitespace); // See http://jetbrains.net/jira/browse/IDEADEV-12837
}
@@ -45,7 +45,7 @@ class JavaWithBlockSurrounder extends JavaStatementsSurrounder{
blockStatement = (PsiBlockStatement)container.addBefore(blockStatement, statements[0]);
PsiCodeBlock body = blockStatement.getCodeBlock();
SurroundWithUtil.indentCommentIfNecessary(body, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(body, statements);
body.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
@@ -51,7 +51,7 @@ class JavaWithDoWhileSurrounder extends JavaStatementsSurrounder{
return null;
}
PsiCodeBlock bodyBlock = ((PsiBlockStatement)body).getCodeBlock();
SurroundWithUtil.indentCommentIfNecessary(bodyBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(bodyBlock, statements);
bodyBlock.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
@@ -52,7 +52,7 @@ class JavaWithForSurrounder extends JavaStatementsSurrounder{
return null;
}
PsiCodeBlock bodyBlock = ((PsiBlockStatement)body).getCodeBlock();
SurroundWithUtil.indentCommentIfNecessary(bodyBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(bodyBlock, statements);
bodyBlock.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
@@ -52,7 +52,7 @@ class JavaWithIfElseSurrounder extends JavaStatementsSurrounder{
return null;
}
PsiCodeBlock thenBlock = ((PsiBlockStatement)thenBranch).getCodeBlock();
SurroundWithUtil.indentCommentIfNecessary(thenBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(thenBlock, statements);
thenBlock.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
ifStatement = CodeInsightUtilBase.forcePsiPostprocessAndRestoreElement(ifStatement);
@@ -50,7 +50,7 @@ public class JavaWithIfSurrounder extends JavaStatementsSurrounder{
final PsiStatement thenBranch = ifStatement.getThenBranch();
if (thenBranch != null) {
PsiCodeBlock thenBlock = ((PsiBlockStatement)thenBranch).getCodeBlock();
SurroundWithUtil.indentCommentIfNecessary(thenBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(thenBlock, statements);
thenBlock.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
}
@@ -51,7 +51,7 @@ class JavaWithSynchronizedSurrounder extends JavaStatementsSurrounder{
if (synchronizedBlock == null) {
return null;
}
SurroundWithUtil.indentCommentIfNecessary(synchronizedBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(synchronizedBlock, statements);
synchronizedBlock.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
@@ -72,7 +72,7 @@ public class JavaWithTryCatchSurrounder extends JavaStatementsSurrounder {
tryStatement = (PsiTryStatement)container.addAfter(tryStatement, statements[statements.length - 1]);
PsiCodeBlock tryBlock = tryStatement.getTryBlock();
SurroundWithUtil.indentCommentIfNecessary(tryBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(tryBlock, statements);
tryBlock.addRange(statements[0], statements[statements.length - 1]);
PsiCatchSection[] catchSections = tryStatement.getCatchSections();
@@ -50,7 +50,7 @@ class JavaWithTryFinallySurrounder extends JavaStatementsSurrounder{
if (tryBlock == null) {
return null;
}
SurroundWithUtil.indentCommentIfNecessary(tryBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(tryBlock, statements);
tryBlock.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
@@ -51,7 +51,7 @@ class JavaWithWhileSurrounder extends JavaStatementsSurrounder{
return null;
}
PsiCodeBlock bodyBlock = ((PsiBlockStatement)body).getCodeBlock();
SurroundWithUtil.indentCommentIfNecessary(bodyBlock, statements, factory);
SurroundWithUtil.indentCommentIfNecessary(bodyBlock, statements);
bodyBlock.addRange(statements[0], statements[statements.length - 1]);
container.deleteChildRange(statements[0], statements[statements.length - 1]);
@@ -154,11 +154,8 @@ public class SurroundWithUtil {
*
* @param container code block that surrounds target statements
* @param statements target statements being surrounded
* @param factory factory to use for the new white space element construction
*/
public static void indentCommentIfNecessary(@NotNull PsiCodeBlock container, @Nullable PsiElement[] statements,
@NotNull PsiElementFactory factory)
{
public static void indentCommentIfNecessary(@NotNull PsiCodeBlock container, @Nullable PsiElement[] statements) {
if (statements == null || statements.length <= 0) {
return;
}
@@ -189,6 +186,7 @@ public class SurroundWithUtil {
PsiElement codeBlockWsElement = null;
ASTNode codeBlockWsNode = null;
boolean lbraceFound = false;
final PsiParserFacade parserFacade = PsiParserFacade.SERVICE.getInstance(container.getProject());
for (PsiElement codeBlockChild = container.getFirstChild(); codeBlockChild != null; codeBlockChild = codeBlockChild.getNextSibling()) {
ASTNode childNode = codeBlockChild.getNode();
if (childNode == null) {
@@ -227,11 +225,11 @@ public class SurroundWithUtil {
if (existingWhiteSpaceEndOffset < existingWhiteSpaceText.length()) {
newWsText = existingWhiteSpaceText.subSequence(0, existingWhiteSpaceEndOffset + 1).toString() + newWsText;
}
PsiElement indentElement = factory.createWhiteSpaceFromText(newWsText);
PsiElement indentElement = parserFacade.createWhiteSpaceFromText(newWsText);
codeBlockWsElement.replace(indentElement);
}
else {
PsiElement indentElement = factory.createWhiteSpaceFromText(text.subSequence(text.length() - indent, text.length()).toString());
PsiElement indentElement = parserFacade.createWhiteSpaceFromText(text.subSequence(text.length() - indent, text.length()).toString());
container.add(indentElement);
}
}
@@ -730,10 +730,6 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
return psiCatchSection;
}
private static void markGenerated(final PsiElement element) {
((TreeElement)element.getNode()).acceptTree(new GeneratedMarkerVisitor());
}
private static PsiImportStatementBase extractImport(final PsiJavaFile aFile, final boolean isStatic) {
final PsiImportList importList = aFile.getImportList();
assert importList != null : aFile;
@@ -281,7 +281,7 @@ public class PsiJavaParserFacadeImpl extends PsiParserFacadeImpl implements PsiJ
final PsiTypeElement element = createTypeElementFromText(text, context);
if (markAsCopy) {
((TreeElement)element.getNode()).acceptTree(new GeneratedMarkerVisitor());
markGenerated(element);
}
return element.getType();
}
@@ -344,7 +344,8 @@ public class PsiJavaParserFacadeImpl extends PsiParserFacadeImpl implements PsiJ
@NotNull
@Override
public PsiTypeParameter createTypeParameterFromText(@NotNull final String text, @Nullable final PsiElement context) throws IncorrectOperationException {
final DummyHolder holder = DummyHolderFactory.createHolder(myManager, new JavaDummyElement(text, TYPE_PARAMETER, level(context)), context);
final DummyHolder holder = DummyHolderFactory.createHolder(myManager, new JavaDummyElement(text, TYPE_PARAMETER, level(context)),
context);
final PsiElement element = SourceTreeToPsiMap.treeElementToPsi(holder.getTreeElement().getFirstChildNode());
if (!(element instanceof PsiTypeParameter)) {
throw new IncorrectOperationException("Incorrect type parameter \"" + text + "\".");
@@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable;
/**
* @author max
*/
public interface PsiJavaParserFacade extends PsiParserFacade {
public interface PsiJavaParserFacade {
/**
* Creates a JavaDoc tag from the specified text.
*
@@ -46,6 +46,7 @@ public class PsiParserFacadeImpl implements PsiParserFacade {
final FileElement holderElement = DummyHolderFactory.createHolder(myManager, null).getTreeElement();
final LeafElement newElement = ASTFactory.leaf(TokenType.WHITE_SPACE, holderElement.getCharTable().intern(text));
holderElement.rawAddChildren(newElement);
markGenerated(newElement.getPsi());
return newElement.getPsi();
}
@@ -99,4 +100,8 @@ public class PsiParserFacadeImpl implements PsiParserFacade {
return PsiFileFactory.getInstance(myManager.getProject()).createFileFromText(fileType, fileName, text, 0, text.length());
}
protected static void markGenerated(final PsiElement element) {
((TreeElement)element.getNode()).acceptTree(new GeneratedMarkerVisitor());
}
}
@@ -15,6 +15,7 @@
*/
package com.siyeh.ipp.comment;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.util.IncorrectOperationException;
@@ -32,11 +33,11 @@ public class ChangeToEndOfLineCommentIntention extends Intention {
public void processIntention(@NotNull PsiElement element)
throws IncorrectOperationException {
final PsiComment comment = (PsiComment)element;
final PsiManager manager = comment.getManager();
final CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(manager.getProject());
final Project project = comment.getProject();
final CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(project);
final PsiElement parent = comment.getParent();
assert parent != null;
final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
final String commentText = comment.getText();
final PsiElement whitespace = comment.getNextSibling();
final String text = commentText.substring(2, commentText.length() - 2);
@@ -47,8 +48,9 @@ public class ChangeToEndOfLineCommentIntention extends Intention {
parent);
parent.addAfter(nextComment, comment);
if (whitespace != null) {
final PsiElement newWhiteSpace =
factory.createWhiteSpaceFromText(whitespace.getText());
final PsiParserFacade parserFacade = PsiParserFacade.SERVICE.getInstance(project);
final PsiElement newWhiteSpace =
parserFacade.createWhiteSpaceFromText(whitespace.getText());
parent.addAfter(newWhiteSpace, comment);
}
}
@@ -90,7 +90,7 @@ public class SplitDeclarationAndInitializationIntention extends Intention {
// add some whitespace between the field and the class initializer
final PsiElement whitespace =
elementFactory.createWhiteSpaceFromText("\n");
PsiParserFacade.SERVICE.getInstance(project).createWhiteSpaceFromText("\n");
containingClass.addAfter(whitespace, field);
}
final PsiCodeBlock body = classInitializer.getBody();