mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Continue introducing interface ASTNode.
This commit is contained in:
@@ -3,6 +3,7 @@ package com.intellij.lang;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.UserDataHolder;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
@@ -11,10 +12,12 @@ import com.intellij.openapi.util.TextRange;
|
||||
* Time: 6:56:08 PM
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
public interface ASTNode {
|
||||
public interface ASTNode extends UserDataHolder {
|
||||
IElementType getElementType();
|
||||
|
||||
String getText();
|
||||
boolean textContains(char c);
|
||||
|
||||
int getStartOffset();
|
||||
int getTextLength();
|
||||
TextRange getTextRange();
|
||||
|
||||
@@ -40,22 +40,22 @@ import com.intellij.lang.ASTNode;
|
||||
|
||||
public class FormatterUtil {
|
||||
|
||||
public static String getWhiteSpaceBefore(TreeElement element) {
|
||||
TreeElement wsCandidate = getWsCandidate(element);
|
||||
public static String getWhiteSpaceBefore(ASTNode element) {
|
||||
ASTNode wsCandidate = getWsCandidate(element);
|
||||
final StringBuffer result = new StringBuffer();
|
||||
while (wsCandidate != null && isSpaceTextElement(wsCandidate)) {
|
||||
result.append(wsCandidate.getText());
|
||||
final TreeElement newValue = getWsCandidate(wsCandidate);
|
||||
final ASTNode newValue = getWsCandidate(wsCandidate);
|
||||
if (wsCandidate.getStartOffset() == newValue.getStartOffset()) break;
|
||||
wsCandidate = newValue;
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
private static TreeElement getWsCandidate(TreeElement element) {
|
||||
private static ASTNode getWsCandidate(ASTNode element) {
|
||||
if (element == null) return null;
|
||||
ASTNode treePrev = element.getTreePrev();
|
||||
if (treePrev != null) {
|
||||
TreeElement candidate = getLastChildOf(treePrev);
|
||||
ASTNode candidate = getLastChildOf(treePrev);
|
||||
if (candidate != null && isSpaceTextElement(candidate)) {
|
||||
return candidate;
|
||||
}
|
||||
@@ -66,7 +66,7 @@ public class FormatterUtil {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
final CompositeElement treeParent = element.getTreeParent();
|
||||
final ASTNode treeParent = element.getTreeParent();
|
||||
|
||||
if (treeParent == null || treeParent.getTreeParent() == null) {
|
||||
return element;
|
||||
@@ -75,17 +75,17 @@ public class FormatterUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private static TreeElement getLastChildOf(ASTNode element) {
|
||||
private static ASTNode getLastChildOf(ASTNode element) {
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
if (element instanceof LeafElement) {
|
||||
return (LeafElement)element;
|
||||
return element;
|
||||
}
|
||||
else {
|
||||
CompositeElement compositeElement = ((CompositeElement)element);
|
||||
ASTNode compositeElement = element;
|
||||
ChameleonTransforming.transformChildren(compositeElement);
|
||||
final ASTNode lastChild = compositeElement.lastChild;
|
||||
final ASTNode lastChild = compositeElement.getLastChildNode();
|
||||
if (lastChild == null) {
|
||||
return compositeElement;
|
||||
}
|
||||
@@ -110,17 +110,17 @@ public class FormatterUtil {
|
||||
whiteSpace.toCharArray(), 0, whiteSpace.length(),
|
||||
SharedImplUtil.findCharTableByTree(leafElement), null);
|
||||
|
||||
TreeElement treePrev = getWsCandidate(leafElement);
|
||||
ASTNode treePrev = getWsCandidate(leafElement);
|
||||
if (treePrev == null) {
|
||||
if (whiteSpace.length() > 0) {
|
||||
ChangeUtil.addChild(leafElement.getTreeParent(), whiteSpaceElement, leafElement);
|
||||
}
|
||||
} else if (!isSpaceTextElement(treePrev)) {
|
||||
ChangeUtil.addChild(treePrev.getTreeParent(), whiteSpaceElement, treePrev);
|
||||
ChangeUtil.addChild((CompositeElement)treePrev.getTreeParent(), whiteSpaceElement, (TreeElement)treePrev);
|
||||
} else if (!isWhiteSpaceElement(treePrev)){
|
||||
return getWhiteSpaceBefore(leafElement);
|
||||
} else {
|
||||
ChangeUtil.replaceChild(treePrev.getTreeParent(), treePrev, whiteSpaceElement);
|
||||
ChangeUtil.replaceChild((CompositeElement)treePrev.getTreeParent(), (TreeElement)treePrev, whiteSpaceElement);
|
||||
}
|
||||
|
||||
return getWhiteSpaceBefore(leafElement);
|
||||
|
||||
@@ -27,7 +27,6 @@ import com.intellij.psi.html.HtmlTag;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.GenericReference;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.xml.*;
|
||||
import com.intellij.xml.XmlAttributeDescriptor;
|
||||
import com.intellij.xml.XmlElementDescriptor;
|
||||
@@ -155,7 +154,7 @@ public class XmlHighlightVisitor extends PsiElementVisitor{
|
||||
if (currentElement!=null) {
|
||||
currentElement = SourceTreeToPsiMap.treeElementToPsi(
|
||||
XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild(
|
||||
(CompositeElement)SourceTreeToPsiMap.psiElementToTree(currentElement)
|
||||
SourceTreeToPsiMap.psiElementToTree(currentElement)
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -232,7 +231,7 @@ public class XmlHighlightVisitor extends PsiElementVisitor{
|
||||
List<HighlightInfo> result,
|
||||
HighlightInfoType type,
|
||||
IntentionAction quickFixAction) {
|
||||
final CompositeElement tagElement = (CompositeElement)SourceTreeToPsiMap.psiElementToTree(tag);
|
||||
final ASTNode tagElement = SourceTreeToPsiMap.psiElementToTree(tag);
|
||||
ASTNode childByRole = XmlChildRole.START_TAG_NAME_FINDER.findChild(tagElement);
|
||||
|
||||
if(childByRole != null) {
|
||||
@@ -396,7 +395,7 @@ public class XmlHighlightVisitor extends PsiElementVisitor{
|
||||
}
|
||||
|
||||
public void invoke(final Project project, final Editor editor, final PsiFile file) {
|
||||
CompositeElement treeElement = (CompositeElement)SourceTreeToPsiMap.psiElementToTree(tag);
|
||||
ASTNode treeElement = SourceTreeToPsiMap.psiElementToTree(tag);
|
||||
PsiElement anchor = SourceTreeToPsiMap.treeElementToPsi(
|
||||
XmlChildRole.EMPTY_TAG_END_FINDER.findChild(treeElement)
|
||||
);
|
||||
@@ -537,7 +536,7 @@ public class XmlHighlightVisitor extends PsiElementVisitor{
|
||||
if (attributeDescriptor == null) {
|
||||
myResult.add(HighlightInfo.createHighlightInfo(
|
||||
HighlightInfoType.WRONG_REF,
|
||||
XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(attribute)),
|
||||
XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild(SourceTreeToPsiMap.psiElementToTree(attribute)),
|
||||
"Attribute " + localName + " is not allowed here"));
|
||||
}
|
||||
else {
|
||||
@@ -548,7 +547,7 @@ public class XmlHighlightVisitor extends PsiElementVisitor{
|
||||
) {
|
||||
myResult.add(HighlightInfo.createHighlightInfo(
|
||||
HighlightInfoType.WRONG_REF,
|
||||
XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(attribute)),
|
||||
XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild(SourceTreeToPsiMap.psiElementToTree(attribute)),
|
||||
"Empty attribute " + localName + " is not allowed")
|
||||
);
|
||||
}
|
||||
@@ -565,7 +564,7 @@ public class XmlHighlightVisitor extends PsiElementVisitor{
|
||||
final String localName = attribute.getLocalName();
|
||||
myResult.add(HighlightInfo.createHighlightInfo(
|
||||
HighlightInfoType.WRONG_REF,
|
||||
XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(attribute)),
|
||||
XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild(SourceTreeToPsiMap.psiElementToTree(attribute)),
|
||||
"Duplicate attribute " + localName));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,11 @@ import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import com.intellij.psi.xml.*;
|
||||
import com.intellij.uiDesigner.compiler.CodeGenerator;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -194,7 +193,7 @@ class FoldingPolicy {
|
||||
return element.getTextRange();
|
||||
} else if (element instanceof XmlTag) {
|
||||
XmlTag tag = (XmlTag) element;
|
||||
TreeElement tagNameElement = XmlChildRole.START_TAG_NAME_FINDER.findChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(tag));
|
||||
ASTNode tagNameElement = XmlChildRole.START_TAG_NAME_FINDER.findChild(SourceTreeToPsiMap.psiElementToTree(tag));
|
||||
if (tagNameElement == null) return null;
|
||||
|
||||
int nameEnd = tagNameElement.getTextRange().getEndOffset();
|
||||
|
||||
@@ -62,8 +62,8 @@ public class DebugUtil {
|
||||
}
|
||||
buffer.append("\n");
|
||||
if (root instanceof CompositeElement){
|
||||
ChameleonTransforming.transformChildren((CompositeElement)root);
|
||||
ASTNode child = ((CompositeElement)root).firstChild;
|
||||
ChameleonTransforming.transformChildren(root);
|
||||
ASTNode child = root.getFirstChildNode();
|
||||
|
||||
if (child == null){
|
||||
for(int i = 0; i < indent + 2; i++){
|
||||
@@ -155,26 +155,26 @@ public class DebugUtil {
|
||||
}
|
||||
if (root instanceof CompositeElement) {
|
||||
synchronized (PsiLock.LOCK) {
|
||||
checkSubtree((CompositeElement)root);
|
||||
checkSubtree(root);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void checkSubtree(CompositeElement root) {
|
||||
if (root.firstChild == null){
|
||||
if (root.lastChild != null){
|
||||
private static void checkSubtree(ASTNode root) {
|
||||
if (root.getFirstChildNode() == null){
|
||||
if (root.getLastChildNode() != null){
|
||||
throw new IncorrectTreeStructureException(root, "firstChild == null, but lastChild != null");
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(ASTNode child = root.firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = root.getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
if (child instanceof CompositeElement){
|
||||
checkSubtree((CompositeElement)child);
|
||||
checkSubtree(child);
|
||||
}
|
||||
if (child.getTreeParent() != root){
|
||||
throw new IncorrectTreeStructureException(child, "child has wrong parent value");
|
||||
}
|
||||
if (child == root.firstChild){
|
||||
if (child == root.getFirstChildNode()){
|
||||
if (child.getTreePrev() != null){
|
||||
throw new IncorrectTreeStructureException(root, "firstChild.prev != null");
|
||||
}
|
||||
@@ -188,7 +188,7 @@ public class DebugUtil {
|
||||
}
|
||||
}
|
||||
if (child.getTreeNext() == null){
|
||||
if (root.lastChild != child){
|
||||
if (root.getLastChildNode() != child){
|
||||
throw new IncorrectTreeStructureException(child, "not last child has next == null");
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ public class DebugUtil {
|
||||
//LOG.debug("checked consistence: "+System.identityHashCode(element));
|
||||
}
|
||||
|
||||
public static void checkSameCharTabs(TreeElement element1, TreeElement element2) {
|
||||
public static void checkSameCharTabs(ASTNode element1, ASTNode element2) {
|
||||
final CharTable fromCharTab = SharedImplUtil.findCharTableByTree(element1);
|
||||
final CharTable toCharTab = SharedImplUtil.findCharTableByTree(element2);
|
||||
LOG.assertTrue(fromCharTab == toCharTab);
|
||||
|
||||
@@ -21,10 +21,10 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.smartPointers.SmartPointerManagerImpl;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.impl.source.text.BlockSupportImpl;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.text.BlockSupport;
|
||||
import com.intellij.util.concurrency.Semaphore;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.lang.ref.WeakReference;
|
||||
@@ -317,7 +317,7 @@ public class PsiDocumentManagerImpl extends PsiDocumentManager implements Projec
|
||||
mySmartPointerManager.synchronizePointers(file);
|
||||
}
|
||||
|
||||
CompositeElement treeElement = ((PsiFileImpl)file).calcTreeElement(); // Lock up in local variable so gc wont collect it.
|
||||
ASTNode treeElement = ((PsiFileImpl)file).calcTreeElement(); // Lock up in local variable so gc wont collect it.
|
||||
textBlock = getTextBlock(document);
|
||||
if (textBlock.isEmpty()) return; // if tree was just loaded above textBlock will be cleared by contentsLoaded
|
||||
|
||||
@@ -358,7 +358,7 @@ public class PsiDocumentManagerImpl extends PsiDocumentManager implements Projec
|
||||
myProcessDocumentEvents = processDocumentEvents;
|
||||
}
|
||||
|
||||
private final Key<CompositeElement> TEMP_TREE_IN_DOCUMENT_KEY = Key.create("TEMP_TREE_IN_DOCUMENT_KEY");
|
||||
private final Key<ASTNode> TEMP_TREE_IN_DOCUMENT_KEY = Key.create("TEMP_TREE_IN_DOCUMENT_KEY");
|
||||
|
||||
public void beforeDocumentChange(DocumentEvent event) {
|
||||
if (!myProcessDocumentEvents) return;
|
||||
|
||||
@@ -143,7 +143,7 @@ public class PsiElementFactoryImpl implements PsiElementFactory {
|
||||
}
|
||||
final CompositeElement treeElement = (CompositeElement)ChangeUtil.copyToElement(createTypeElement(type));
|
||||
new DummyHolder(myManager, treeElement, null);
|
||||
final ASTNode referenceChild = treeElement.firstChild;
|
||||
final ASTNode referenceChild = treeElement.getFirstChildNode();
|
||||
LOG.assertTrue(referenceChild.getElementType() == ElementType.JAVA_CODE_REFERENCE);
|
||||
return (PsiJavaCodeReferenceElement)SourceTreeToPsiMap.treeElementToPsi(referenceChild);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.psi.impl.source.PsiClassReferenceType;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.ElementType;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class ClsTypeElementImpl extends ClsElementImpl implements PsiTypeElement {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.compiled.ClsTypeImpl");
|
||||
@@ -80,7 +81,7 @@ public class ClsTypeElementImpl extends ClsElementImpl implements PsiTypeElement
|
||||
loadChild();
|
||||
|
||||
if (myChild != null) {
|
||||
myChild.setMirror(((CompositeElement) element).firstChild);
|
||||
myChild.setMirror((TreeElement)element.getFirstChildNode());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ public class LowLevelSearchUtil {
|
||||
PsiElementProcessorEx processor,
|
||||
TokenSet elementTypes, ProgressIndicator progress) {
|
||||
synchronized (PsiLock.LOCK) {
|
||||
ASTNode child = ((CompositeElement)scope).firstChild;
|
||||
ASTNode child = scope.getFirstChildNode();
|
||||
while (child != null) {
|
||||
if (child instanceof ChameleonElement) {
|
||||
LeafElement leaf = (LeafElement)child;
|
||||
@@ -116,17 +116,17 @@ public class LowLevelSearchUtil {
|
||||
}
|
||||
}
|
||||
|
||||
TreeElement child = null;
|
||||
ASTNode child = null;
|
||||
while (true) {
|
||||
synchronized (PsiLock.LOCK) {
|
||||
child = child != null ? child.getTreeNext() : ((CompositeElement)scope).firstChild;
|
||||
child = child != null ? child.getTreeNext() : scope.getFirstChildNode();
|
||||
while (child instanceof ChameleonElement) {
|
||||
child = child.getTreeNext();
|
||||
}
|
||||
if (child == null) break;
|
||||
}
|
||||
|
||||
if (!processElementsContainingWordInElement(processor, child, searcher, elementTypes, progress)) return false;
|
||||
if (!processElementsContainingWordInElement(processor, (TreeElement)child, searcher, elementTypes, progress)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -172,10 +172,10 @@ public class LowLevelSearchUtil {
|
||||
}
|
||||
|
||||
if (scope instanceof CompositeElement) {
|
||||
CompositeElement _scope = (CompositeElement)scope;
|
||||
ASTNode _scope = scope;
|
||||
ChameleonTransforming.transformChildren(_scope);
|
||||
|
||||
for (ASTNode child = _scope.firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = _scope.getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
if (!processIdentifiersBySet(processor, child, elementTypes, namesSet, progress)) return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.intellij.psi.impl.cache.RepositoryManager;
|
||||
import com.intellij.psi.impl.cache.impl.idCache.WordInfo;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.ElementType;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.jsp.*;
|
||||
@@ -903,9 +902,9 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
|
||||
final ArrayList<JspDirective> directives = new ArrayList<JspDirective>();
|
||||
PsiElementProcessorEx processor = new PsiElementProcessorEx() {
|
||||
public boolean execute(PsiElement element, int offsetInElement) {
|
||||
CompositeElement parent = (SourceTreeToPsiMap.psiElementToTree(element)).getTreeParent();
|
||||
ASTNode parent = (SourceTreeToPsiMap.psiElementToTree(element)).getTreeParent();
|
||||
if (parent.getElementType() == ElementType.JSP_FILE_REFERENCE) {
|
||||
CompositeElement pparent = parent.getTreeParent();
|
||||
ASTNode pparent = parent.getTreeParent();
|
||||
if (SourceTreeToPsiMap.treeElementToPsi(pparent) instanceof JspAttribute &&
|
||||
pparent.getTreeParent().getElementType() == ElementType.JSP_DIRECTIVE) {
|
||||
JspDirective directive = (JspDirective)SourceTreeToPsiMap.treeElementToPsi(pparent.getTreeParent());
|
||||
|
||||
@@ -9,11 +9,11 @@ import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.xml.XmlChildRole;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.psi.xml.XmlToken;
|
||||
import com.intellij.psi.xml.XmlTokenType;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
class SmartPsiElementPointerImpl implements SmartPointerEx {
|
||||
private static final Logger LOG = Logger.getInstance(
|
||||
@@ -123,7 +123,7 @@ class SmartPsiElementPointerImpl implements SmartPointerEx {
|
||||
anchor = ((PsiVariable)element).getNameIdentifier();
|
||||
}
|
||||
else if (element instanceof XmlTag) {
|
||||
anchor = SourceTreeToPsiMap.treeElementToPsi(XmlChildRole.START_TAG_NAME_FINDER.findChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(element)));
|
||||
anchor = SourceTreeToPsiMap.treeElementToPsi(XmlChildRole.START_TAG_NAME_FINDER.findChild(SourceTreeToPsiMap.psiElementToTree(element)));
|
||||
}
|
||||
return anchor;
|
||||
}
|
||||
|
||||
@@ -176,9 +176,9 @@ public class PsiClassImpl extends NonSlaveRepositoryPsiElement implements PsiCla
|
||||
}
|
||||
|
||||
public PsiElement getScope() {
|
||||
CompositeElement treeElement = getTreeElement();
|
||||
ASTNode treeElement = getTreeElement();
|
||||
if (treeElement != null){
|
||||
CompositeElement parent = treeElement.getTreeParent();
|
||||
ASTNode parent = treeElement.getTreeParent();
|
||||
while(true){
|
||||
if (parent instanceof RepositoryTreeElement){
|
||||
return SourceTreeToPsiMap.treeElementToPsi(parent);
|
||||
|
||||
@@ -319,7 +319,7 @@ public class PsiFieldImpl extends NonSlaveRepositoryPsiElement implements PsiFie
|
||||
public void normalizeDeclaration() throws IncorrectOperationException{
|
||||
CheckUtil.checkWritable(this);
|
||||
|
||||
TreeElement type = SourceTreeToPsiMap.psiElementToTree(getTypeElement());
|
||||
ASTNode type = SourceTreeToPsiMap.psiElementToTree(getTypeElement());
|
||||
ASTNode modifierList = SourceTreeToPsiMap.psiElementToTree(getModifierList());
|
||||
ASTNode field = type.getTreeParent();
|
||||
while(true){
|
||||
@@ -336,11 +336,11 @@ public class PsiFieldImpl extends NonSlaveRepositoryPsiElement implements PsiFie
|
||||
TreeElement typeClone = (TreeElement)type.clone();
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(type);
|
||||
typeClone.putUserData(CharTable.CHAR_TABLE_KEY, charTableByTree);
|
||||
CodeEditUtil.addChild((CompositeElement)nextField, typeClone, ((CompositeElement)nextField).firstChild);
|
||||
CodeEditUtil.addChild((CompositeElement)nextField, typeClone, (TreeElement)nextField.getFirstChildNode());
|
||||
|
||||
TreeElement modifierListClone = (TreeElement)modifierList.clone();
|
||||
modifierListClone.putUserData(CharTable.CHAR_TABLE_KEY, charTableByTree);
|
||||
CodeEditUtil.addChild((CompositeElement)nextField, modifierListClone, ((CompositeElement)nextField).firstChild);
|
||||
CodeEditUtil.addChild((CompositeElement)nextField, modifierListClone, (TreeElement)nextField.getFirstChildNode());
|
||||
|
||||
field = nextField;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.LocalTimeCounter;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public abstract class PsiFileImpl extends NonSlaveRepositoryPsiElement implements PsiFile, PsiFileEx {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.PsiFileImpl");
|
||||
@@ -105,7 +106,7 @@ public abstract class PsiFileImpl extends NonSlaveRepositoryPsiElement implement
|
||||
return myFile == null || myExplicitlySetAsPhysical;
|
||||
}
|
||||
|
||||
private CompositeElement _getTreeElement() {
|
||||
private ASTNode _getTreeElement() {
|
||||
return super.getTreeElement();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiManagerImpl;
|
||||
import com.intellij.psi.impl.cache.FileView;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.RepositoryTreeElement;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
@@ -128,7 +127,7 @@ public class PsiImportListImpl extends SlaveRepositoryPsiElement implements PsiI
|
||||
|
||||
private void calcRepositoryImports() {
|
||||
if (myRepositoryImports == null){
|
||||
CompositeElement treeElement = getTreeElement();
|
||||
ASTNode treeElement = getTreeElement();
|
||||
if (treeElement != null){
|
||||
final ASTNode[] imports = treeElement.getChildren(IMPORT_STATEMENT_BASE_BIT_SET);
|
||||
int count = imports.length;
|
||||
|
||||
@@ -56,16 +56,16 @@ public class PsiImportStaticReferenceElementImpl extends CompositePsiElement imp
|
||||
return null;
|
||||
|
||||
case ChildRole.REFERENCE_NAME:
|
||||
if (lastChild.getElementType() == IDENTIFIER){
|
||||
return lastChild;
|
||||
if (getLastChildNode().getElementType() == IDENTIFIER){
|
||||
return getLastChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
}
|
||||
|
||||
case ChildRole.QUALIFIER:
|
||||
if (firstChild.getElementType() == JAVA_CODE_REFERENCE){
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == JAVA_CODE_REFERENCE){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
|
||||
@@ -159,12 +159,12 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
|
||||
return null;
|
||||
|
||||
case ChildRole.REFERENCE_NAME:
|
||||
if (lastChild.getElementType() == IDENTIFIER){
|
||||
return lastChild;
|
||||
if (getLastChildNode().getElementType() == IDENTIFIER){
|
||||
return getLastChildNode();
|
||||
}
|
||||
else{
|
||||
if (lastChild.getElementType() == REFERENCE_PARAMETER_LIST){
|
||||
TreeElement current = lastChild.getTreePrev();
|
||||
if (getLastChildNode().getElementType() == REFERENCE_PARAMETER_LIST){
|
||||
ASTNode current = getLastChildNode().getTreePrev();
|
||||
while(current != null && WHITE_SPACE_OR_COMMENT_BIT_SET.isInSet(current.getElementType())){
|
||||
current = current.getTreePrev();
|
||||
}
|
||||
@@ -176,16 +176,16 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
|
||||
}
|
||||
|
||||
case ChildRole.REFERENCE_PARAMETER_LIST:
|
||||
if (lastChild.getElementType() == REFERENCE_PARAMETER_LIST){
|
||||
return lastChild;
|
||||
if (getLastChildNode().getElementType() == REFERENCE_PARAMETER_LIST){
|
||||
return getLastChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
}
|
||||
|
||||
case ChildRole.QUALIFIER:
|
||||
if (firstChild.getElementType() == JAVA_CODE_REFERENCE){
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == JAVA_CODE_REFERENCE){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
@@ -673,7 +673,7 @@ public class PsiJavaCodeReferenceElementImpl extends CompositePsiElement impleme
|
||||
}
|
||||
|
||||
public boolean isQualified() {
|
||||
return getChildRole(firstChild) != ChildRole.REFERENCE_NAME;
|
||||
return getChildRole(getFirstChildNode()) != ChildRole.REFERENCE_NAME;
|
||||
}
|
||||
|
||||
public ASTNode getTreeQualifier() {
|
||||
|
||||
@@ -162,7 +162,7 @@ public class PsiModifierListImpl extends SlaveRepositoryPsiElement implements Ps
|
||||
return !hasModifierProperty(PsiModifier.PUBLIC) && !hasModifierProperty(PsiModifier.PRIVATE) && !hasModifierProperty(PsiModifier.PROTECTED);
|
||||
}
|
||||
|
||||
CompositeElement treeElement = calcTreeElement();
|
||||
ASTNode treeElement = calcTreeElement();
|
||||
return TreeUtil.findChild(treeElement, type) != null;
|
||||
}
|
||||
else{
|
||||
@@ -182,7 +182,7 @@ public class PsiModifierListImpl extends SlaveRepositoryPsiElement implements Ps
|
||||
IElementType type = NAME_TO_KEYWORD_TYPE_MAP.get(name);
|
||||
|
||||
CompositeElement treeElement = calcTreeElement();
|
||||
CompositeElement parentTreeElement = treeElement.getTreeParent();
|
||||
ASTNode parentTreeElement = treeElement.getTreeParent();
|
||||
if (value){
|
||||
if (parentTreeElement.getElementType() == ElementType.FIELD && parentTreeElement.getTreeParent().getElementType() == ElementType.CLASS && ((PsiClass)SourceTreeToPsiMap.treeElementToPsi(parentTreeElement.getTreeParent())).isInterface()){
|
||||
if (type == PUBLIC_KEYWORD || type == STATIC_KEYWORD || type == FINAL_KEYWORD) return;
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.intellij.psi.impl.SharedPsiElementImplUtil;
|
||||
import com.intellij.psi.impl.source.tree.*;
|
||||
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class PsiParameterImpl extends IndexedRepositoryPsiElement implements PsiParameter {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.PsiParameterImpl");
|
||||
@@ -138,7 +139,7 @@ public class PsiParameterImpl extends IndexedRepositoryPsiElement implements Psi
|
||||
}
|
||||
|
||||
public boolean isVarArgs() {
|
||||
return TreeUtil.findChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(getTypeElement()), ELLIPSIS) != null;
|
||||
return TreeUtil.findChild(SourceTreeToPsiMap.psiElementToTree(getTypeElement()), ELLIPSIS) != null;
|
||||
}
|
||||
|
||||
public ItemPresentation getPresentation() {
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import com.intellij.util.PatchedSoftReference;
|
||||
import com.intellij.util.PatchedWeakReference;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
import java.lang.ref.Reference;
|
||||
|
||||
@@ -63,7 +64,7 @@ public final class PsiReferenceListImpl extends SlaveRepositoryPsiElement implem
|
||||
types = (PsiClassType[])(myRepositoryTypesRef == null ? null : myRepositoryTypesRef.get());
|
||||
if (types == null) {
|
||||
String[] refTexts;
|
||||
CompositeElement treeElement = getTreeElement();
|
||||
ASTNode treeElement = getTreeElement();
|
||||
final PsiElementFactory factory = getManager().getElementFactory();
|
||||
long repositoryId = getRepositoryId();
|
||||
if (treeElement == null && repositoryId > 0) {
|
||||
|
||||
@@ -35,17 +35,17 @@ public class PsiTypeElementImpl extends CompositePsiElement implements PsiTypeEl
|
||||
public PsiType getType() {
|
||||
if (myCachedType != null) return myCachedType;
|
||||
|
||||
if (firstChild.getTreeNext() == null && PRIMITIVE_TYPE_BIT_SET.isInSet(firstChild.getElementType())) {
|
||||
myCachedType = getManager().getElementFactory().createPrimitiveType(firstChild.getText());
|
||||
if (getFirstChildNode().getTreeNext() == null && PRIMITIVE_TYPE_BIT_SET.isInSet(getFirstChildNode().getElementType())) {
|
||||
myCachedType = getManager().getElementFactory().createPrimitiveType(getFirstChildNode().getText());
|
||||
}
|
||||
else if (firstChild.getElementType() == ElementType.TYPE) {
|
||||
PsiType componentType = ((PsiTypeElement)SourceTreeToPsiMap.treeElementToPsi(firstChild)).getType();
|
||||
myCachedType = lastChild.getElementType() == ElementType.ELLIPSIS ? new PsiEllipsisType(componentType) : componentType.createArrayType();
|
||||
else if (getFirstChildNode().getElementType() == ElementType.TYPE) {
|
||||
PsiType componentType = ((PsiTypeElement)SourceTreeToPsiMap.treeElementToPsi(getFirstChildNode())).getType();
|
||||
myCachedType = getLastChildNode().getElementType() == ElementType.ELLIPSIS ? new PsiEllipsisType(componentType) : componentType.createArrayType();
|
||||
}
|
||||
else if (firstChild.getElementType() == ElementType.JAVA_CODE_REFERENCE) {
|
||||
else if (getFirstChildNode().getElementType() == ElementType.JAVA_CODE_REFERENCE) {
|
||||
myCachedType = new PsiClassReferenceType(getReferenceElement());
|
||||
}
|
||||
else if (firstChild.getElementType() == ElementType.QUEST) {
|
||||
else if (getFirstChildNode().getElementType() == ElementType.QUEST) {
|
||||
PsiType temp = createWildcardType();
|
||||
myCachedType = temp;
|
||||
}
|
||||
@@ -66,13 +66,13 @@ public class PsiTypeElementImpl extends CompositePsiElement implements PsiTypeEl
|
||||
|
||||
private PsiType createWildcardType() {
|
||||
final PsiType temp;
|
||||
if (firstChild.getTreeNext() == null) {
|
||||
if (getFirstChildNode().getTreeNext() == null) {
|
||||
temp = PsiWildcardType.createUnbounded(getManager());
|
||||
}
|
||||
else {
|
||||
if (lastChild.getElementType() == TYPE) {
|
||||
PsiTypeElement bound = (PsiTypeElement)SourceTreeToPsiMap.treeElementToPsi(lastChild);
|
||||
ASTNode keyword = firstChild;
|
||||
if (getLastChildNode().getElementType() == TYPE) {
|
||||
PsiTypeElement bound = (PsiTypeElement)SourceTreeToPsiMap.treeElementToPsi(getLastChildNode());
|
||||
ASTNode keyword = getFirstChildNode();
|
||||
while(keyword != null && (keyword.getElementType() != EXTENDS_KEYWORD && keyword.getElementType() != SUPER_KEYWORD)) {
|
||||
keyword = keyword.getTreeNext();
|
||||
}
|
||||
@@ -100,16 +100,16 @@ public class PsiTypeElementImpl extends CompositePsiElement implements PsiTypeEl
|
||||
}
|
||||
|
||||
public PsiJavaCodeReferenceElement getInnermostComponentReferenceElement() {
|
||||
if (firstChild.getElementType() == ElementType.TYPE) {
|
||||
return ((PsiTypeElement)SourceTreeToPsiMap.treeElementToPsi(firstChild)).getInnermostComponentReferenceElement();
|
||||
if (getFirstChildNode().getElementType() == ElementType.TYPE) {
|
||||
return ((PsiTypeElement)SourceTreeToPsiMap.treeElementToPsi(getFirstChildNode())).getInnermostComponentReferenceElement();
|
||||
} else {
|
||||
return getReferenceElement();
|
||||
}
|
||||
}
|
||||
|
||||
private PsiJavaCodeReferenceElement getReferenceElement() {
|
||||
if (firstChild.getElementType() != ElementType.JAVA_CODE_REFERENCE) return null;
|
||||
return (PsiJavaCodeReferenceElement)SourceTreeToPsiMap.treeElementToPsi(firstChild);
|
||||
if (getFirstChildNode().getElementType() != ElementType.JAVA_CODE_REFERENCE) return null;
|
||||
return (PsiJavaCodeReferenceElement)SourceTreeToPsiMap.treeElementToPsi(getFirstChildNode());
|
||||
}
|
||||
|
||||
public boolean processDeclarations(PsiScopeProcessor processor, PsiSubstitutor substitutor, PsiElement lastParent, PsiElement place){
|
||||
|
||||
@@ -23,7 +23,7 @@ public class CodeEditUtil {
|
||||
return addChildren(parent, child, child, anchorBefore);
|
||||
}
|
||||
|
||||
public static TreeElement addChildren(CompositeElement parent, TreeElement first, TreeElement last, TreeElement anchorBefore) {
|
||||
public static TreeElement addChildren(CompositeElement parent, TreeElement first, ASTNode last, TreeElement anchorBefore) {
|
||||
final Project project = parent.getManager().getProject();
|
||||
final PsiFile file = SourceTreeToPsiMap.treeElementToPsi(parent).getContainingFile();
|
||||
FileType fileType = file.getFileType();
|
||||
@@ -56,7 +56,7 @@ public class CodeEditUtil {
|
||||
|
||||
if(fileType == StdFileTypes.XHTML) return first;
|
||||
if (adjustSelf){
|
||||
TreeElement elementBefore = (TreeElement)Helper.shiftBackwardToNonSpace(parent.getTreePrev());
|
||||
ASTNode elementBefore = Helper.shiftBackwardToNonSpace(parent.getTreePrev());
|
||||
parent = (CompositeElement)codeLayouter.processSpace(elementBefore, parent);
|
||||
parent = (CompositeElement)indentAdjuster.adjustFirstLineIndent(parent);
|
||||
ASTNode elementAfter = Helper.shiftForwardToNonSpace(parent.getTreeNext());
|
||||
@@ -66,14 +66,14 @@ public class CodeEditUtil {
|
||||
}
|
||||
}
|
||||
|
||||
TreeElement elementBefore = (TreeElement)Helper.shiftBackwardToNonSpace(first.getTreePrev());
|
||||
ASTNode elementBefore = Helper.shiftBackwardToNonSpace(first.getTreePrev());
|
||||
if (needSeparateLines(first) && helper.getLineBreakCount(parent, elementBefore, first) == 0){
|
||||
helper.makeVerticalSpace(parent, elementBefore, first, 0);
|
||||
}
|
||||
first = (TreeElement)codeLayouter.processSpace(elementBefore, first);// special mode?
|
||||
|
||||
// restore old indent of the first line
|
||||
TreeElement prev = (TreeElement)Helper.shiftBackwardToNonSpace(first.getTreePrev());
|
||||
ASTNode prev = Helper.shiftBackwardToNonSpace(first.getTreePrev());
|
||||
String spaceText = Helper.getSpaceText(parent, prev, first);
|
||||
int index = Math.max(spaceText.lastIndexOf('\n'), spaceText.lastIndexOf('\r'));
|
||||
if (index >= 0
|
||||
@@ -96,15 +96,15 @@ public class CodeEditUtil {
|
||||
}
|
||||
|
||||
afterLast = last.getTreeNext();
|
||||
for(TreeElement child = first; child != afterLast; child = child.getTreeNext()){
|
||||
child = (TreeElement)indentAdjuster.adjustNormalizeIndent(child);
|
||||
for(ASTNode child = first; child != afterLast; child = child.getTreeNext()){
|
||||
child = indentAdjuster.adjustNormalizeIndent(child);
|
||||
if (child.getElementType() == ElementType.CODE_BLOCK){
|
||||
PsiElement[] children = SourceTreeToPsiMap.treeElementToPsi(child).getChildren();
|
||||
for(int i = 0; i < children.length; i++){
|
||||
PsiElement element = children[i];
|
||||
TreeElement child1 = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
ASTNode child1 = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
if (Helper.isNonSpace(child1)){
|
||||
child1 = (TreeElement)indentAdjuster.adjustIndent(child1);
|
||||
child1 = indentAdjuster.adjustIndent(child1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,7 +117,7 @@ public class CodeEditUtil {
|
||||
removeChildren(parent, child, child);
|
||||
}
|
||||
|
||||
public static void removeChildren(CompositeElement parent, TreeElement first, TreeElement last) {
|
||||
public static void removeChildren(CompositeElement parent, TreeElement first, ASTNode last) {
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(parent);
|
||||
final PsiManager manager = parent.getManager();
|
||||
final Project project = manager.getProject();
|
||||
@@ -129,9 +129,9 @@ public class CodeEditUtil {
|
||||
CodeFormatterFacade codeLayouter = new CodeFormatterFacade(settings, helper);
|
||||
IndentAdjusterFacade indentAdjuster = new IndentAdjusterFacade(settings, helper);
|
||||
|
||||
TreeElement prev = first.getTreePrev();
|
||||
TreeElement next = last.getTreeNext();
|
||||
TreeElement prevNonSpace = (TreeElement)Helper.shiftBackwardToNonSpace(prev);
|
||||
ASTNode prev = first.getTreePrev();
|
||||
ASTNode next = last.getTreeNext();
|
||||
ASTNode prevNonSpace = Helper.shiftBackwardToNonSpace(prev);
|
||||
ASTNode nextNonSpace = Helper.shiftForwardToNonSpace(next);
|
||||
TreeElement spaceBefore = Helper.getSpaceElement(parent, prevNonSpace, first);
|
||||
TreeElement spaceAfter = Helper.getSpaceElement(parent, last, nextNonSpace);
|
||||
@@ -151,9 +151,9 @@ public class CodeEditUtil {
|
||||
ChangeUtil.removeChild(parent, spaceAfter);
|
||||
}
|
||||
LOG.assertTrue(parent.getTextLength() == 0);
|
||||
TreeElement elementBefore = (TreeElement)Helper.shiftBackwardToNonSpace(parent.getTreePrev());
|
||||
ASTNode elementBefore = Helper.shiftBackwardToNonSpace(parent.getTreePrev());
|
||||
ASTNode elementAfter = Helper.shiftForwardToNonSpace(parent.getTreeNext());
|
||||
normalizeSpace(helper, parent.getTreeParent(), elementBefore, (TreeElement)elementAfter, charTableByTree);
|
||||
normalizeSpace(helper, parent.getTreeParent(), elementBefore, elementAfter, charTableByTree);
|
||||
elementAfter = codeLayouter.processSpace(elementBefore, elementAfter);
|
||||
if (elementAfter != null){
|
||||
elementAfter = indentAdjuster.adjustFirstLineIndent(elementAfter);
|
||||
@@ -164,7 +164,7 @@ public class CodeEditUtil {
|
||||
int breaksBefore = spaceBefore != null ? StringUtil.getLineBreakCount(spaceBefore.getText()) : 0;
|
||||
int breaksAfter = spaceAfter != null ? StringUtil.getLineBreakCount(spaceAfter.getText()) : 0;
|
||||
|
||||
normalizeSpace(helper, parent, prevNonSpace, (TreeElement)nextNonSpace, charTableByTree);
|
||||
normalizeSpace(helper, parent, prevNonSpace, nextNonSpace, charTableByTree);
|
||||
|
||||
int newBreaks = Math.max(breaksBefore, breaksAfter);
|
||||
if (newBreaks != breaksBefore + breaksAfter){
|
||||
@@ -194,8 +194,8 @@ public class CodeEditUtil {
|
||||
ChangeUtil.replaceChild(parent, oldChild, newChild);
|
||||
if(fileType == StdFileTypes.XHTML) return newChild;
|
||||
|
||||
TreeElement prevNonSpace = (TreeElement)Helper.shiftBackwardToNonSpace(newChild.getTreePrev());
|
||||
TreeElement nextNonSpace = (TreeElement)Helper.shiftForwardToNonSpace(newChild.getTreeNext());
|
||||
ASTNode prevNonSpace = Helper.shiftBackwardToNonSpace(newChild.getTreePrev());
|
||||
ASTNode nextNonSpace = Helper.shiftForwardToNonSpace(newChild.getTreeNext());
|
||||
|
||||
if (newChild instanceof CompositeElement && newChild.getTextLength() == 0){
|
||||
normalizeSpace(helper, parent, prevNonSpace, nextNonSpace, treeCharTab);
|
||||
@@ -267,10 +267,10 @@ public class CodeEditUtil {
|
||||
ourModifierToOrderMap.put(PsiModifier.STRICTFP, new Integer(6));
|
||||
}
|
||||
|
||||
public static TreeElement getDefaultAnchor(PsiModifierList modifierList, PsiKeyword modifier) {
|
||||
public static ASTNode getDefaultAnchor(PsiModifierList modifierList, PsiKeyword modifier) {
|
||||
Integer order = (Integer)ourModifierToOrderMap.get(modifier.getText());
|
||||
if (order == null) return null;
|
||||
for(TreeElement child = ((CompositeElement)SourceTreeToPsiMap.psiElementToTree(modifierList)).firstChild;
|
||||
for(ASTNode child = SourceTreeToPsiMap.psiElementToTree(modifierList).getFirstChildNode();
|
||||
child != null;
|
||||
child = child.getTreeNext()){
|
||||
if (ElementType.KEYWORD_BIT_SET.isInSet(child.getElementType())){
|
||||
@@ -366,11 +366,11 @@ public class CodeEditUtil {
|
||||
}
|
||||
*/
|
||||
|
||||
public static void normalizeSpace(Helper helper, CompositeElement parent, TreeElement child1, TreeElement child2, CharTable table) {
|
||||
public static void normalizeSpace(Helper helper, CompositeElement parent, ASTNode child1, ASTNode child2, CharTable table) {
|
||||
StringBuffer buffer = null;
|
||||
int count = 0;
|
||||
for(ASTNode child = child1 != null ? child1.getTreeNext() : parent.firstChild; child != child2; child = child.getTreeNext()){
|
||||
if (child instanceof CompositeElement && ((CompositeElement)child).firstChild == null) continue;
|
||||
for(ASTNode child = child1 != null ? child1.getTreeNext() : parent.getFirstChildNode(); child != child2; child = child.getTreeNext()){
|
||||
if (child instanceof CompositeElement && child.getFirstChildNode() == null) continue;
|
||||
|
||||
if (Helper.isNonSpace(child)) {
|
||||
LOG.error("Whitespace expected");
|
||||
@@ -385,15 +385,15 @@ public class CodeEditUtil {
|
||||
if (count > 1){
|
||||
LeafElement newSpace = Factory.createSingleLeafElement(JavaTokenType.WHITE_SPACE, buffer.toString().toCharArray(), 0, buffer.length(), table, null);
|
||||
count = 0;
|
||||
TreeElement next;
|
||||
for(TreeElement child = child1 != null ? child1.getTreeNext() : parent.firstChild; child != child2; child = next){
|
||||
ASTNode next;
|
||||
for(ASTNode child = child1 != null ? child1.getTreeNext() : parent.getFirstChildNode(); child != child2; child = next){
|
||||
next = child.getTreeNext();
|
||||
if (child instanceof CompositeElement && child.getTextLength() == 0) continue;
|
||||
if (count == 0){
|
||||
ChangeUtil.replaceChild(parent, child, newSpace);
|
||||
ChangeUtil.replaceChild(parent, (TreeElement)child, newSpace);
|
||||
}
|
||||
else{
|
||||
ChangeUtil.removeChild(parent, child);
|
||||
ChangeUtil.removeChild(parent, (TreeElement)child);
|
||||
}
|
||||
count++;
|
||||
}
|
||||
@@ -406,7 +406,7 @@ public class CodeEditUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getWhiteSpaceBetweenTokens(LeafElement first, LeafElement second) {
|
||||
public static String getWhiteSpaceBetweenTokens(ASTNode first, ASTNode second) {
|
||||
final PsiElement firstAsPsiElement = SourceTreeToPsiMap.treeElementToPsi(first);
|
||||
LOG.assertTrue(firstAsPsiElement != null);
|
||||
final PsiFile file = firstAsPsiElement.getContainingFile();
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.intellij.psi.impl.source.codeStyle.java.JavaCodeFormatter;
|
||||
import com.intellij.psi.impl.source.codeStyle.javadoc.CommentFormatter;
|
||||
import com.intellij.psi.impl.source.parsing.ChameleonTransforming;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -58,7 +57,7 @@ public class CodeFormatterFacade implements Constants {
|
||||
}
|
||||
|
||||
if (element instanceof CompositeElement) {
|
||||
for (TreeElement elem = ((CompositeElement)element).firstChild; elem != null; elem = elem.getTreeNext()) {
|
||||
for (ASTNode elem = element.getFirstChildNode(); elem != null; elem = elem.getTreeNext()) {
|
||||
formatComments(elem, startOffset, endOffset);
|
||||
}
|
||||
}
|
||||
@@ -75,11 +74,11 @@ public class CodeFormatterFacade implements Constants {
|
||||
}
|
||||
|
||||
if (element instanceof CompositeElement) {
|
||||
CompositeElement parent = (CompositeElement)element;
|
||||
ASTNode parent = element;
|
||||
ChameleonTransforming.transformChildren(parent);
|
||||
|
||||
child1 = null;
|
||||
child2 = Helper.shiftForwardToNonSpace(parent.firstChild);
|
||||
child2 = Helper.shiftForwardToNonSpace(parent.getFirstChildNode());
|
||||
int indent = -1;
|
||||
for (; child2 != null; child1 = child2, child2 = Helper.shiftForwardToNonSpace(child2.getTreeNext())) {
|
||||
if (child1 != null || SourceTreeToPsiMap.treeElementToPsi(parent) instanceof PsiFile) {
|
||||
@@ -100,7 +99,7 @@ public class CodeFormatterFacade implements Constants {
|
||||
myCommentFormatter.process(element);
|
||||
|
||||
indent = -1;
|
||||
for (ASTNode child = ((CompositeElement)element).firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = element.getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
if (indent < 0) indent = myIndentAdjuster.calculateIndent(child, -1);
|
||||
child = process(child, indent);
|
||||
}
|
||||
@@ -138,11 +137,11 @@ public class CodeFormatterFacade implements Constants {
|
||||
|
||||
private ASTNode processRange(ASTNode element, int[] bounds) {
|
||||
if (element instanceof CompositeElement) {
|
||||
CompositeElement parent = (CompositeElement)element;
|
||||
ASTNode parent = element;
|
||||
ChameleonTransforming.transformChildren(parent);
|
||||
|
||||
child1 = null;
|
||||
child2 = Helper.shiftForwardToNonSpace(parent.firstChild);
|
||||
child2 = Helper.shiftForwardToNonSpace(parent.getFirstChildNode());
|
||||
int child1Offset = 0;
|
||||
int child2Offset;
|
||||
for (;
|
||||
@@ -151,7 +150,7 @@ public class CodeFormatterFacade implements Constants {
|
||||
int length1 = child1 != null ? child1.getTextLength() : 0;
|
||||
int length2 = child2.getTextLength();
|
||||
child2Offset = child1Offset + length1;
|
||||
for (ASTNode child = child1 != null ? child1.getTreeNext() : parent.firstChild;
|
||||
for (ASTNode child = child1 != null ? child1.getTreeNext() : parent.getFirstChildNode();
|
||||
child != child2;
|
||||
child = child.getTreeNext()) {
|
||||
child2Offset += child.getTextLength();
|
||||
@@ -164,7 +163,7 @@ public class CodeFormatterFacade implements Constants {
|
||||
if (child1 != null && child2 != null) {
|
||||
child2 = myCodeFormatter.format(SourceTreeToPsiMap.treeElementToPsi(parent), child1, child2, mySettings, myHelper);
|
||||
child2Offset = child1Offset + length1;
|
||||
for (ASTNode child = child1 != null ? child1.getTreeNext() : parent.firstChild;
|
||||
for (ASTNode child = child1 != null ? child1.getTreeNext() : parent.getFirstChildNode();
|
||||
child != child2;
|
||||
child = child.getTreeNext()) {
|
||||
child2Offset += child.getTextLength();
|
||||
@@ -187,7 +186,7 @@ public class CodeFormatterFacade implements Constants {
|
||||
SourceTreeToPsiMap.psiElementToTree(myBraceEnforcer.process(SourceTreeToPsiMap.treeElementToPsi(child2)));
|
||||
child2 = myCommentFormatter.formatComment(child2);
|
||||
child2Offset = child1Offset + length1;
|
||||
for (ASTNode child = child1 != null ? child1.getTreeNext() : parent.firstChild;
|
||||
for (ASTNode child = child1 != null ? child1.getTreeNext() : parent.getFirstChildNode();
|
||||
child != child2;
|
||||
child = child.getTreeNext()) {
|
||||
child2Offset += child.getTextLength();
|
||||
@@ -198,7 +197,7 @@ public class CodeFormatterFacade implements Constants {
|
||||
}
|
||||
|
||||
int offset = 0;
|
||||
for (ASTNode child = ((CompositeElement)element).firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = element.getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
//Diagnostic.assertTrue(offset == child.getStartOffsetInParent());
|
||||
int offset1 = offset;
|
||||
int offset2 = offset + child.getTextLength();
|
||||
@@ -226,8 +225,8 @@ public class CodeFormatterFacade implements Constants {
|
||||
}
|
||||
child2 = myCodeFormatter.format(SourceTreeToPsiMap.treeElementToPsi(parent), child1, child2, mySettings, myHelper);
|
||||
if (child1 != null && child1.getElementType() == END_OF_LINE_COMMENT) {
|
||||
if (myHelper.getLineBreakCount((CompositeElement)parent, child1, child2) == 0) {
|
||||
myHelper.makeVerticalSpace((CompositeElement)parent, child1, child2, 0);
|
||||
if (myHelper.getLineBreakCount(parent, child1, child2) == 0) {
|
||||
myHelper.makeVerticalSpace(parent, child1, child2, 0);
|
||||
}
|
||||
}
|
||||
return child2;
|
||||
|
||||
@@ -62,9 +62,9 @@ public class CodeStyleManagerImpl extends CodeStyleManagerEx implements ProjectC
|
||||
CheckUtil.checkWritable(element);
|
||||
if (!SourceTreeToPsiMap.hasTreeElement(element)) return element;
|
||||
|
||||
TreeElement treeElement = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
ASTNode treeElement = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
if (treeElement instanceof CompositeElement) {
|
||||
ChameleonTransforming.transformChildren((CompositeElement)treeElement, true); // optimization : parse all first
|
||||
ChameleonTransforming.transformChildren(treeElement, true); // optimization : parse all first
|
||||
}
|
||||
PsiFileImpl file = (PsiFileImpl)element.getContainingFile();
|
||||
FileType fileType = StdFileTypes.JAVA;
|
||||
@@ -82,9 +82,9 @@ public class CodeStyleManagerImpl extends CodeStyleManagerEx implements ProjectC
|
||||
CheckUtil.checkWritable(element);
|
||||
if (!SourceTreeToPsiMap.hasTreeElement(element)) return element;
|
||||
|
||||
TreeElement treeElement = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
ASTNode treeElement = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
if (treeElement instanceof CompositeElement) {
|
||||
ChameleonTransforming.transformChildren((CompositeElement)treeElement, true); // optimization : parse all first
|
||||
ChameleonTransforming.transformChildren(treeElement, true); // optimization : parse all first
|
||||
}
|
||||
FileType fileType = StdFileTypes.JAVA;
|
||||
PsiFile file = element.getContainingFile();
|
||||
@@ -241,14 +241,14 @@ public class CodeStyleManagerImpl extends CodeStyleManagerEx implements ProjectC
|
||||
// trick to reduce number of PsiTreeChangeEvent's (Enter action optimization)
|
||||
final boolean physical = file.isPhysical();
|
||||
CompositeElement parent;
|
||||
TreeElement newSpace;
|
||||
ASTNode newSpace;
|
||||
try {
|
||||
((PsiFileImpl)file).setIsPhysicalExplicitly(false);
|
||||
|
||||
int spaceStart = element.getTextRange().getStartOffset();
|
||||
parent = element.getTreeParent();
|
||||
TreeElement prev = element.getTreePrev();
|
||||
TreeElement next = element.getTreeNext();
|
||||
ASTNode prev = element.getTreePrev();
|
||||
ASTNode next = element.getTreeNext();
|
||||
ASTNode space1 = Helper.splitSpaceElement(element, end - spaceStart, charTable);
|
||||
TreeElement tempElement = Factory.createSingleLeafElement(
|
||||
ElementType.NEW_LINE_INDENT, "###".toCharArray(), 0,
|
||||
@@ -259,15 +259,15 @@ public class CodeStyleManagerImpl extends CodeStyleManagerEx implements ProjectC
|
||||
ChangeUtil.removeChild(parent, tempElement);
|
||||
CodeEditUtil.normalizeSpace(helper, parent, prev, next, charTable);
|
||||
|
||||
newSpace = prev != null ? prev.getTreeNext() : parent.firstChild;
|
||||
newSpace = prev != null ? prev.getTreeNext() : parent.getFirstChildNode();
|
||||
LOG.assertTrue(newSpace.getElementType() == ElementType.WHITE_SPACE);
|
||||
ChangeUtil.replaceChild(parent, newSpace, element);
|
||||
ChangeUtil.replaceChild(parent, (TreeElement)newSpace, element);
|
||||
}
|
||||
finally {
|
||||
((PsiFileImpl)file).setIsPhysicalExplicitly(physical);
|
||||
}
|
||||
|
||||
ChangeUtil.replaceChild(parent, element, newSpace);
|
||||
ChangeUtil.replaceChild(parent, element, (TreeElement)newSpace);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
@@ -63,9 +63,9 @@ public class Helper {
|
||||
|
||||
private int getStartOffset(ASTNode root, ASTNode child) {
|
||||
if (child == root) return 0;
|
||||
CompositeElement parent = (CompositeElement)child.getTreeParent();
|
||||
ASTNode parent = child.getTreeParent();
|
||||
int offset = 0;
|
||||
for (ASTNode child1 = parent.firstChild; child1 != child; child1 = child1.getTreeNext()) {
|
||||
for (ASTNode child1 = parent.getFirstChildNode(); child1 != child; child1 = child1.getTreeNext()) {
|
||||
offset += child1.getTextLength();
|
||||
}
|
||||
return getStartOffset(root, parent) + offset;
|
||||
@@ -93,10 +93,10 @@ public class Helper {
|
||||
public ASTNode getPrevWhitespace(final ASTNode element) {
|
||||
if (element.getTreePrev() != null) {
|
||||
ASTNode prev = element.getTreePrev();
|
||||
CompositeElement lastCompositePrev;
|
||||
ASTNode lastCompositePrev;
|
||||
while (prev instanceof CompositeElement) {
|
||||
lastCompositePrev = (CompositeElement)prev;
|
||||
prev = ((CompositeElement)prev).lastChild;
|
||||
lastCompositePrev = prev;
|
||||
prev = prev.getLastChildNode();
|
||||
if (prev == null) { // element.prev is "empty composite"
|
||||
return getPrevWhitespace(lastCompositePrev);
|
||||
}
|
||||
@@ -117,10 +117,10 @@ public class Helper {
|
||||
public int getIndent(final ASTNode element, boolean includeNonSpace) {
|
||||
if (element.getTreePrev() != null) {
|
||||
ASTNode prev = element.getTreePrev();
|
||||
CompositeElement lastCompositePrev;
|
||||
ASTNode lastCompositePrev;
|
||||
while (prev instanceof CompositeElement && !(prev instanceof XmlText)) {
|
||||
lastCompositePrev = (CompositeElement)prev;
|
||||
prev = ((CompositeElement)prev).lastChild;
|
||||
lastCompositePrev = prev;
|
||||
prev = prev.getLastChildNode();
|
||||
if (prev == null) { // element.prev is "empty composite"
|
||||
return getIndent(lastCompositePrev, includeNonSpace);
|
||||
}
|
||||
@@ -272,11 +272,11 @@ public class Helper {
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
||||
public ASTNode makeHorizontalSpace(CompositeElement parent, ASTNode child1, ASTNode child2, int size) {
|
||||
public ASTNode makeHorizontalSpace(ASTNode parent, ASTNode child1, ASTNode child2, int size) {
|
||||
return makeHorizontalSpace(parent, child1, child2, size, true);
|
||||
}
|
||||
|
||||
public ASTNode makeHorizontalSpace(CompositeElement parent,
|
||||
public ASTNode makeHorizontalSpace(ASTNode parent,
|
||||
ASTNode child1,
|
||||
ASTNode child2,
|
||||
int size,
|
||||
@@ -297,7 +297,7 @@ public class Helper {
|
||||
}
|
||||
ASTNode leaf = child1;
|
||||
if (child1 instanceof CompositeElement) {
|
||||
ChameleonTransforming.transformChildren((CompositeElement)child1, true);
|
||||
ChameleonTransforming.transformChildren(child1, true);
|
||||
leaf = TreeUtil.findLastLeaf(child1);
|
||||
}
|
||||
if (leaf != null && leaf.getElementType() == ElementType.END_OF_LINE_COMMENT) {
|
||||
@@ -347,11 +347,11 @@ public class Helper {
|
||||
return len;
|
||||
}
|
||||
|
||||
public ASTNode makeVerticalSpace(CompositeElement parent, ASTNode child1, ASTNode child2, int size) {
|
||||
public ASTNode makeVerticalSpace(ASTNode parent, ASTNode child1, ASTNode child2, int size) {
|
||||
return makeVerticalSpace(parent, child1, child2, size, true);
|
||||
}
|
||||
|
||||
private ASTNode makeVerticalSpace(CompositeElement parent,
|
||||
private ASTNode makeVerticalSpace(ASTNode parent,
|
||||
ASTNode child1,
|
||||
ASTNode child2,
|
||||
int size,
|
||||
@@ -376,7 +376,7 @@ public class Helper {
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
||||
public static String getSpaceText(ASTNode parent, ASTNode child1, ASTNode child2) {
|
||||
final LeafElement spaceElement = getSpaceElement(parent, child1, child2);
|
||||
final ASTNode spaceElement = getSpaceElement(parent, child1, child2);
|
||||
return spaceElement != null ? spaceElement.getText() : "";
|
||||
}
|
||||
|
||||
@@ -406,7 +406,7 @@ public class Helper {
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
||||
public int getLineBreakCount(CompositeElement parent, ASTNode child1, ASTNode child2) {
|
||||
public int getLineBreakCount(ASTNode parent, ASTNode child1, ASTNode child2) {
|
||||
return StringUtil.getLineBreakCount(getSpaceText(parent, child1, child2));
|
||||
}
|
||||
|
||||
@@ -436,7 +436,7 @@ public class Helper {
|
||||
String text,
|
||||
boolean indentMultiline) {
|
||||
LeafElement space = getSpaceElement(parent, child1, child2);
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree((TreeElement)parent);
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(parent);
|
||||
int indentShift;
|
||||
if (space == null) {
|
||||
if (text.length() == 0) return child2;
|
||||
@@ -478,8 +478,8 @@ public class Helper {
|
||||
}
|
||||
|
||||
public boolean canStickChildrenTogether(ASTNode child1, ASTNode child2) {
|
||||
LeafElement token1 = TreeUtil.findLastLeaf(child1);
|
||||
LeafElement token2 = TreeUtil.findFirstLeaf(child2);
|
||||
ASTNode token1 = TreeUtil.findLastLeaf(child1);
|
||||
ASTNode token2 = TreeUtil.findFirstLeaf(child2);
|
||||
LOG.assertTrue(token1 != null);
|
||||
LOG.assertTrue(token2 != null);
|
||||
if (token1.getElementType() instanceof IJavaElementType && token2.getElementType() instanceof IJavaElementType) {
|
||||
@@ -513,7 +513,7 @@ public class Helper {
|
||||
return res.booleanValue();
|
||||
}
|
||||
|
||||
public TreeElement normalizeIndent( final TreeElement dst ) {
|
||||
public ASTNode normalizeIndent( final ASTNode dst ) {
|
||||
if( !(dst instanceof CompositeElement) ) return dst;
|
||||
|
||||
int newIndent = getIndent(dst);
|
||||
@@ -529,7 +529,7 @@ public class Helper {
|
||||
public void indentSubtree( final CompositeElement tree, final int oldIndent, final int newIndent, CharTable table) {
|
||||
if( oldIndent == newIndent ) return;
|
||||
|
||||
for( TreeElement son = tree.firstChild; son != null; ) {
|
||||
for( ASTNode son = tree.getFirstChildNode(); son != null; ) {
|
||||
if( son.getElementType() == ElementType.WHITE_SPACE ) {
|
||||
final int indentLevelsDiff = newIndent/Helper.INDENT_FACTOR - oldIndent/Helper.INDENT_FACTOR;
|
||||
final int indentSpacesDiff = newIndent%Helper.INDENT_FACTOR - oldIndent%Helper.INDENT_FACTOR;
|
||||
@@ -541,7 +541,7 @@ public class Helper {
|
||||
TreeElement newWSElem = Factory.createSingleLeafElement(ElementType.WHITE_SPACE,
|
||||
newIndentString.toCharArray(),
|
||||
0, newIndentString.length(), table, null);
|
||||
ChangeUtil.replaceChild(tree, son, newWSElem);
|
||||
ChangeUtil.replaceChild(tree, (TreeElement)son, newWSElem);
|
||||
son = newWSElem;
|
||||
}
|
||||
}
|
||||
@@ -552,7 +552,7 @@ public class Helper {
|
||||
}
|
||||
}
|
||||
|
||||
public TreeElement shiftIndentInside(TreeElement element, int indentShift) {
|
||||
public ASTNode shiftIndentInside(TreeElement element, int indentShift) {
|
||||
if (indentShift == 0) return element;
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(element);
|
||||
String text = element.getText();
|
||||
|
||||
@@ -593,22 +593,22 @@ public class ImportHelper{
|
||||
if (file instanceof PsiJavaFile){
|
||||
packageName = ((PsiJavaFile)file).getPackageName();
|
||||
}
|
||||
addNamesToImport(names, (CompositeElement)SourceTreeToPsiMap.psiElementToTree(file), packageName, namesToImportStaticly);
|
||||
addNamesToImport(names, SourceTreeToPsiMap.psiElementToTree(file), packageName, namesToImportStaticly);
|
||||
addUnresolvedImportNames(names, file, namesToImportStaticly);
|
||||
|
||||
return names.toArray(new String[names.size()]);
|
||||
}
|
||||
|
||||
private void addNamesToImport(HashSet<String> names,
|
||||
CompositeElement scope,
|
||||
ASTNode scope,
|
||||
String thisPackageName,
|
||||
Set<String> namesToImportStaticly){
|
||||
if (scope.getElementType() == ElementType.IMPORT_LIST) return;
|
||||
|
||||
ChameleonTransforming.transformChildren(scope);
|
||||
for(ASTNode child = scope.firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = scope.getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
if (child instanceof CompositeElement) {
|
||||
addNamesToImport(names, (CompositeElement)child, thisPackageName, namesToImportStaticly);
|
||||
addNamesToImport(names, child, thisPackageName, namesToImportStaticly);
|
||||
|
||||
if (child.getElementType() == ElementType.JAVA_CODE_REFERENCE || child.getElementType() == ElementType.REFERENCE_EXPRESSION) {
|
||||
final CompositeElement compositeChild = (CompositeElement)child;
|
||||
|
||||
@@ -72,13 +72,13 @@ class ReferenceAdjuster implements Constants {
|
||||
PsiFile file = SourceTreeToPsiMap.treeElementToPsi(element).getContainingFile();
|
||||
if (ImportHelper.isImplicitlyImported(qName, file)){
|
||||
if (isShort) return element;
|
||||
return makeShortReference((CompositeElement)element, (PsiClass)refElement, addImports, uncompleteCode);
|
||||
return (TreeElement)makeShortReference((CompositeElement)element, (PsiClass)refElement, addImports, uncompleteCode);
|
||||
}
|
||||
if (file instanceof PsiJavaFile){
|
||||
String thisPackageName = ((PsiJavaFile)file).getPackageName();
|
||||
if (ImportHelper.hasPackage(qName, thisPackageName)){
|
||||
if (!isShort) {
|
||||
return makeShortReference(
|
||||
return (TreeElement)makeShortReference(
|
||||
(CompositeElement)element,
|
||||
(PsiClass)refElement,
|
||||
addImports,
|
||||
@@ -87,10 +87,10 @@ class ReferenceAdjuster implements Constants {
|
||||
}
|
||||
}
|
||||
}
|
||||
return replaceReferenceWithFQ((CompositeElement)element, (PsiClass)refElement);
|
||||
return (TreeElement)replaceReferenceWithFQ(element, (PsiClass)refElement);
|
||||
}
|
||||
else{
|
||||
return makeShortReference((CompositeElement)element, (PsiClass)refElement, addImports, uncompleteCode);
|
||||
return (TreeElement)makeShortReference((CompositeElement)element, (PsiClass)refElement, addImports, uncompleteCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -98,8 +98,8 @@ class ReferenceAdjuster implements Constants {
|
||||
}
|
||||
|
||||
if (element instanceof CompositeElement){
|
||||
ChameleonTransforming.transformChildren((CompositeElement)element);
|
||||
for(TreeElement child = ((CompositeElement)element).firstChild; child != null; child = child.getTreeNext()){
|
||||
ChameleonTransforming.transformChildren(element);
|
||||
for(TreeElement child = (TreeElement)element.getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
child = process(child, addImports, uncompleteCode);
|
||||
}
|
||||
}
|
||||
@@ -132,9 +132,9 @@ class ReferenceAdjuster implements Constants {
|
||||
return;
|
||||
}
|
||||
if (parent instanceof CompositeElement){
|
||||
ChameleonTransforming.transformChildren((CompositeElement)parent);
|
||||
ChameleonTransforming.transformChildren(parent);
|
||||
int offset = 0;
|
||||
for(TreeElement child = ((CompositeElement)parent).firstChild; child != null; child = child.getTreeNext()){
|
||||
for(TreeElement child = (TreeElement)parent.getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
int length = child.getTextLength();
|
||||
if (startOffset <= offset + length && offset <= endOffset){
|
||||
if (startOffset <= offset && offset + length <= endOffset){
|
||||
@@ -147,7 +147,7 @@ class ReferenceAdjuster implements Constants {
|
||||
}
|
||||
}
|
||||
|
||||
private CompositeElement makeShortReference(
|
||||
private ASTNode makeShortReference(
|
||||
CompositeElement reference,
|
||||
PsiClass refClass,
|
||||
boolean addImports,
|
||||
@@ -206,7 +206,7 @@ class ReferenceAdjuster implements Constants {
|
||||
return reference;
|
||||
}
|
||||
|
||||
private static boolean isSafeToShortenReference (CompositeElement reference, PsiClass refClass, PsiResolveHelper helper) {
|
||||
private static boolean isSafeToShortenReference (ASTNode reference, PsiClass refClass, PsiResolveHelper helper) {
|
||||
PsiClass newRefClass = helper.resolveReferencedClass(
|
||||
refClass.getName(),
|
||||
SourceTreeToPsiMap.treeElementToPsi(reference)
|
||||
@@ -220,7 +220,7 @@ class ReferenceAdjuster implements Constants {
|
||||
return reference;
|
||||
}
|
||||
|
||||
private static CompositeElement replaceReferenceWithFQ(CompositeElement reference, PsiClass refClass) {
|
||||
private static ASTNode replaceReferenceWithFQ(ASTNode reference, PsiClass refClass) {
|
||||
((SourceJavaCodeReference)reference).fullyQualify(refClass);
|
||||
return reference;
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@ import com.intellij.util.CharTable;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.ElementType;
|
||||
import com.intellij.psi.impl.source.tree.Factory;
|
||||
import com.intellij.psi.impl.source.tree.LeafElement;
|
||||
import com.intellij.psi.impl.source.tree.SharedImplUtil;
|
||||
import com.intellij.psi.javadoc.JavadocTagInfo;
|
||||
import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.CharTable;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
@@ -52,7 +52,7 @@ class ParamDocTagInfo implements JavadocTagInfo {
|
||||
|
||||
public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(SourceTreeToPsiMap.psiElementToTree(value.getFirstChild()));
|
||||
LeafElement newLeaf = Factory.createSingleLeafElement(ElementType.DOC_TAG_VALUE_TOKEN, newElementName.toCharArray(), 0, newElementName.length(), charTableByTree, null);
|
||||
ASTNode newLeaf = Factory.createSingleLeafElement(ElementType.DOC_TAG_VALUE_TOKEN, newElementName.toCharArray(), 0, newElementName.length(), charTableByTree, null);
|
||||
return value.getFirstChild().replace(SourceTreeToPsiMap.treeElementToPsi(newLeaf));
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
public PsiElement[] getDescriptionElements() {
|
||||
ChameleonTransforming.transformChildren(this);
|
||||
ArrayList array = new ArrayList();
|
||||
for (TreeElement child = firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
IElementType i = child.getElementType();
|
||||
if (i == DOC_TAG) break;
|
||||
if (i != DOC_COMMENT_START && i != DOC_COMMENT_END && i != DOC_COMMENT_LEADING_ASTERISKS) {
|
||||
@@ -55,8 +55,8 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
}
|
||||
|
||||
public PsiDocTag findTagByName(String name) {
|
||||
if (firstChild.getElementType() == DOC_COMMENT_TEXT) {
|
||||
if (firstChild.getText().indexOf(name) < 0) return null;
|
||||
if (getFirstChildNode().getElementType() == DOC_COMMENT_TEXT) {
|
||||
if (getFirstChildNode().getText().indexOf(name) < 0) return null;
|
||||
}
|
||||
|
||||
char[] tagChars = new char[name.length() + 1];
|
||||
@@ -64,7 +64,7 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
name.getChars(0, name.length(), tagChars, 1);
|
||||
|
||||
ChameleonTransforming.transformChildren(this);
|
||||
for (ASTNode child = firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
if (child.getElementType() == DOC_TAG) {
|
||||
PsiDocTag tag = (PsiDocTag)SourceTreeToPsiMap.treeElementToPsi(child);
|
||||
if (tag.getNameElement().textMatches(new CharArrayCharSequence(tagChars))) {
|
||||
@@ -101,11 +101,11 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
return null;
|
||||
|
||||
case ChildRole.DOC_COMMENT_START:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.DOC_COMMENT_END:
|
||||
if (lastChild.getElementType() == DOC_COMMENT_END) {
|
||||
return lastChild;
|
||||
if (getLastChildNode().getElementType() == DOC_COMMENT_END) {
|
||||
return getLastChildNode();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
@@ -119,7 +119,7 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
|
||||
private static void addNewLineToTag(CompositeElement tag) {
|
||||
LOG.assertTrue(tag != null && tag.getElementType() == DOC_TAG);
|
||||
ASTNode current = tag.lastChild;
|
||||
ASTNode current = tag.getLastChildNode();
|
||||
while (current != null && current.getElementType() == DOC_COMMENT_DATA && isWhitespaceCommentData(current)) {
|
||||
current = current.getTreePrev();
|
||||
}
|
||||
@@ -139,7 +139,7 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
boolean needToAddNewline = false;
|
||||
if (first == last && first.getElementType() == DOC_TAG) {
|
||||
if (anchor == null) {
|
||||
anchor = lastChild; // this is a '*/'
|
||||
anchor = (TreeElement)getLastChildNode(); // this is a '*/'
|
||||
final ASTNode prevBeforeWS = TreeUtil.skipElementsBack(anchor.getTreePrev(), WHITE_SPACE_BIT_SET);
|
||||
if (prevBeforeWS != null) {
|
||||
anchor = (TreeElement)prevBeforeWS;
|
||||
@@ -188,15 +188,15 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
}
|
||||
|
||||
private static void removeEndingAsterisksFromTag(CompositeElement tag) {
|
||||
ASTNode current = tag.lastChild;
|
||||
ASTNode current = tag.getLastChildNode();
|
||||
while (current != null && current.getElementType() == DOC_COMMENT_DATA) {
|
||||
current = current.getTreePrev();
|
||||
}
|
||||
if (current != null && current.getElementType() == DOC_COMMENT_LEADING_ASTERISKS) {
|
||||
final ASTNode prevWhiteSpace = TreeUtil.skipElementsBack((TreeElement)current.getTreePrev(), WHITE_SPACE_BIT_SET);
|
||||
TreeElement toBeDeleted = (TreeElement)prevWhiteSpace.getTreeNext();
|
||||
final ASTNode prevWhiteSpace = TreeUtil.skipElementsBack(current.getTreePrev(), WHITE_SPACE_BIT_SET);
|
||||
ASTNode toBeDeleted = prevWhiteSpace.getTreeNext();
|
||||
while (toBeDeleted != null) {
|
||||
TreeElement next = toBeDeleted.getTreeNext();
|
||||
ASTNode next = toBeDeleted.getTreeNext();
|
||||
tag.deleteChildInternal(toBeDeleted);
|
||||
toBeDeleted = next;
|
||||
}
|
||||
@@ -219,15 +219,15 @@ public class PsiDocCommentImpl extends CompositePsiElement implements PsiDocComm
|
||||
}
|
||||
else if (prev != null && prev.getElementType() == DOC_TAG) {
|
||||
final CompositeElement compositePrev = (CompositeElement)prev;
|
||||
final TreeElement lastPrevChild = compositePrev.lastChild;
|
||||
TreeElement prevChild = lastPrevChild;
|
||||
final ASTNode lastPrevChild = compositePrev.getLastChildNode();
|
||||
ASTNode prevChild = lastPrevChild;
|
||||
while (prevChild != null && prevChild.getElementType() == DOC_COMMENT_DATA) {
|
||||
prevChild = prevChild.getTreePrev();
|
||||
}
|
||||
if (prevChild != null && prevChild.getElementType() == DOC_COMMENT_LEADING_ASTERISKS) {
|
||||
TreeElement current = prevChild;
|
||||
ASTNode current = prevChild;
|
||||
while (current != null) {
|
||||
final TreeElement next = current.getTreeNext();
|
||||
final ASTNode next = current.getTreeNext();
|
||||
compositePrev.deleteChildInternal(current);
|
||||
current = next;
|
||||
}
|
||||
|
||||
@@ -136,8 +136,8 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo
|
||||
|
||||
private PsiElement getScope(){
|
||||
ChameleonTransforming.transformChildren(this);
|
||||
if (firstChild.getElementType() == ElementType.JAVA_CODE_REFERENCE || firstChild.getElementType() == ElementType.REFERENCE_EXPRESSION) {
|
||||
PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement)SourceTreeToPsiMap.treeElementToPsi(firstChild);
|
||||
if (getFirstChildNode().getElementType() == ElementType.JAVA_CODE_REFERENCE || getFirstChildNode().getElementType() == ElementType.REFERENCE_EXPRESSION) {
|
||||
PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement)SourceTreeToPsiMap.treeElementToPsi(getFirstChildNode());
|
||||
final PsiElement referencedElement = referenceElement.resolve();
|
||||
if (referencedElement instanceof PsiClass) {
|
||||
return referencedElement;
|
||||
@@ -178,10 +178,10 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo
|
||||
|
||||
public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
|
||||
final PsiElement element = getNameElement();
|
||||
final TreeElement treeElement = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
final ASTNode treeElement = SourceTreeToPsiMap.psiElementToTree(element);
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(treeElement);
|
||||
LeafElement newToken = Factory.createSingleLeafElement(DOC_TAG_VALUE_TOKEN, newElementName.toCharArray(), 0, newElementName.length(), charTableByTree, getManager());
|
||||
treeElement.getTreeParent().replaceChildInternal(SourceTreeToPsiMap.psiElementToTree(element), newToken);
|
||||
((CompositeElement)treeElement.getTreeParent()).replaceChildInternal(SourceTreeToPsiMap.psiElementToTree(element), newToken);
|
||||
return SourceTreeToPsiMap.treeElementToPsi(newToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.CharTable;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
@@ -43,10 +44,10 @@ public class PsiDocParamRef extends CompositePsiElement implements PsiDocTagValu
|
||||
}
|
||||
|
||||
public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
|
||||
final TreeElement treeElement = SourceTreeToPsiMap.psiElementToTree(PsiDocParamRef.this);
|
||||
final ASTNode treeElement = SourceTreeToPsiMap.psiElementToTree(PsiDocParamRef.this);
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(treeElement);
|
||||
LeafElement newElement = Factory.createSingleLeafElement(ElementType.DOC_TAG_VALUE_TOKEN, newElementName.toCharArray(), 0, newElementName.length(), charTableByTree, getManager());
|
||||
replaceChildInternal(firstChild, newElement);
|
||||
replaceChildInternal((TreeElement)getFirstChildNode(), newElement);
|
||||
return PsiDocParamRef.this;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import com.intellij.psi.javadoc.PsiDocToken;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -85,9 +86,9 @@ class SeeDocTagInfo implements JavadocTagInfo {
|
||||
if (place.getParent() instanceof PsiDocMethodOrFieldRef) {
|
||||
PsiDocMethodOrFieldRef methodRef = (PsiDocMethodOrFieldRef) place.getParent();
|
||||
|
||||
final IElementType firstChildType = methodRef.firstChild.getElementType();
|
||||
final IElementType firstChildType = methodRef.getFirstChildNode().getElementType();
|
||||
if (firstChildType == ElementType.JAVA_CODE_REFERENCE || firstChildType == ElementType.REFERENCE_EXPRESSION) {
|
||||
PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement) SourceTreeToPsiMap.treeElementToPsi(methodRef.firstChild);
|
||||
PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement) SourceTreeToPsiMap.treeElementToPsi(methodRef.getFirstChildNode());
|
||||
final PsiElement element = referenceElement.resolve();
|
||||
if (element instanceof PsiClass) {
|
||||
targetContext = element.getFirstChild();
|
||||
|
||||
@@ -20,7 +20,7 @@ public class ChameleonTransforming implements Constants {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("\"transforming chameleon:\" + chameleon + \" in \" + chameleon.parent");
|
||||
}
|
||||
final CompositeElement parent = chameleon.getTreeParent();
|
||||
final ASTNode parent = chameleon.getTreeParent();
|
||||
parent.getTextLength();
|
||||
PsiFileImpl file = (PsiFileImpl)SourceTreeToPsiMap.treeElementToPsi(parent).getContainingFile();
|
||||
if (file == null) return null;
|
||||
@@ -39,7 +39,7 @@ public class ChameleonTransforming implements Constants {
|
||||
}
|
||||
char[] buffer = new char[length2];
|
||||
int offset = 0;
|
||||
for (TreeElement element = newElement; element != null; element = element.getTreeNext()) {
|
||||
for (ASTNode element = newElement; element != null; element = element.getTreeNext()) {
|
||||
offset = SourceUtil.toBuffer(element, buffer, offset);
|
||||
}
|
||||
String text2 = new String(buffer);
|
||||
@@ -53,13 +53,13 @@ public class ChameleonTransforming implements Constants {
|
||||
}
|
||||
}
|
||||
|
||||
public static void transformChildren(CompositeElement element) {
|
||||
public static void transformChildren(ASTNode element) {
|
||||
transformChildren(element, false);
|
||||
}
|
||||
|
||||
public static void transformChildren(CompositeElement element, boolean recursive) {
|
||||
public static void transformChildren(ASTNode element, boolean recursive) {
|
||||
synchronized (PsiLock.LOCK) {
|
||||
ASTNode child = element.firstChild;
|
||||
ASTNode child = element.getFirstChildNode();
|
||||
while (child != null) {
|
||||
if (child instanceof ChameleonElement) {
|
||||
ASTNode next = child.getTreeNext();
|
||||
@@ -70,7 +70,7 @@ public class ChameleonTransforming implements Constants {
|
||||
continue;
|
||||
}
|
||||
if (recursive && child instanceof CompositeElement) {
|
||||
transformChildren((CompositeElement)child, recursive);
|
||||
transformChildren(child, recursive);
|
||||
}
|
||||
child = child.getTreeNext();
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.intellij.util.CharTable;
|
||||
import com.intellij.psi.impl.source.DummyHolder;
|
||||
import com.intellij.psi.impl.source.ParsingContext;
|
||||
import com.intellij.psi.impl.source.tree.*;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -40,7 +41,7 @@ public class ClassBodyParsing extends Parsing {
|
||||
ParsingContext parsingContext = new ParsingContext(table);
|
||||
parsingContext.getClassBodyParsing().parseClassBody(dummyRoot, filterLexer, context);
|
||||
ParseUtil.insertMissingTokens(dummyRoot, lexer, startOffset, endOffset, lexerState, ParseUtil.WhiteSpaceAndCommentsProcessor.INSTANCE, parsingContext);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
|
||||
private void parseEnumConstants(Lexer lexer, CompositeElement dummyRoot) {
|
||||
|
||||
@@ -189,7 +189,7 @@ public class DeclarationParsing extends Parsing {
|
||||
last = type;
|
||||
|
||||
if (lexer.getTokenType() != IDENTIFIER){
|
||||
if (context == CODE_BLOCK_CONTEXT && modifierList.firstChild == null){
|
||||
if (context == CODE_BLOCK_CONTEXT && modifierList.getFirstChildNode() == null){
|
||||
ParseUtil.restorePosition(lexer, startPos);
|
||||
return null;
|
||||
}
|
||||
@@ -504,7 +504,7 @@ public class DeclarationParsing extends Parsing {
|
||||
if (lexer.getTokenType() == AT) {
|
||||
result = parseAnnotation(lexer);
|
||||
} else if (lexer.getTokenType() == LBRACE) {
|
||||
result = parseArrayMemberValue (lexer);
|
||||
result = (TreeElement)parseArrayMemberValue (lexer);
|
||||
} else {
|
||||
result = myContext.getExpressionParsing().parseConditionalExpression(lexer);
|
||||
}
|
||||
@@ -516,7 +516,7 @@ public class DeclarationParsing extends Parsing {
|
||||
return result;
|
||||
}
|
||||
|
||||
private CompositeElement parseArrayMemberValue(Lexer lexer) {
|
||||
private ASTNode parseArrayMemberValue(Lexer lexer) {
|
||||
LOG.assertTrue(lexer.getTokenType() == LBRACE);
|
||||
CompositeElement memberList = Factory.createCompositeElement(ANNOTATION_ARRAY_INITIALIZER);
|
||||
TreeUtil.addChildren(memberList, ParseUtil.createTokenElement(lexer, myContext.getCharTable()));
|
||||
@@ -573,7 +573,7 @@ public class DeclarationParsing extends Parsing {
|
||||
if (lexer.getTokenType() != IDENTIFIER){
|
||||
TreeElement errorElement = Factory.createErrorElement("Identifier expected");
|
||||
TreeUtil.addChildren(aClass, errorElement);
|
||||
return aClass.firstChild;
|
||||
return (TreeElement)aClass.getFirstChildNode();
|
||||
}
|
||||
|
||||
TreeUtil.addChildren(aClass, ParseUtil.createTokenElement(lexer, myContext.getCharTable()));
|
||||
@@ -583,14 +583,14 @@ public class DeclarationParsing extends Parsing {
|
||||
TreeUtil.addChildren(aClass, classParameterList);
|
||||
|
||||
if (!isEnum) {
|
||||
TreeElement extendsList = parseExtendsList(lexer);
|
||||
TreeElement extendsList = (TreeElement)parseExtendsList(lexer);
|
||||
if (extendsList == null){
|
||||
extendsList = Factory.createCompositeElement(EXTENDS_LIST);
|
||||
}
|
||||
TreeUtil.addChildren(aClass, extendsList);
|
||||
}
|
||||
|
||||
TreeElement implementsList = parseImplementsList(lexer);
|
||||
TreeElement implementsList = (TreeElement)parseImplementsList(lexer);
|
||||
if (implementsList == null){
|
||||
implementsList = Factory.createCompositeElement(IMPLEMENTS_LIST);
|
||||
}
|
||||
@@ -775,7 +775,7 @@ public class DeclarationParsing extends Parsing {
|
||||
lexer.advance();
|
||||
}
|
||||
|
||||
TreeElement throwsList = parseThrowsList(lexer);
|
||||
TreeElement throwsList = (TreeElement)parseThrowsList(lexer);
|
||||
if (throwsList == null){
|
||||
throwsList = Factory.createCompositeElement(THROWS_LIST);
|
||||
}
|
||||
@@ -890,15 +890,15 @@ public class DeclarationParsing extends Parsing {
|
||||
return paramList;
|
||||
}
|
||||
|
||||
public CompositeElement parseExtendsList(Lexer lexer) {
|
||||
public ASTNode parseExtendsList(Lexer lexer) {
|
||||
return parseReferenceList(lexer, EXTENDS_LIST, COMMA, EXTENDS_KEYWORD);
|
||||
}
|
||||
|
||||
public CompositeElement parseImplementsList(Lexer lexer) {
|
||||
public ASTNode parseImplementsList(Lexer lexer) {
|
||||
return parseReferenceList(lexer, IMPLEMENTS_LIST, COMMA, IMPLEMENTS_KEYWORD);
|
||||
}
|
||||
|
||||
public CompositeElement parseThrowsList(Lexer lexer) {
|
||||
public ASTNode parseThrowsList(Lexer lexer) {
|
||||
return parseReferenceList(lexer, THROWS_LIST, COMMA, THROWS_KEYWORD);
|
||||
}
|
||||
|
||||
@@ -979,7 +979,7 @@ public class DeclarationParsing extends Parsing {
|
||||
return param;
|
||||
} else{
|
||||
TreeUtil.addChildren(param, Factory.createErrorElement("Identifier expected"));
|
||||
return param.firstChild;
|
||||
return (TreeElement)param.getFirstChildNode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ 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");
|
||||
@@ -60,7 +61,7 @@ public class ExpressionParsing extends Parsing {
|
||||
|
||||
ParseUtil.insertMissingTokens(dummyRoot, originalLexer, 0, buffer.length, state, ParseUtil.WhiteSpaceAndCommentsProcessor.INSTANCE,
|
||||
myContext);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
|
||||
public CompositeElement parseExpression(Lexer lexer) {
|
||||
@@ -342,7 +343,7 @@ public class ExpressionParsing extends Parsing {
|
||||
|
||||
if (lexer.getTokenType() == PLUS || lexer.getTokenType() == MINUS ||
|
||||
lexer.getTokenType() == PLUSPLUS || lexer.getTokenType() == MINUSMINUS) {
|
||||
if (!PRIMITIVE_TYPE_BIT_SET.isInSet(((CompositeElement)type).firstChild.getElementType())) {
|
||||
if (!PRIMITIVE_TYPE_BIT_SET.isInSet(type.getFirstChildNode().getElementType())) {
|
||||
ParseUtil.restorePosition(lexer, pos);
|
||||
return parsePostfixExpression(lexer);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ 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;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -35,12 +36,12 @@ public class FileTextParsing extends Parsing {
|
||||
ParsingContext context = new ParsingContext(dummyRoot.getCharTable());
|
||||
|
||||
if (!skipHeader){
|
||||
TreeElement packageStatement = context.getFileTextParsing().parsePackageStatement(filterLexer);
|
||||
TreeElement packageStatement = (TreeElement)context.getFileTextParsing().parsePackageStatement(filterLexer);
|
||||
if (packageStatement != null) {
|
||||
TreeUtil.addChildren(dummyRoot, packageStatement);
|
||||
}
|
||||
|
||||
final TreeElement importList = context.getFileTextParsing().parseImportList(filterLexer);
|
||||
final TreeElement importList = (TreeElement)context.getFileTextParsing().parseImportList(filterLexer);
|
||||
TreeUtil.addChildren(dummyRoot, importList);
|
||||
}
|
||||
|
||||
@@ -71,10 +72,10 @@ public class FileTextParsing extends Parsing {
|
||||
}
|
||||
|
||||
ParseUtil.insertMissingTokens(dummyRoot, lexer, startOffset, endOffset, ParseUtil.WhiteSpaceAndCommentsProcessor.INSTANCE, context);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
|
||||
public CompositeElement parseImportList(Lexer lexer) {
|
||||
public ASTNode parseImportList(Lexer lexer) {
|
||||
CompositeElement importList = Factory.createCompositeElement(IMPORT_LIST);
|
||||
if (lexer.getTokenType() == IMPORT_KEYWORD) {
|
||||
int startPos = lexer.getTokenStart();
|
||||
@@ -102,7 +103,7 @@ public class FileTextParsing extends Parsing {
|
||||
return importList;
|
||||
}
|
||||
|
||||
public CompositeElement parsePackageStatement(Lexer lexer) {
|
||||
public ASTNode parsePackageStatement(Lexer lexer) {
|
||||
long startPos = ParseUtil.savePosition(lexer);
|
||||
CompositeElement packageStatement = Factory.createCompositeElement(PACKAGE_STATEMENT);
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ public class ImportsTextParsing extends Parsing {
|
||||
|
||||
CompositeElement invalidElementsGroup = null;
|
||||
while(filterLexer.getTokenType() != null){
|
||||
TreeElement element = parseImportStatement(filterLexer);
|
||||
TreeElement element = (TreeElement)parseImportStatement(filterLexer);
|
||||
if (element != null){
|
||||
TreeUtil.addChildren(dummyRoot, element);
|
||||
invalidElementsGroup = null;
|
||||
@@ -51,10 +51,10 @@ public class ImportsTextParsing extends Parsing {
|
||||
}
|
||||
|
||||
ParseUtil.insertMissingTokens(dummyRoot, lexer, startOffset, endOffset, ParseUtil.WhiteSpaceAndCommentsProcessor.INSTANCE, myContext);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
|
||||
private CompositeElement parseImportStatement(FilterLexer lexer) {
|
||||
private ASTNode parseImportStatement(FilterLexer lexer) {
|
||||
if (lexer.getTokenType() != IMPORT_KEYWORD) return null;
|
||||
|
||||
final TreeElement importToken = ParseUtil.createTokenElement(lexer, myContext.getCharTable());
|
||||
@@ -80,10 +80,10 @@ public class ImportsTextParsing extends Parsing {
|
||||
}
|
||||
|
||||
CompositeElement refElement = parseJavaCodeReference(lexer, true);
|
||||
if (refElement.lastChild.getElementType() == ERROR_ELEMENT){
|
||||
if (refElement.getLastChildNode().getElementType() == ERROR_ELEMENT){
|
||||
final ASTNode qualifier = refElement.findChildByRole(ChildRole.QUALIFIER);
|
||||
LOG.assertTrue(qualifier != null);
|
||||
TreeUtil.remove(refElement.lastChild);
|
||||
TreeUtil.remove((TreeElement)refElement.getLastChildNode());
|
||||
TreeUtil.addChildren(statement, (TreeElement)qualifier);
|
||||
if (lexer.getTokenType() == ASTERISK){
|
||||
TreeUtil.addChildren(statement, ParseUtil.createTokenElement(lexer, myContext.getCharTable()));
|
||||
@@ -116,9 +116,9 @@ public class ImportsTextParsing extends Parsing {
|
||||
public CompositeElement convertToImportStaticReference(CompositeElement refElement) {
|
||||
final CompositeElement importStaticReference = Factory.createCompositeElement(IMPORT_STATIC_REFERENCE);
|
||||
final CompositeElement referenceParameterList = (CompositeElement)refElement.findChildByRole(ChildRole.REFERENCE_PARAMETER_LIST);
|
||||
TreeUtil.addChildren(importStaticReference, refElement.firstChild);
|
||||
TreeUtil.addChildren(importStaticReference, (TreeElement)refElement.getFirstChildNode());
|
||||
if (referenceParameterList != null) {
|
||||
if (referenceParameterList.firstChild == null) {
|
||||
if (referenceParameterList.getFirstChildNode() == null) {
|
||||
TreeUtil.remove(referenceParameterList);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.psi.impl.source.ParsingContext;
|
||||
import com.intellij.psi.impl.source.tree.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class JavadocParsing extends Parsing {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.parsing.JavadocParsing");
|
||||
@@ -57,7 +58,7 @@ public class JavadocParsing extends Parsing {
|
||||
}
|
||||
|
||||
ParseUtil.insertMissingTokens(dummyRoot, originalLexer, startOffset, endOffset, new TokenProcessor(this), myContext);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
|
||||
private CompositeElement parseTag(PsiManager manager, Lexer lexer) {
|
||||
@@ -178,7 +179,7 @@ public class JavadocParsing extends Parsing {
|
||||
return tagValue;
|
||||
}
|
||||
|
||||
private CompositeElement parseMethodRef(Lexer lexer) {
|
||||
private ASTNode parseMethodRef(Lexer lexer) {
|
||||
CompositeElement ref = Factory.createCompositeElement(DOC_METHOD_OR_FIELD_REF);
|
||||
|
||||
TreeElement sharp = createTokenElement(lexer);
|
||||
@@ -234,7 +235,7 @@ public class JavadocParsing extends Parsing {
|
||||
if (!TAG_VALUE.isInSet(lexer.getTokenType())) return null;
|
||||
|
||||
if (lexer.getTokenType() == JavaDocTokenType.DOC_TAG_VALUE_SHARP_TOKEN) {
|
||||
return parseMethodRef(lexer);
|
||||
return (TreeElement)parseMethodRef(lexer);
|
||||
}
|
||||
else if (lexer.getTokenType() == JavaDocTokenType.DOC_TAG_VALUE_TOKEN) {
|
||||
final LeafElement element = parseReferenceOrType(lexer.getBuffer(), lexer.getTokenStart(), lexer.getTokenEnd(), false,
|
||||
@@ -243,9 +244,9 @@ public class JavadocParsing extends Parsing {
|
||||
lexer.advance();
|
||||
|
||||
if (lexer.getTokenType() == JavaDocTokenType.DOC_TAG_VALUE_SHARP_TOKEN) {
|
||||
CompositeElement methodRef = parseMethodRef(lexer);
|
||||
TreeUtil.insertBefore(methodRef.firstChild, element);
|
||||
return methodRef;
|
||||
ASTNode methodRef = parseMethodRef(lexer);
|
||||
TreeUtil.insertBefore((TreeElement)methodRef.getFirstChildNode(), element);
|
||||
return (TreeElement)methodRef;
|
||||
}
|
||||
else {
|
||||
return element;
|
||||
|
||||
@@ -182,7 +182,7 @@ public class ParseUtil implements Constants {
|
||||
if (tokenType != leaf.getElementType() && processor.isTokenValid(tokenType)) {
|
||||
final TreeElement firstMissing = processor.process(lexer, context);
|
||||
if (firstMissing != null) {
|
||||
TreeUtil.insertBefore(root.firstChild, firstMissing);
|
||||
TreeUtil.insertBefore((TreeElement)root.getFirstChildNode(), firstMissing);
|
||||
}
|
||||
}
|
||||
passTokenOrChameleon(leaf, lexer, gt);
|
||||
@@ -193,16 +193,16 @@ public class ParseUtil implements Constants {
|
||||
// whitespaces at the end of the file
|
||||
final TreeElement firstMissing = processor.process(lexer, context);
|
||||
if(firstMissing != null){
|
||||
TreeElement current = root;
|
||||
ASTNode current = root;
|
||||
while(current instanceof CompositeElement){
|
||||
if(current.getUserData(UNCLOSED_ELEMENT_PROPERTY) != null) break;
|
||||
current = ((CompositeElement)current).lastChild;
|
||||
current = current.getLastChildNode();
|
||||
}
|
||||
if(current instanceof CompositeElement){
|
||||
TreeUtil.addChildren((CompositeElement)current, firstMissing);
|
||||
}
|
||||
else{
|
||||
TreeUtil.insertAfter(root.lastChild, firstMissing);
|
||||
TreeUtil.insertAfter((TreeElement)root.getLastChildNode(), firstMissing);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -214,7 +214,7 @@ public class ParseUtil implements Constants {
|
||||
Lexer lexer,
|
||||
TokenProcessor processor,
|
||||
ParsingContext context,
|
||||
LeafElement endToken) {
|
||||
ASTNode endToken) {
|
||||
final CommonParentState commonParents = new CommonParentState();
|
||||
while(leaf != null){
|
||||
commonParents.strongWhiteSpaceHolder = null;
|
||||
@@ -230,10 +230,12 @@ public class ParseUtil implements Constants {
|
||||
final TreeElement firstMissing = processor.process(lexer, context);
|
||||
final CompositeElement unclosedElement = commonParents.strongWhiteSpaceHolder;
|
||||
if (unclosedElement != null) {
|
||||
if(commonParents.isStrongElementOnRisingSlope || unclosedElement.firstChild == null)
|
||||
if(commonParents.isStrongElementOnRisingSlope || unclosedElement.getFirstChildNode() == null) {
|
||||
TreeUtil.addChildren(unclosedElement, firstMissing);
|
||||
else
|
||||
TreeUtil.insertBefore(unclosedElement.firstChild, firstMissing);
|
||||
}
|
||||
else {
|
||||
TreeUtil.insertBefore((TreeElement)unclosedElement.getFirstChildNode(), firstMissing);
|
||||
}
|
||||
}
|
||||
else {
|
||||
final ASTNode insertBefore = commonParents.nextLeafBranchStart;
|
||||
@@ -304,7 +306,7 @@ public class ParseUtil implements Constants {
|
||||
return nextLeaf(parent, commonParent, searchedType);
|
||||
}
|
||||
|
||||
private static void initStrongWhitespaceHolder(CommonParentState commonParent, TreeElement start, boolean slopeSide) {
|
||||
private static void initStrongWhitespaceHolder(CommonParentState commonParent, ASTNode start, boolean slopeSide) {
|
||||
if(start instanceof CompositeElement
|
||||
&& (isStrongWhitespaceHolder(start.getElementType())
|
||||
|| (start.getUserData(UNCLOSED_ELEMENT_PROPERTY) != null) && slopeSide)){
|
||||
@@ -321,7 +323,7 @@ public class ParseUtil implements Constants {
|
||||
return element;
|
||||
}
|
||||
else{
|
||||
for(TreeElement child = ((CompositeElement)element).firstChild; child != null; child = child.getTreeNext()){
|
||||
for(TreeElement child = (TreeElement)element.getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
TreeElement leaf = findFirstLeaf(child, searchedType, commonParent);
|
||||
if (leaf != null) return leaf;
|
||||
}
|
||||
@@ -349,8 +351,8 @@ public class ParseUtil implements Constants {
|
||||
return prevLeaf(parent, commonParent);
|
||||
}
|
||||
|
||||
static void bindComments(CompositeElement root) {
|
||||
TreeElement child = root.firstChild;
|
||||
static void bindComments(ASTNode root) {
|
||||
TreeElement child = (TreeElement)root.getFirstChildNode();
|
||||
while (child != null) {
|
||||
if (child.getElementType() == DOC_COMMENT) {
|
||||
if (bindDocComment(child)) {
|
||||
@@ -379,7 +381,7 @@ public class ParseUtil implements Constants {
|
||||
}
|
||||
|
||||
if (child instanceof CompositeElement) {
|
||||
bindComments((CompositeElement)child);
|
||||
bindComments(child);
|
||||
}
|
||||
child = child.getTreeNext();
|
||||
}
|
||||
@@ -406,7 +408,7 @@ public class ParseUtil implements Constants {
|
||||
|
||||
if (element.getElementType() == CLASS || element.getElementType() == FIELD || element.getElementType() == METHOD ||
|
||||
element.getElementType() == ENUM_CONSTANT) {
|
||||
TreeElement first = ((CompositeElement)element).firstChild;
|
||||
TreeElement first = (TreeElement)element.getFirstChildNode();
|
||||
TreeUtil.remove(docComment);
|
||||
TreeUtil.insertBefore(first, docComment);
|
||||
if (startSpaces != null) {
|
||||
@@ -508,7 +510,7 @@ public class ParseUtil implements Constants {
|
||||
|
||||
// check if the comment is on separate line
|
||||
if (comment.getTreePrev() != null) {
|
||||
TreeElement prev = comment.getTreePrev();
|
||||
ASTNode prev = comment.getTreePrev();
|
||||
if (prev.getElementType() != ElementType.WHITE_SPACE) {
|
||||
return false;
|
||||
}
|
||||
@@ -517,7 +519,7 @@ public class ParseUtil implements Constants {
|
||||
}
|
||||
}
|
||||
|
||||
TreeElement first = ((CompositeElement)element).firstChild;
|
||||
TreeElement first = (TreeElement)element.getFirstChildNode();
|
||||
TreeElement child = comment;
|
||||
while (child != element) {
|
||||
TreeElement next = child.getTreeNext();
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.psi.impl.source.DummyHolder;
|
||||
import com.intellij.psi.impl.source.ParsingContext;
|
||||
import com.intellij.psi.impl.source.tree.*;
|
||||
import com.intellij.util.CharTable;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class Parsing implements Constants{
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.parsing.Parsing");
|
||||
@@ -254,7 +255,7 @@ public class Parsing implements Constants{
|
||||
startOffset,
|
||||
endOffset, state,
|
||||
ParseUtil.WhiteSpaceAndCommentsProcessor.INSTANCE, context);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.intellij.psi.impl.source.tree.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.jsp.IJspElementType;
|
||||
import com.intellij.util.CharTable;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class StatementParsing extends Parsing {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.parsing.StatementParsing");
|
||||
@@ -44,7 +45,7 @@ public class StatementParsing extends Parsing {
|
||||
CompositeElement block = Factory.createCompositeElement(CODE_BLOCK);
|
||||
TreeUtil.addChildren(dummyRoot, block);
|
||||
context.getStatementParsing().parseCodeBlockDeep(block, filterLexer, true);
|
||||
if (block.firstChild == null) return null;
|
||||
if (block.getFirstChildNode() == null) return null;
|
||||
|
||||
ParseUtil.insertMissingTokens(block, lexer, startOffset, endOffset, state, ParseUtil.WhiteSpaceAndCommentsProcessor.INSTANCE, context);
|
||||
return block;
|
||||
@@ -73,7 +74,7 @@ public class StatementParsing extends Parsing {
|
||||
endOffset,
|
||||
state,
|
||||
ParseUtil.WhiteSpaceAndCommentsProcessor.INSTANCE, context);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
|
||||
public CompositeElement parseCodeBlock(Lexer lexer, boolean deep) {
|
||||
@@ -133,7 +134,7 @@ public class StatementParsing extends Parsing {
|
||||
|
||||
parseStatements(elementToAdd, lexer, parseToEndOfLexer ? LAST_RBRACE_IS_END : RBRACE_IS_END);
|
||||
|
||||
if (elementToAdd.lastChild == null || elementToAdd.lastChild.getElementType() != RBRACE){
|
||||
if (elementToAdd.getLastChildNode() == null || elementToAdd.getLastChildNode().getElementType() != RBRACE){
|
||||
CompositeElement errorElement = Factory.createErrorElement("'}' expected");
|
||||
TreeUtil.addChildren(elementToAdd, errorElement);
|
||||
elementToAdd.putUserData(ParseUtil.UNCLOSED_ELEMENT_PROPERTY, "");
|
||||
@@ -765,7 +766,7 @@ public class StatementParsing extends Parsing {
|
||||
while(lexer.getTokenType() == CATCH_KEYWORD){
|
||||
CompositeElement catchSection = parseCatchSection(lexer);
|
||||
TreeUtil.addChildren(element, catchSection);
|
||||
if (catchSection.lastChild.getElementType() == ERROR_ELEMENT) break;
|
||||
if (catchSection.getLastChildNode().getElementType() == ERROR_ELEMENT) break;
|
||||
}
|
||||
|
||||
if (lexer.getTokenType() == FINALLY_KEYWORD){
|
||||
|
||||
@@ -73,7 +73,7 @@ public class XmlParsing implements ElementType {
|
||||
context.getXmlParsing().addToken(holderElement, filterLexer);
|
||||
}
|
||||
ParseUtil.insertMissingTokens(holderElement, lexer, startOffset, endOffset, WhiteSpaceAndCommentsProcessor.INSTANCE, context);
|
||||
ASTNode result = holderElement.firstChild;
|
||||
ASTNode result = holderElement.getFirstChildNode();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ public class XmlParsing implements ElementType {
|
||||
addToken(tag, lexer);
|
||||
}
|
||||
else {
|
||||
TreeUtil.insertAfter(tag.lastChild, Factory.createErrorElement("Element is not closed"));
|
||||
TreeUtil.insertAfter((TreeElement)tag.getLastChildNode(), Factory.createErrorElement("Element is not closed"));
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -709,7 +709,7 @@ public class XmlParsing implements ElementType {
|
||||
start,
|
||||
end,
|
||||
WhiteSpaceAndCommentsProcessor.INSTANCE, myContext);
|
||||
return dummyRoot.firstChild;
|
||||
return (TreeElement)dummyRoot.getFirstChildNode();
|
||||
}
|
||||
|
||||
public static class WhiteSpaceAndCommentsProcessor implements ParseUtil.TokenProcessor {
|
||||
|
||||
@@ -75,9 +75,9 @@ public class BlockSupportImpl extends BlockSupport implements Constants, Project
|
||||
}
|
||||
final FileElement treeFileElement = fileImpl.getTreeElement();
|
||||
|
||||
final LeafElement leafAtStart = treeFileElement.findLeafElementAt(startOffset);
|
||||
final LeafElement leafAtEnd = treeFileElement.findLeafElementAt(endOffset);
|
||||
TreeElement parent = leafAtStart != null && leafAtEnd != null ? (TreeElement)TreeUtil.findCommonParent(leafAtStart, leafAtEnd) : treeFileElement;
|
||||
final ASTNode leafAtStart = treeFileElement.findLeafElementAt(startOffset);
|
||||
final ASTNode leafAtEnd = treeFileElement.findLeafElementAt(endOffset);
|
||||
ASTNode parent = leafAtStart != null && leafAtEnd != null ? TreeUtil.findCommonParent(leafAtStart, leafAtEnd) : treeFileElement;
|
||||
|
||||
int minErrorLevel = Integer.MAX_VALUE;
|
||||
Reparseable bestReparseable = null;
|
||||
@@ -94,7 +94,7 @@ public class BlockSupportImpl extends BlockSupport implements Constants, Project
|
||||
|
||||
int currentErrorLevel = reparseable.getErrorsCount(newFileText, textRange.getStartOffset(), textRange.getEndOffset(), lengthShift);
|
||||
if(currentErrorLevel == Reparseable.NO_ERRORS){
|
||||
final FileElement treeElement = new DummyHolder(parent.getManager(), null, treeFileElement.getCharTable()).getTreeElement();
|
||||
final FileElement treeElement = new DummyHolder(((TreeElement)parent).getManager(), null, treeFileElement.getCharTable()).getTreeElement();
|
||||
final ChameleonElement chameleon = reparseable.createChameleon(newFileText, textRange.getStartOffset(), textRange.getEndOffset() + lengthShift);
|
||||
TreeUtil.addChildren(treeElement, chameleon);
|
||||
ChangeUtil.replaceAllChildren((CompositeElement)parent, chameleon.transform(treeFileElement.getCharTable(), fileImpl.createLexer()).getTreeParent());
|
||||
|
||||
@@ -93,7 +93,7 @@ public class ChangeUtil implements Constants {
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerLeafsInCharTab(CharTable newCharTab, TreeElement child, CharTable oldCharTab) {
|
||||
public static void registerLeafsInCharTab(CharTable newCharTab, ASTNode child, CharTable oldCharTab) {
|
||||
if(newCharTab == oldCharTab) return;
|
||||
while(child != null){
|
||||
CharTable charTable = child.getUserData(CharTable.CHAR_TABLE_KEY);
|
||||
@@ -101,7 +101,7 @@ public class ChangeUtil implements Constants {
|
||||
((LeafElement)child).registerInCharTable(newCharTab, oldCharTab);
|
||||
}
|
||||
else {
|
||||
registerLeafsInCharTab(newCharTab, ((CompositeElement)child).firstChild, charTable != null ? charTable : oldCharTab);
|
||||
registerLeafsInCharTab(newCharTab, child.getFirstChildNode(), charTable != null ? charTable : oldCharTab);
|
||||
}
|
||||
if (charTable != null) {
|
||||
child.putUserData(CharTable.CHAR_TABLE_KEY, null);
|
||||
@@ -221,7 +221,7 @@ public class ChangeUtil implements Constants {
|
||||
boolean physical = parentPsiElement.isPhysical();
|
||||
PsiFile file = parentPsiElement.getContainingFile();
|
||||
ChameleonTransforming.transformChildren(newChildrenParent);
|
||||
final TreeElement firstChild = newChildrenParent.firstChild;
|
||||
final ASTNode firstChild = newChildrenParent.getFirstChildNode();
|
||||
if (physical){
|
||||
PsiManagerImpl manager = (PsiManagerImpl)parent.getManager();
|
||||
manager.invalidateFile(file);
|
||||
@@ -237,7 +237,7 @@ public class ChangeUtil implements Constants {
|
||||
RepositoryManager repositoryManager = manager.getRepositoryManager();
|
||||
if (repositoryManager != null){
|
||||
ChameleonTransforming.transformChildren(parent);
|
||||
for(ASTNode child = parent.firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = parent.getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
repositoryManager.beforeChildAddedOrRemoved(file, parent, child);
|
||||
}
|
||||
|
||||
@@ -248,17 +248,17 @@ public class ChangeUtil implements Constants {
|
||||
}
|
||||
}
|
||||
final CharTable newCharTab = SharedImplUtil.findCharTableByTree(parent);
|
||||
TreeElement oldChild = parent.firstChild;
|
||||
ASTNode oldChild = parent.getFirstChildNode();
|
||||
while(oldChild != null){
|
||||
oldChild.putUserData(CharTable.CHAR_TABLE_KEY, newCharTab);
|
||||
oldChild = oldChild.getTreeNext();
|
||||
}
|
||||
TreeUtil.removeRange(parent.firstChild, null);
|
||||
TreeUtil.removeRange((TreeElement)parent.getFirstChildNode(), null);
|
||||
|
||||
if (firstChild != null){
|
||||
final CharTable oldCharTab = SharedImplUtil.findCharTableByTree(newChildrenParent);
|
||||
registerLeafsInCharTab(newCharTab, firstChild, oldCharTab);
|
||||
TreeUtil.addChildren(parent, firstChild);
|
||||
TreeUtil.addChildren(parent, (TreeElement)firstChild);
|
||||
}
|
||||
parent.setCachedLength(newLength);
|
||||
parent.subtreeChanged();
|
||||
@@ -306,10 +306,10 @@ public class ChangeUtil implements Constants {
|
||||
}
|
||||
}
|
||||
|
||||
ChameleonTransforming.transformChildren((CompositeElement)element);
|
||||
ChameleonTransforming.transformChildren((CompositeElement)original);
|
||||
TreeElement child = ((CompositeElement)element).firstChild;
|
||||
ASTNode child1 = ((CompositeElement)original).firstChild;
|
||||
ChameleonTransforming.transformChildren(element);
|
||||
ChameleonTransforming.transformChildren(original);
|
||||
TreeElement child = (TreeElement)element.getFirstChildNode();
|
||||
ASTNode child1 = original.getFirstChildNode();
|
||||
while(child != null){
|
||||
_encodeInformation(child, child1, encodeRefTargets);
|
||||
child = child.getTreeNext();
|
||||
@@ -356,8 +356,8 @@ public class ChangeUtil implements Constants {
|
||||
|
||||
public static TreeElement decodeInformation(TreeElement element) {
|
||||
if (element instanceof CompositeElement){
|
||||
ChameleonTransforming.transformChildren((CompositeElement)element);
|
||||
TreeElement child = ((CompositeElement)element).firstChild;
|
||||
ChameleonTransforming.transformChildren(element);
|
||||
TreeElement child = (TreeElement)element.getFirstChildNode();
|
||||
while(child != null){
|
||||
child = decodeInformation(child);
|
||||
child = child.getTreeNext();
|
||||
@@ -582,28 +582,28 @@ public class ChangeUtil implements Constants {
|
||||
}
|
||||
|
||||
|
||||
private static void encodeInfoInTypeElement(CompositeElement typeElement, PsiType type) {
|
||||
private static void encodeInfoInTypeElement(ASTNode typeElement, PsiType type) {
|
||||
if (type instanceof PsiPrimitiveType) return;
|
||||
LOG.assertTrue(typeElement.getElementType() == TYPE);
|
||||
if (type instanceof PsiArrayType) {
|
||||
final ASTNode firstChild = typeElement.firstChild;
|
||||
final ASTNode firstChild = typeElement.getFirstChildNode();
|
||||
LOG.assertTrue(firstChild.getElementType() == TYPE);
|
||||
encodeInfoInTypeElement((CompositeElement) firstChild, ((PsiArrayType) type).getComponentType());
|
||||
encodeInfoInTypeElement(firstChild, ((PsiArrayType) type).getComponentType());
|
||||
return;
|
||||
}
|
||||
else if (type instanceof PsiWildcardType) {
|
||||
final PsiType bound = ((PsiWildcardType)type).getBound();
|
||||
if (bound == null) return;
|
||||
final ASTNode lastChild = typeElement.lastChild;
|
||||
final ASTNode lastChild = typeElement.getLastChildNode();
|
||||
if (lastChild.getElementType() != TYPE) return;
|
||||
encodeInfoInTypeElement((CompositeElement)lastChild, bound);
|
||||
encodeInfoInTypeElement(lastChild, bound);
|
||||
}
|
||||
else if (type instanceof PsiCapturedWildcardType) {
|
||||
final PsiType bound = ((PsiCapturedWildcardType)type).getWildcard().getBound();
|
||||
if (bound == null) return;
|
||||
final ASTNode lastChild = typeElement.lastChild;
|
||||
final ASTNode lastChild = typeElement.getLastChildNode();
|
||||
if (lastChild.getElementType() != TYPE) return;
|
||||
encodeInfoInTypeElement((CompositeElement)lastChild, bound);
|
||||
encodeInfoInTypeElement(lastChild, bound);
|
||||
}
|
||||
else if (type instanceof PsiIntersectionType) {
|
||||
encodeInfoInTypeElement(typeElement, ((PsiIntersectionType)type).getRepresentative());
|
||||
@@ -615,7 +615,7 @@ public class ChangeUtil implements Constants {
|
||||
final PsiClassType.ClassResolveResult resolveResult = classType.resolveGenerics();
|
||||
final PsiClass referencedClass = resolveResult.getElement();
|
||||
if (referencedClass == null) return;
|
||||
final ASTNode reference = typeElement.firstChild;
|
||||
final ASTNode reference = typeElement.getFirstChildNode();
|
||||
LOG.assertTrue(reference.getElementType() == JAVA_CODE_REFERENCE);
|
||||
|
||||
encodeClassTypeInfoInReference((CompositeElement) reference, resolveResult.getElement(), resolveResult.getSubstitutor());
|
||||
@@ -631,13 +631,13 @@ public class ChangeUtil implements Constants {
|
||||
final PsiTypeParameter[] typeParameters = typeParameterList.getTypeParameters();
|
||||
if (typeParameters.length == 0) return;
|
||||
|
||||
final CompositeElement referenceParameterList = (CompositeElement) reference.findChildByRole(ChildRole.REFERENCE_PARAMETER_LIST);
|
||||
final ASTNode referenceParameterList = reference.findChildByRole(ChildRole.REFERENCE_PARAMETER_LIST);
|
||||
int index = 0;
|
||||
for (ASTNode child = referenceParameterList.firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = referenceParameterList.getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
if (child.getElementType() == TYPE) {
|
||||
final PsiType substitutedType = substitutor.substitute(typeParameters[index]);
|
||||
if (substitutedType != null) {
|
||||
encodeInfoInTypeElement((CompositeElement) child, substitutedType);
|
||||
encodeInfoInTypeElement(child, substitutedType);
|
||||
}
|
||||
index++;
|
||||
}
|
||||
@@ -672,7 +672,7 @@ public class ChangeUtil implements Constants {
|
||||
final CompositeElement parent = leafElements[0].getTreeParent();
|
||||
if(LOG.isDebugEnabled()){
|
||||
for (int i = 0; i < leafElements.length; i++) {
|
||||
final LeafElement leafElement = leafElements[i];
|
||||
final ASTNode leafElement = leafElements[i];
|
||||
LOG.assertTrue(leafElement.getTreeParent() == parent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ public class CompositeElement extends TreeElement implements Cloneable{
|
||||
clone.lastChild = null;
|
||||
clone.myModificationsCount = 0;
|
||||
clone.myParentModifications = -1;
|
||||
for (ASTNode child = firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
TreeUtil.addChildren(clone, (TreeElement)child.clone());
|
||||
}
|
||||
}
|
||||
@@ -162,7 +162,7 @@ public class CompositeElement extends TreeElement implements Cloneable{
|
||||
public ASTNode findChildByRole(int role) {
|
||||
LOG.assertTrue(ChildRole.isUnique(role));
|
||||
synchronized (PsiLock.LOCK) {
|
||||
for (TreeElement child = firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
if (getChildRole(child) == role) return child;
|
||||
}
|
||||
}
|
||||
@@ -190,7 +190,7 @@ public class CompositeElement extends TreeElement implements Cloneable{
|
||||
}
|
||||
final ASTNode[] result = new ASTNode[count];
|
||||
count = 0;
|
||||
for(ASTNode child = firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
if (filter == null || filter.isInSet(child.getElementType())){
|
||||
result[count++] = child;
|
||||
}
|
||||
@@ -210,7 +210,7 @@ public class CompositeElement extends TreeElement implements Cloneable{
|
||||
|
||||
PsiElement[] result = constructor.newPsiElementArray(count);
|
||||
count = 0;
|
||||
for(ASTNode child = firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
if (filter == null || filter.isInSet(child.getElementType())){
|
||||
result[count++] = SourceTreeToPsiMap.treeElementToPsi(child);
|
||||
}
|
||||
@@ -223,7 +223,7 @@ public class CompositeElement extends TreeElement implements Cloneable{
|
||||
|
||||
// no lock is needed because all chameleons are expanded already
|
||||
int count = 0;
|
||||
for(ASTNode child = firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
if (filter == null || filter.isInSet(child.getElementType())) {
|
||||
count++;
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ public abstract class CompositePsiElement extends CompositeElement implements Ps
|
||||
public void deleteChildRange(PsiElement first, PsiElement last) throws IncorrectOperationException {
|
||||
CheckUtil.checkWritable(this);
|
||||
TreeElement firstElement = SourceTreeToPsiMap.psiElementToTree(first);
|
||||
TreeElement lastElement = SourceTreeToPsiMap.psiElementToTree(last);
|
||||
ASTNode lastElement = SourceTreeToPsiMap.psiElementToTree(last);
|
||||
LOG.assertTrue(firstElement.getTreeParent() == this);
|
||||
LOG.assertTrue(lastElement.getTreeParent() == this);
|
||||
CodeEditUtil.removeChildren(this, firstElement, lastElement);
|
||||
|
||||
@@ -66,7 +66,7 @@ public abstract class FileElement extends RepositoryTreeElement{
|
||||
public void replaceChildInternal(TreeElement child, TreeElement newElement) {
|
||||
if (newElement.getElementType() == ElementType.IMPORT_LIST) {
|
||||
LOG.assertTrue(child.getElementType() == ElementType.IMPORT_LIST);
|
||||
if (((CompositeElement)newElement).firstChild == null) { //empty import list
|
||||
if (newElement.getFirstChildNode() == null) { //empty import list
|
||||
TreeElement next = child.getTreeNext();
|
||||
if (next.getElementType() == ElementType.WHITE_SPACE) {
|
||||
ChangeUtil.removeChild(this, next);
|
||||
|
||||
@@ -68,8 +68,8 @@ public abstract class LeafElement extends TreeElement {
|
||||
}
|
||||
|
||||
public synchronized CompositeElement getTreeParent() {
|
||||
if(isLast())
|
||||
return (CompositeElement)next;
|
||||
if(isLast()) return (CompositeElement)next;
|
||||
|
||||
TreeElement next = this.next;
|
||||
while(next instanceof LeafElement && !((LeafElement)next).isLast()) next = next.next;
|
||||
if(next != null) return next.getTreeParent();
|
||||
|
||||
@@ -23,13 +23,13 @@ public class SharedImplUtil {
|
||||
}
|
||||
|
||||
public static PsiElement getFirstChild(CompositeElement element) {
|
||||
if (element.firstChild == null) return null;
|
||||
return SourceTreeToPsiMap.treeElementToPsi(element.firstChild.getTransformedFirstOrSelf());
|
||||
final TreeElement firstChild = element.firstChild;
|
||||
return firstChild != null ? SourceTreeToPsiMap.treeElementToPsi(firstChild.getTransformedFirstOrSelf()) : null;
|
||||
}
|
||||
|
||||
public static PsiElement getLastChild(CompositeElement element) {
|
||||
if (element.lastChild == null) return null;
|
||||
return SourceTreeToPsiMap.treeElementToPsi(element.lastChild.getTransformedLastOrSelf());
|
||||
final TreeElement lastChild = element.lastChild;
|
||||
return lastChild != null ? SourceTreeToPsiMap.treeElementToPsi(lastChild.getTransformedLastOrSelf()) : null;
|
||||
}
|
||||
|
||||
public static PsiElement getNextSibling(ASTNode thisElement) {
|
||||
@@ -66,7 +66,7 @@ public class SharedImplUtil {
|
||||
return file != null ? file.isWritable() : true;
|
||||
}
|
||||
|
||||
public static CharTable findCharTableByTree(TreeElement tree){
|
||||
public static CharTable findCharTableByTree(ASTNode tree){
|
||||
while(tree != null){
|
||||
final CharTable userData = tree.getUserData(CharTable.CHAR_TABLE_KEY);
|
||||
if(userData != null) return userData;
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.lang.ASTNode;
|
||||
public class SourceUtil implements Constants {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.tree.SourceUtil");
|
||||
|
||||
public static int toBuffer(TreeElement element, char[] buffer, int offset) {
|
||||
public static int toBuffer(ASTNode element, char[] buffer, int offset) {
|
||||
return toBuffer(element, buffer, offset, null, SharedImplUtil.findCharTableByTree(element));
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class SourceUtil implements Constants {
|
||||
}
|
||||
else {
|
||||
int curOffset = offset;
|
||||
for (ASTNode child = ((CompositeElement)element).firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = element.getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
curOffset = toBuffer(child, buffer, curOffset, skipTypes, table);
|
||||
}
|
||||
return curOffset;
|
||||
@@ -45,7 +45,7 @@ public class SourceUtil implements Constants {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getTextSkipWhiteSpaceAndComments(TreeElement element) {
|
||||
public static String getTextSkipWhiteSpaceAndComments(ASTNode element) {
|
||||
final CharTable table = SharedImplUtil.findCharTableByTree(element);
|
||||
int length = toBuffer(element, null, 0, WHITE_SPACE_OR_COMMENT_BIT_SET, table);
|
||||
char[] buffer = new char[length];
|
||||
|
||||
@@ -41,7 +41,7 @@ public abstract class TreeElement extends ElementBase implements ASTNode, Consta
|
||||
}
|
||||
}
|
||||
else {
|
||||
final TreeElement clone = (TreeElement)clone();
|
||||
final ASTNode clone = (ASTNode)clone();
|
||||
clone.putUserData(MANAGER_KEY, getManager()); //?
|
||||
return clone;
|
||||
}
|
||||
@@ -99,7 +99,7 @@ public abstract class TreeElement extends ElementBase implements ASTNode, Consta
|
||||
public final int getStartOffsetInParent(){
|
||||
if (getTreeParent() == null) return -1;
|
||||
int offset = 0;
|
||||
for(ASTNode child = getTreeParent().firstChild; child != this; child = child.getTreeNext()){
|
||||
for(ASTNode child = getTreeParent().getFirstChildNode(); child != this; child = child.getTreeNext()){
|
||||
offset += child.getTextLength();
|
||||
}
|
||||
return offset;
|
||||
@@ -125,7 +125,7 @@ public abstract class TreeElement extends ElementBase implements ASTNode, Consta
|
||||
}
|
||||
else {
|
||||
int curOffset = startOffset;
|
||||
for (ASTNode child = ((CompositeElement)element).firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = element.getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
curOffset = textMatches(child, buffer, curOffset, endOffset);
|
||||
if (curOffset == -1) return -1;
|
||||
}
|
||||
@@ -167,14 +167,6 @@ public abstract class TreeElement extends ElementBase implements ASTNode, Consta
|
||||
|
||||
public abstract int getTextLength(CharTable charTableByTree);
|
||||
|
||||
public ASTNode getTransformedFirstOrSelf(){
|
||||
return this;
|
||||
}
|
||||
|
||||
public ASTNode getTransformedLastOrSelf(){
|
||||
return this;
|
||||
}
|
||||
|
||||
public void clearCaches(){}
|
||||
|
||||
public final boolean equals(Object obj){
|
||||
@@ -184,5 +176,13 @@ public abstract class TreeElement extends ElementBase implements ASTNode, Consta
|
||||
public final int hashCode(){
|
||||
return super.hashCode();
|
||||
}
|
||||
|
||||
public ASTNode getTransformedFirstOrSelf() {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ASTNode getTransformedLastOrSelf() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,11 +41,11 @@ public class TreeUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ASTNode findChildBackward(CompositeElement parent, TokenSet types) {
|
||||
public static ASTNode findChildBackward(ASTNode parent, TokenSet types) {
|
||||
if (DebugUtil.CHECK_INSIDE_ATOMIC_ACTION_ENABLED){
|
||||
ApplicationManager.getApplication().assertReadAccessAllowed();
|
||||
}
|
||||
for(ASTNode element = parent.lastChild; element != null; element = element.getTreePrev()){
|
||||
for(ASTNode element = parent.getLastChildNode(); element != null; element = element.getTreePrev()){
|
||||
if (types.isInSet(element.getElementType())) return element;
|
||||
}
|
||||
return null;
|
||||
@@ -95,7 +95,7 @@ public class TreeUtil {
|
||||
return (LeafElement)element;
|
||||
}
|
||||
else{
|
||||
for(ASTNode child = ((CompositeElement)element).firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = element.getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
LeafElement leaf = findFirstLeaf(child);
|
||||
if (leaf != null) return leaf;
|
||||
}
|
||||
@@ -108,7 +108,7 @@ public class TreeUtil {
|
||||
return (LeafElement)element;
|
||||
}
|
||||
else{
|
||||
for(ASTNode child = ((CompositeElement)element).lastChild; child != null; child = child.getTreePrev()){
|
||||
for(ASTNode child = element.getLastChildNode(); child != null; child = child.getTreePrev()){
|
||||
LeafElement leaf = findLastLeaf(child);
|
||||
if (leaf != null) return leaf;
|
||||
}
|
||||
@@ -229,7 +229,7 @@ public class TreeUtil {
|
||||
final TreeElement startPrev = start.getTreePrev();
|
||||
final TreeElement endPrev = end != null ? end.getTreePrev() : null;
|
||||
if (parent != null){
|
||||
if (start == parent.firstChild){
|
||||
if (start == parent.getFirstChildNode()){
|
||||
parent.firstChild = end;
|
||||
}
|
||||
if (end == null){
|
||||
@@ -308,8 +308,8 @@ public class TreeUtil {
|
||||
length += tree.getTextLength(table);
|
||||
}
|
||||
else{
|
||||
final CompositeElement composite = (CompositeElement)tree;
|
||||
TreeElement firstChild = composite.firstChild;
|
||||
final ASTNode composite = tree;
|
||||
TreeElement firstChild = (TreeElement)composite.getFirstChildNode();
|
||||
while(firstChild != null){
|
||||
length += getNotCachedLength(firstChild, table);
|
||||
firstChild = firstChild.getTreeNext();
|
||||
@@ -318,12 +318,12 @@ public class TreeUtil {
|
||||
return length;
|
||||
}
|
||||
|
||||
public static int countLeafs(CompositeElement composite) {
|
||||
public static int countLeafs(ASTNode composite) {
|
||||
int count = 0;
|
||||
ASTNode child = composite.firstChild;
|
||||
ASTNode child = composite.getFirstChildNode();
|
||||
while(child != null){
|
||||
if(child instanceof LeafElement) count++;
|
||||
else count += countLeafs((CompositeElement)child);
|
||||
else count += countLeafs(child);
|
||||
child = child.getTreeNext();
|
||||
}
|
||||
return count;
|
||||
@@ -332,8 +332,8 @@ public class TreeUtil {
|
||||
public static void clearCaches(TreeElement tree) {
|
||||
tree.clearCaches();
|
||||
if(tree instanceof CompositeElement){
|
||||
final CompositeElement composite = ((CompositeElement)tree);
|
||||
TreeElement child = composite.firstChild;
|
||||
final ASTNode composite = tree;
|
||||
TreeElement child = (TreeElement)composite.getFirstChildNode();
|
||||
while(child != null){
|
||||
clearCaches(child);
|
||||
child = child.getTreeNext();
|
||||
|
||||
@@ -26,7 +26,7 @@ public abstract class AnonymousClassElementBase extends ClassElement {
|
||||
return null;
|
||||
|
||||
case ChildRole.BASE_CLASS_REFERENCE:
|
||||
return firstChild.getElementType() == JavaElementType.JAVA_CODE_REFERENCE ? firstChild : null;
|
||||
return getFirstChildNode().getElementType() == JavaElementType.JAVA_CODE_REFERENCE ? getFirstChildNode() : null;
|
||||
|
||||
case ChildRole.ARGUMENT_LIST:
|
||||
return TreeUtil.findChild(this, JavaElementType.EXPRESSION_LIST);
|
||||
|
||||
@@ -144,8 +144,8 @@ public class ClassElement extends RepositoryTreeElement {
|
||||
return null;
|
||||
|
||||
case ChildRole.DOC_COMMENT:
|
||||
if (firstChild.getElementType() == DOC_COMMENT) {
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == DOC_COMMENT) {
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
@@ -171,7 +171,7 @@ public class ClassElement extends RepositoryTreeElement {
|
||||
return TreeUtil.findChild(this, TYPE_PARAMETER_LIST);
|
||||
|
||||
case ChildRole.CLASS_OR_INTERFACE_KEYWORD:
|
||||
for (TreeElement child = firstChild; child != null; child = child.getTreeNext()) {
|
||||
for (ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()) {
|
||||
if (CLASS_KEYWORD_BIT_SET.isInSet(child.getElementType())) return child;
|
||||
}
|
||||
LOG.assertTrue(false);
|
||||
@@ -191,9 +191,9 @@ public class ClassElement extends RepositoryTreeElement {
|
||||
}
|
||||
}
|
||||
|
||||
private TreeElement findEnumConstantListDelimiter() {
|
||||
private ASTNode findEnumConstantListDelimiter() {
|
||||
ASTNode candidate = findEnumConstantListDelimiterPlace();
|
||||
return candidate.getElementType() == SEMICOLON ? (TreeElement)candidate : null;
|
||||
return candidate.getElementType() == SEMICOLON ? candidate : null;
|
||||
}
|
||||
|
||||
private TreeElement findEnumConstantListDelimiterPlace() {
|
||||
@@ -206,7 +206,7 @@ public class ClassElement extends RepositoryTreeElement {
|
||||
else if (childType == COMMA) continue;
|
||||
else if (childType == SEMICOLON) return (TreeElement)child;
|
||||
else {
|
||||
return (TreeElement)TreeUtil.skipElementsBack((TreeElement)child.getTreePrev(), WHITE_SPACE_OR_COMMENT_BIT_SET);
|
||||
return (TreeElement)TreeUtil.skipElementsBack(child.getTreePrev(), WHITE_SPACE_OR_COMMENT_BIT_SET);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ public class EnumConstantElement extends RepositoryTreeElement {
|
||||
return null;
|
||||
|
||||
case ChildRole.DOC_COMMENT:
|
||||
if (firstChild.getElementType() == JavaTokenType.DOC_COMMENT){
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == JavaTokenType.DOC_COMMENT){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
|
||||
@@ -34,8 +34,8 @@ public class FieldElement extends RepositoryTreeElement{
|
||||
return null;
|
||||
|
||||
case ChildRole.DOC_COMMENT:
|
||||
if (firstChild.getElementType() == JavaTokenType.DOC_COMMENT){
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == JavaTokenType.DOC_COMMENT){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ImportStatementBaseElement extends RepositoryTreeElement {
|
||||
return null;
|
||||
|
||||
case ChildRole.IMPORT_KEYWORD:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.IMPORT_ON_DEMAND_DOT:
|
||||
return TreeUtil.findChild(this, DOT);
|
||||
|
||||
@@ -19,7 +19,7 @@ public class JavaFileElement extends FileElement{
|
||||
public TreeElement addInternal(TreeElement first, TreeElement last, TreeElement anchor, Boolean before) {
|
||||
ChameleonTransforming.transformChildren(this);
|
||||
if (before == null && first == last && first.getElementType() == ElementType.PACKAGE_STATEMENT){ //?
|
||||
anchor = firstChild;
|
||||
anchor = (TreeElement)getFirstChildNode();
|
||||
before = Boolean.TRUE;
|
||||
}
|
||||
return super.addInternal(first, last, anchor, before);
|
||||
|
||||
@@ -47,8 +47,8 @@ public class MethodElement extends RepositoryTreeElement{
|
||||
return null;
|
||||
|
||||
case ChildRole.DOC_COMMENT:
|
||||
if (firstChild.getElementType() == DOC_COMMENT){
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == DOC_COMMENT){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
|
||||
@@ -18,8 +18,8 @@ public class ModifierListElement extends RepositoryTreeElement{
|
||||
public TreeElement addInternal(TreeElement first, TreeElement last, TreeElement anchor, Boolean before) {
|
||||
if (before == null){
|
||||
if (first == last && ElementType.KEYWORD_BIT_SET.isInSet(first.getElementType())){
|
||||
anchor = CodeEditUtil.getDefaultAnchor((PsiModifierList)SourceTreeToPsiMap.treeElementToPsi(this),
|
||||
(PsiKeyword)SourceTreeToPsiMap.treeElementToPsi(first));
|
||||
anchor = (TreeElement)CodeEditUtil.getDefaultAnchor((PsiModifierList)SourceTreeToPsiMap.treeElementToPsi(this),
|
||||
(PsiKeyword)SourceTreeToPsiMap.treeElementToPsi(first));
|
||||
before = Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,16 +92,16 @@ public class ParameterListElement extends RepositoryTreeElement {
|
||||
return null;
|
||||
|
||||
case ChildRole.LPARENTH:
|
||||
if (firstChild.getElementType() == LPARENTH) {
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == LPARENTH) {
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
|
||||
case ChildRole.RPARENTH:
|
||||
if (lastChild.getElementType() == RPARENTH) {
|
||||
return lastChild;
|
||||
if (getLastChildNode().getElementType() == RPARENTH) {
|
||||
return getLastChildNode();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeUtil;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
@@ -37,7 +36,7 @@ public class PsiArrayAccessExpressionImpl extends CompositePsiElement implements
|
||||
return null;
|
||||
|
||||
case ChildRole.ARRAY:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.INDEX:
|
||||
{
|
||||
@@ -45,7 +44,7 @@ public class PsiArrayAccessExpressionImpl extends CompositePsiElement implements
|
||||
if (lbracket == null) return null;
|
||||
for(ASTNode child = lbracket.getTreeNext(); child != null; child = child.getTreeNext()){
|
||||
if (EXPRESSION_BIT_SET.isInSet(child.getElementType())){
|
||||
return (TreeElement)child;
|
||||
return child;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -70,7 +69,7 @@ public class PsiArrayAccessExpressionImpl extends CompositePsiElement implements
|
||||
}
|
||||
else {
|
||||
if (EXPRESSION_BIT_SET.isInSet(child.getElementType())) {
|
||||
return child == firstChild ? ChildRole.ARRAY : ChildRole.INDEX;
|
||||
return child == getFirstChildNode() ? ChildRole.ARRAY : ChildRole.INDEX;
|
||||
}
|
||||
else {
|
||||
return ChildRole.NONE;
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.intellij.psi.PsiExpression;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeUtil;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
@@ -45,8 +44,8 @@ public class PsiAssertStatementImpl extends CompositePsiElement implements PsiAs
|
||||
{
|
||||
ASTNode colon = findChildByRole(ChildRole.COLON);
|
||||
if (colon == null) return null;
|
||||
TreeElement child;
|
||||
for(child = (TreeElement)colon.getTreeNext(); child != null; child = child.getTreeNext()){
|
||||
ASTNode child;
|
||||
for(child = colon.getTreeNext(); child != null; child = child.getTreeNext()){
|
||||
if (EXPRESSION_BIT_SET.isInSet(child.getElementType())) break;
|
||||
}
|
||||
return child;
|
||||
|
||||
@@ -37,10 +37,10 @@ public class PsiAssignmentExpressionImpl extends CompositePsiElement implements
|
||||
return null;
|
||||
|
||||
case ChildRole.LOPERAND:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.ROPERAND:
|
||||
return EXPRESSION_BIT_SET.isInSet(lastChild.getElementType()) ? lastChild : null;
|
||||
return EXPRESSION_BIT_SET.isInSet(getLastChildNode().getElementType()) ? getLastChildNode() : null;
|
||||
|
||||
case ChildRole.OPERATION_SIGN:
|
||||
return TreeUtil.findChild(this, OUR_OPERATIONS_BIT_SET);
|
||||
@@ -50,8 +50,8 @@ public class PsiAssignmentExpressionImpl extends CompositePsiElement implements
|
||||
public int getChildRole(ASTNode child) {
|
||||
LOG.assertTrue(child.getTreeParent() == this);
|
||||
if (EXPRESSION_BIT_SET.isInSet(child.getElementType())) {
|
||||
if (child == firstChild) return ChildRole.LOPERAND;
|
||||
if (child == lastChild) return ChildRole.ROPERAND;
|
||||
if (child == getFirstChildNode()) return ChildRole.LOPERAND;
|
||||
if (child == getLastChildNode()) return ChildRole.ROPERAND;
|
||||
return ChildRole.NONE;
|
||||
}
|
||||
else if (OUR_OPERATIONS_BIT_SET.isInSet(child.getElementType())) {
|
||||
|
||||
@@ -87,10 +87,10 @@ public class PsiBinaryExpressionImpl extends CompositePsiElement implements PsiB
|
||||
return null;
|
||||
|
||||
case ChildRole.LOPERAND:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.ROPERAND:
|
||||
return EXPRESSION_BIT_SET.isInSet(lastChild.getElementType()) ? lastChild : null;
|
||||
return EXPRESSION_BIT_SET.isInSet(getLastChildNode().getElementType()) ? getLastChildNode() : null;
|
||||
|
||||
case ChildRole.OPERATION_SIGN:
|
||||
return TreeUtil.findChild(this, OUR_OPERATIONS_BIT_SET);
|
||||
@@ -100,8 +100,8 @@ public class PsiBinaryExpressionImpl extends CompositePsiElement implements PsiB
|
||||
public int getChildRole(ASTNode child) {
|
||||
LOG.assertTrue(child.getTreeParent() == this);
|
||||
if (EXPRESSION_BIT_SET.isInSet(child.getElementType())) {
|
||||
if (child == firstChild) return ChildRole.LOPERAND;
|
||||
if (child == lastChild) return ChildRole.ROPERAND;
|
||||
if (child == getFirstChildNode()) return ChildRole.LOPERAND;
|
||||
if (child == getLastChildNode()) return ChildRole.ROPERAND;
|
||||
return ChildRole.NONE;
|
||||
}
|
||||
else if (OUR_OPERATIONS_BIT_SET.isInSet(child.getElementType())) {
|
||||
|
||||
@@ -22,7 +22,7 @@ public class PsiBreakStatementImpl extends CompositePsiElement implements PsiBre
|
||||
public PsiStatement findExitedStatement() {
|
||||
PsiIdentifier label = getLabelIdentifier();
|
||||
if (label == null){
|
||||
for(CompositeElement parent = getTreeParent(); parent != null; parent = parent.getTreeParent()){
|
||||
for(ASTNode parent = getTreeParent(); parent != null; parent = parent.getTreeParent()){
|
||||
IElementType i = parent.getElementType();
|
||||
if (i == FOR_STATEMENT || i == WHILE_STATEMENT || i == DO_WHILE_STATEMENT || i == SWITCH_STATEMENT || i == FOREACH_STATEMENT) {
|
||||
return (PsiStatement)SourceTreeToPsiMap.treeElementToPsi(parent);
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.lang.ASTNode;
|
||||
@@ -79,7 +78,7 @@ public class PsiConditionalExpressionImpl extends CompositePsiElement implements
|
||||
return null;
|
||||
|
||||
case ChildRole.CONDITION:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.QUEST:
|
||||
return TreeUtil.findChild(this, QUEST);
|
||||
@@ -93,7 +92,7 @@ public class PsiConditionalExpressionImpl extends CompositePsiElement implements
|
||||
if (EXPRESSION_BIT_SET.isInSet(child.getElementType())) break;
|
||||
child = child.getTreeNext();
|
||||
}
|
||||
return (TreeElement)child;
|
||||
return child;
|
||||
}
|
||||
|
||||
case ChildRole.COLON:
|
||||
@@ -103,7 +102,7 @@ public class PsiConditionalExpressionImpl extends CompositePsiElement implements
|
||||
{
|
||||
ASTNode colon = findChildByRole(ChildRole.COLON);
|
||||
if (colon == null) return null;
|
||||
return EXPRESSION_BIT_SET.isInSet(lastChild.getElementType()) ? lastChild : null;
|
||||
return EXPRESSION_BIT_SET.isInSet(getLastChildNode().getElementType()) ? getLastChildNode() : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public class PsiContinueStatementImpl extends CompositePsiElement implements Psi
|
||||
public PsiStatement findContinuedStatement() {
|
||||
PsiIdentifier label = getLabelIdentifier();
|
||||
if (label == null){
|
||||
for(CompositeElement parent = getTreeParent(); parent != null; parent = parent.getTreeParent()){
|
||||
for(ASTNode parent = getTreeParent(); parent != null; parent = parent.getTreeParent()){
|
||||
IElementType i = parent.getElementType();
|
||||
if (i == FOR_STATEMENT || i == FOREACH_STATEMENT || i == WHILE_STATEMENT || i == DO_WHILE_STATEMENT) {
|
||||
return (PsiStatement)SourceTreeToPsiMap.treeElementToPsi(parent);
|
||||
|
||||
@@ -35,7 +35,7 @@ public class PsiDeclarationStatementImpl extends CompositePsiElement implements
|
||||
return;
|
||||
} else {
|
||||
if (SourceTreeToPsiMap.psiElementToTree(declaredElements[length - 1]) == child) {
|
||||
removeCommaBefore((TreeElement)child);
|
||||
removeCommaBefore(child);
|
||||
final LeafElement semicolon = Factory.createSingleLeafElement(SEMICOLON, new char[]{';'}, 0, 1,
|
||||
SharedImplUtil.findCharTableByTree(this), getManager());
|
||||
ChangeUtil.addChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(declaredElements[length - 2]), semicolon, null);
|
||||
@@ -45,10 +45,10 @@ public class PsiDeclarationStatementImpl extends CompositePsiElement implements
|
||||
ASTNode copyChild = ((TreeElement)child).copyElement();
|
||||
ASTNode nameChild = ((CompositeElement)copyChild).findChildByRole(ChildRole.NAME);
|
||||
removeCommaBefore(next);
|
||||
next.addInternal(((CompositeElement)copyChild).firstChild, (TreeElement)nameChild.getTreePrev(), null, Boolean.FALSE);
|
||||
next.addInternal((TreeElement)copyChild.getFirstChildNode(), (TreeElement)nameChild.getTreePrev(), null, Boolean.FALSE);
|
||||
}
|
||||
else {
|
||||
removeCommaBefore ((TreeElement)child);
|
||||
removeCommaBefore (child);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -56,8 +56,8 @@ public class PsiDeclarationStatementImpl extends CompositePsiElement implements
|
||||
super.deleteChildInternal(child);
|
||||
}
|
||||
|
||||
private void removeCommaBefore(TreeElement child) {
|
||||
TreeElement prev = child;
|
||||
private void removeCommaBefore(ASTNode child) {
|
||||
ASTNode prev = child;
|
||||
do {
|
||||
prev = prev.getTreePrev();
|
||||
} while (prev != null && JavaTokenType.WHITE_SPACE_OR_COMMENT_BIT_SET.isInSet(prev.getElementType()));
|
||||
|
||||
@@ -28,11 +28,11 @@ public class PsiExpressionListImpl extends CompositePsiElement implements PsiExp
|
||||
return null;
|
||||
|
||||
case ChildRole.LPARENTH:
|
||||
return firstChild != null && firstChild.getElementType() == LPARENTH ? firstChild : null;
|
||||
return getFirstChildNode() != null && getFirstChildNode().getElementType() == LPARENTH ? getFirstChildNode() : null;
|
||||
|
||||
case ChildRole.RPARENTH:
|
||||
if (lastChild != null && lastChild.getElementType() == RPARENTH) {
|
||||
return lastChild;
|
||||
if (getLastChildNode() != null && getLastChildNode().getElementType() == RPARENTH) {
|
||||
return getLastChildNode();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
|
||||
@@ -48,7 +48,7 @@ public class PsiForeachStatementImpl extends CompositePsiElement implements PsiF
|
||||
return TreeUtil.findChild(this, EXPRESSION_BIT_SET);
|
||||
|
||||
case ChildRole.FOR_KEYWORD:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.LPARENTH:
|
||||
return TreeUtil.findChild(this, LPARENTH);
|
||||
|
||||
@@ -90,7 +90,7 @@ public class PsiIfStatementImpl extends CompositePsiElement implements PsiIfStat
|
||||
ASTNode elseKeyword = findChildByRole(ChildRole.ELSE_KEYWORD);
|
||||
if (elseKeyword == null) return null;
|
||||
for(ASTNode child = elseKeyword.getTreeNext(); child != null; child = child.getTreeNext()){
|
||||
if (STATEMENT_BIT_SET.isInSet(child.getElementType())) return (TreeElement)child;
|
||||
if (STATEMENT_BIT_SET.isInSet(child.getElementType())) return child;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public class PsiLabeledStatementImpl extends CompositePsiElement implements PsiL
|
||||
return TreeUtil.findChild(this, COLON);
|
||||
|
||||
case ChildRole.LABEL_NAME:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class PsiLiteralExpressionImpl extends CompositePsiElement implements PsiLiteralExpression {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.tree.java.PsiLiteralExpressionImpl");
|
||||
@@ -15,7 +16,7 @@ public class PsiLiteralExpressionImpl extends CompositePsiElement implements Psi
|
||||
}
|
||||
|
||||
public PsiType getType() {
|
||||
IElementType i = firstChild.getElementType();
|
||||
IElementType i = getFirstChildNode().getElementType();
|
||||
if (i == INTEGER_LITERAL) {
|
||||
return PsiType.INT;
|
||||
}
|
||||
@@ -51,9 +52,9 @@ public class PsiLiteralExpressionImpl extends CompositePsiElement implements Psi
|
||||
private static final String _2_IN_63_L = _2_IN_63 + "l";
|
||||
|
||||
public Object getValue() {
|
||||
String text = firstChild.getText();
|
||||
String text = getFirstChildNode().getText();
|
||||
int textLength = text.length();
|
||||
IElementType i = firstChild.getElementType();
|
||||
IElementType i = getFirstChildNode().getElementType();
|
||||
if (i == INTEGER_LITERAL) {
|
||||
try {
|
||||
if (text.startsWith("0x") || text.startsWith("0X")) {
|
||||
@@ -173,8 +174,8 @@ public class PsiLiteralExpressionImpl extends CompositePsiElement implements Psi
|
||||
|
||||
public String getParsingError() {
|
||||
final Object value = getValue();
|
||||
String text = firstChild.getText();
|
||||
IElementType i = firstChild.getElementType();
|
||||
String text = getFirstChildNode().getText();
|
||||
IElementType i = getFirstChildNode().getElementType();
|
||||
if (i == INTEGER_LITERAL) {
|
||||
text = text.toLowerCase();
|
||||
//literal 2147483648 may appear only as the operand of the unary negation operator -.
|
||||
@@ -254,7 +255,7 @@ public class PsiLiteralExpressionImpl extends CompositePsiElement implements Psi
|
||||
* @return true if floating point literal consists of zeros only
|
||||
*/
|
||||
private boolean isFPZero() {
|
||||
String text = firstChild.getText();
|
||||
String text = getFirstChildNode().getText();
|
||||
for(int i = 0; i < text.length(); i++){
|
||||
char c = text.charAt(i);
|
||||
if (Character.isDigit(c) && c != '0') return false;
|
||||
|
||||
@@ -55,7 +55,7 @@ public class PsiLocalVariableImpl extends CompositePsiElement implements PsiLoca
|
||||
}
|
||||
|
||||
public PsiTypeElement getTypeElement() {
|
||||
CompositeElement first = (CompositeElement)TreeUtil.findChild(getTreeParent(), LOCAL_VARIABLE);
|
||||
ASTNode first = TreeUtil.findChild(getTreeParent(), LOCAL_VARIABLE);
|
||||
return (PsiTypeElement)SourceTreeToPsiMap.treeElementToPsi(TreeUtil.findChild(first, TYPE));
|
||||
}
|
||||
|
||||
@@ -124,20 +124,20 @@ public class PsiLocalVariableImpl extends CompositePsiElement implements PsiLoca
|
||||
ChangeUtil.addChild(statement1, variable, null);
|
||||
|
||||
TreeElement space = Factory.createSingleLeafElement(JavaTokenType.WHITE_SPACE, new char[]{' '}, 0, 1, treeCharTab, getManager());
|
||||
ChangeUtil.addChild(variable, space, variable.firstChild);
|
||||
ChangeUtil.addChild(variable, space, (TreeElement)variable.getFirstChildNode());
|
||||
|
||||
TreeElement typeClone = (TreeElement)type.clone();
|
||||
typeClone.putUserData(CharTable.CHAR_TABLE_KEY, treeCharTab);
|
||||
ChangeUtil.addChild(variable, typeClone, variable.firstChild);
|
||||
ChangeUtil.addChild(variable, typeClone, (TreeElement)variable.getFirstChildNode());
|
||||
|
||||
if (modifierList.getTextLength() > 0){
|
||||
space = Factory.createSingleLeafElement(JavaTokenType.WHITE_SPACE, new char[]{' '}, 0, 1, treeCharTab, getManager());
|
||||
ChangeUtil.addChild(variable, space, variable.firstChild);
|
||||
ChangeUtil.addChild(variable, space, (TreeElement)variable.getFirstChildNode());
|
||||
}
|
||||
|
||||
TreeElement modifierListClone = (TreeElement)modifierList.clone();
|
||||
modifierListClone.putUserData(CharTable.CHAR_TABLE_KEY, treeCharTab);
|
||||
ChangeUtil.addChild(variable, modifierListClone, variable.firstChild);
|
||||
ChangeUtil.addChild(variable, modifierListClone, (TreeElement)variable.getFirstChildNode());
|
||||
|
||||
TreeElement semicolon = Factory.createSingleLeafElement(JavaTokenType.SEMICOLON, new char[]{';'}, 0, 1, treeCharTab, getManager());
|
||||
ChangeUtil.addChild((CompositeElement)SourceTreeToPsiMap.psiElementToTree(variables[i - 1]), semicolon, null);
|
||||
@@ -222,7 +222,7 @@ public class PsiLocalVariableImpl extends CompositePsiElement implements PsiLoca
|
||||
public boolean processDeclarations(PsiScopeProcessor processor, PsiSubstitutor substitutor, PsiElement lastParent, PsiElement place) {
|
||||
if (lastParent == null) return true;
|
||||
if (lastParent.getParent() != this) return true;
|
||||
final TreeElement lastParentTree = SourceTreeToPsiMap.psiElementToTree(lastParent);
|
||||
final ASTNode lastParentTree = SourceTreeToPsiMap.psiElementToTree(lastParent);
|
||||
|
||||
if (getChildRole(lastParentTree) == ChildRole.INITIALIZER)
|
||||
return processor.execute(this, substitutor);
|
||||
|
||||
@@ -83,7 +83,7 @@ public class PsiMethodCallExpressionImpl extends CompositePsiElement implements
|
||||
return null;
|
||||
|
||||
case ChildRole.METHOD_EXPRESSION:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.ARGUMENT_LIST:
|
||||
return TreeUtil.findChild(this, EXPRESSION_LIST);
|
||||
|
||||
@@ -99,7 +99,7 @@ public class PsiNameValuePairImpl extends CompositePsiElement implements PsiName
|
||||
PsiAnnotationImpl annotation = (PsiAnnotationImpl)getTreeParent().getTreeParent();
|
||||
PsiJavaCodeReferenceElement nameRef = annotation.getNameReferenceElement();
|
||||
return nameRef == null ? null : (PsiClass)nameRef.resolve();
|
||||
};
|
||||
}
|
||||
|
||||
public PsiElement getElement() {
|
||||
PsiIdentifier nameIdentifier = getNameIdentifier();
|
||||
@@ -138,10 +138,11 @@ public class PsiNameValuePairImpl extends CompositePsiElement implements PsiName
|
||||
PsiIdentifier nameIdentifier = getNameIdentifier();
|
||||
if (nameIdentifier != null) {
|
||||
SharedPsiElementImplUtil.setName(nameIdentifier, newElementName);
|
||||
} else if (ANNOTATION_MEMBER_VALUE_BIT_SET.isInSet(firstChild.getElementType())) {
|
||||
}
|
||||
else if (ANNOTATION_MEMBER_VALUE_BIT_SET.isInSet(getFirstChildNode().getElementType())) {
|
||||
PsiElementFactory factory = getManager().getElementFactory();
|
||||
nameIdentifier = factory.createIdentifier(newElementName);
|
||||
addBefore(nameIdentifier, SourceTreeToPsiMap.treeElementToPsi(firstChild));
|
||||
addBefore(nameIdentifier, SourceTreeToPsiMap.treeElementToPsi(getFirstChildNode()));
|
||||
}
|
||||
|
||||
return PsiNameValuePairImpl.this;
|
||||
|
||||
@@ -17,7 +17,7 @@ public class PsiNewExpressionImpl extends CompositePsiElement implements PsiNewE
|
||||
|
||||
public PsiType getType(){
|
||||
PsiType type = null;
|
||||
for(ASTNode child = firstChild; child != null; child = child.getTreeNext()){
|
||||
for(ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()){
|
||||
if (child.getElementType() == JAVA_CODE_REFERENCE){
|
||||
LOG.assertTrue(type == null);
|
||||
type = new PsiClassReferenceType((PsiJavaCodeReferenceElement)SourceTreeToPsiMap.treeElementToPsi(child));
|
||||
@@ -73,7 +73,7 @@ public class PsiNewExpressionImpl extends CompositePsiElement implements PsiNewE
|
||||
public ResolveResult resolveMethodGenerics() {
|
||||
ASTNode classRef = findChildByRole(ChildRole.TYPE_REFERENCE);
|
||||
if (classRef != null){
|
||||
ASTNode argumentList = TreeUtil.skipElements((TreeElement)classRef.getTreeNext(), WHITE_SPACE_OR_COMMENT_BIT_SET);
|
||||
ASTNode argumentList = TreeUtil.skipElements(classRef.getTreeNext(), WHITE_SPACE_OR_COMMENT_BIT_SET);
|
||||
if (argumentList != null && argumentList.getElementType() == EXPRESSION_LIST) {
|
||||
PsiType aClass = getManager().getElementFactory().createType(
|
||||
(PsiJavaCodeReferenceElement)SourceTreeToPsiMap.treeElementToPsi(classRef));
|
||||
@@ -89,7 +89,7 @@ public class PsiNewExpressionImpl extends CompositePsiElement implements PsiNewE
|
||||
if (anonymousClass != null) {
|
||||
PsiType aClass = ((PsiAnonymousClass)SourceTreeToPsiMap.treeElementToPsi(anonymousClass)).getBaseClassType();
|
||||
if (aClass != null) {
|
||||
ASTNode argumentList = TreeUtil.findChild((CompositeElement)anonymousClass, EXPRESSION_LIST);
|
||||
ASTNode argumentList = TreeUtil.findChild(anonymousClass, EXPRESSION_LIST);
|
||||
return getManager().getResolveHelper().resolveConstructor((PsiClassType)aClass,
|
||||
(PsiExpressionList)SourceTreeToPsiMap.treeElementToPsi(argumentList),
|
||||
this);
|
||||
@@ -147,7 +147,7 @@ public class PsiNewExpressionImpl extends CompositePsiElement implements PsiNewE
|
||||
return TreeUtil.findChild(this, REFERENCE_PARAMETER_LIST);
|
||||
|
||||
case ChildRole.QUALIFIER:
|
||||
return firstChild.getElementType() != NEW_KEYWORD ? firstChild : null;
|
||||
return getFirstChildNode().getElementType() != NEW_KEYWORD ? getFirstChildNode() : null;
|
||||
|
||||
case ChildRole.DOT:
|
||||
return TreeUtil.findChild(this, DOT);
|
||||
@@ -174,8 +174,8 @@ public class PsiNewExpressionImpl extends CompositePsiElement implements PsiNewE
|
||||
return TreeUtil.findChild(this, RBRACKET);
|
||||
|
||||
case ChildRole.ARRAY_INITIALIZER:
|
||||
if (lastChild.getElementType() == ARRAY_INITIALIZER_EXPRESSION){
|
||||
return lastChild;
|
||||
if (getLastChildNode().getElementType() == ARRAY_INITIALIZER_EXPRESSION){
|
||||
return getLastChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
@@ -208,10 +208,10 @@ public class PsiNewExpressionImpl extends CompositePsiElement implements PsiNewE
|
||||
return ChildRole.RBRACKET;
|
||||
}
|
||||
else if (i == ARRAY_INITIALIZER_EXPRESSION) {
|
||||
if (child == lastChild) {
|
||||
if (child == getLastChildNode()) {
|
||||
return ChildRole.ARRAY_INITIALIZER;
|
||||
}
|
||||
else if (child == firstChild) {
|
||||
else if (child == getFirstChildNode()) {
|
||||
return ChildRole.QUALIFIER;
|
||||
}
|
||||
else {
|
||||
@@ -226,7 +226,7 @@ public class PsiNewExpressionImpl extends CompositePsiElement implements PsiNewE
|
||||
return ChildRole.TYPE_KEYWORD;
|
||||
}
|
||||
else if (EXPRESSION_BIT_SET.isInSet(child.getElementType())) {
|
||||
return child == firstChild ? ChildRole.QUALIFIER : ChildRole.ARRAY_DIMENSION;
|
||||
return child == getFirstChildNode() ? ChildRole.QUALIFIER : ChildRole.ARRAY_DIMENSION;
|
||||
}
|
||||
else {
|
||||
return ChildRole.NONE;
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PsiPackageStatementImpl extends CompositePsiElement implements PsiP
|
||||
return null;
|
||||
|
||||
case ChildRole.PACKAGE_KEYWORD:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.PACKAGE_REFERENCE:
|
||||
return TreeUtil.findChild(this, JAVA_CODE_REFERENCE);
|
||||
|
||||
@@ -34,17 +34,17 @@ public class PsiPostfixExpressionImpl extends CompositePsiElement implements Psi
|
||||
return null;
|
||||
|
||||
case ChildRole.OPERAND:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.OPERATION_SIGN:
|
||||
return lastChild;
|
||||
return getLastChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
public int getChildRole(ASTNode child) {
|
||||
LOG.assertTrue(child.getTreeParent() == this);
|
||||
if (child == firstChild) return ChildRole.OPERAND;
|
||||
if (child == lastChild) return ChildRole.OPERATION_SIGN;
|
||||
if (child == getFirstChildNode()) return ChildRole.OPERAND;
|
||||
if (child == getLastChildNode()) return ChildRole.OPERATION_SIGN;
|
||||
return ChildRole.NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -60,17 +60,17 @@ public class PsiPrefixExpressionImpl extends CompositePsiElement implements PsiP
|
||||
return null;
|
||||
|
||||
case ChildRole.OPERATION_SIGN:
|
||||
return firstChild;
|
||||
return getFirstChildNode();
|
||||
|
||||
case ChildRole.OPERAND:
|
||||
return EXPRESSION_BIT_SET.isInSet(lastChild.getElementType()) ? lastChild : null;
|
||||
return EXPRESSION_BIT_SET.isInSet(getLastChildNode().getElementType()) ? getLastChildNode() : null;
|
||||
}
|
||||
}
|
||||
|
||||
public int getChildRole(ASTNode child) {
|
||||
LOG.assertTrue(child.getTreeParent() == this);
|
||||
if (child == firstChild) return ChildRole.OPERATION_SIGN;
|
||||
if (child == lastChild && EXPRESSION_BIT_SET.isInSet(child.getElementType())) return ChildRole.OPERAND;
|
||||
if (child == getFirstChildNode()) return ChildRole.OPERATION_SIGN;
|
||||
if (child == getLastChildNode() && EXPRESSION_BIT_SET.isInSet(child.getElementType())) return ChildRole.OPERAND;
|
||||
return ChildRole.NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -291,14 +291,14 @@ public class PsiReferenceExpressionImpl extends CompositePsiElement implements P
|
||||
}
|
||||
|
||||
public boolean isReferenceTo(PsiElement element) {
|
||||
IElementType i = lastChild.getElementType();
|
||||
IElementType i = getLastChildNode().getElementType();
|
||||
if (i == IDENTIFIER) {
|
||||
{
|
||||
if (!(element instanceof PsiPackage)) {
|
||||
if (!(element instanceof PsiNamedElement)) return false;
|
||||
String name = ((PsiNamedElement)element).getName();
|
||||
if (name == null) return false;
|
||||
if (!name.equals(lastChild.getText())) return false;
|
||||
if (!name.equals(getLastChildNode().getText())) return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -469,11 +469,11 @@ public class PsiReferenceExpressionImpl extends CompositePsiElement implements P
|
||||
return null;
|
||||
|
||||
case ChildRole.REFERENCE_NAME:
|
||||
return getChildRole(lastChild) == role ? lastChild : null;
|
||||
return getChildRole(getLastChildNode()) == role ? getLastChildNode() : null;
|
||||
|
||||
case ChildRole.QUALIFIER:
|
||||
if (getChildRole(firstChild) == ChildRole.QUALIFIER){
|
||||
return firstChild;
|
||||
if (getChildRole(getFirstChildNode()) == ChildRole.QUALIFIER){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
@@ -549,7 +549,7 @@ public class PsiReferenceExpressionImpl extends CompositePsiElement implements P
|
||||
}
|
||||
|
||||
public boolean isQualified() {
|
||||
return getChildRole(firstChild) == ChildRole.QUALIFIER;
|
||||
return getChildRole(getFirstChildNode()) == ChildRole.QUALIFIER;
|
||||
}
|
||||
|
||||
public ASTNode getTreeQualifier() {
|
||||
|
||||
@@ -57,16 +57,16 @@ public class PsiReferenceParameterListImpl extends CompositePsiElement implement
|
||||
return null;
|
||||
|
||||
case ChildRole.LT_IN_TYPE_LIST:
|
||||
if (firstChild != null && firstChild.getElementType() == LT){
|
||||
return firstChild;
|
||||
if (getFirstChildNode() != null && getFirstChildNode().getElementType() == LT){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
}
|
||||
|
||||
case ChildRole.GT_IN_TYPE_LIST:
|
||||
if (lastChild != null && lastChild.getElementType() == GT){
|
||||
return lastChild;
|
||||
if (getLastChildNode() != null && getLastChildNode().getElementType() == GT){
|
||||
return getLastChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
@@ -76,8 +76,8 @@ public class PsiReferenceParameterListImpl extends CompositePsiElement implement
|
||||
|
||||
public TreeElement addInternal(TreeElement first, TreeElement last, TreeElement anchor, Boolean before){
|
||||
if (first == last && first.getElementType() == TYPE){
|
||||
if (lastChild != null && lastChild.getElementType() == ERROR_ELEMENT){
|
||||
super.deleteChildInternal(lastChild);
|
||||
if (getLastChildNode() != null && getLastChildNode().getElementType() == ERROR_ELEMENT){
|
||||
super.deleteChildInternal(getLastChildNode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,13 +115,13 @@ public class PsiReferenceParameterListImpl extends CompositePsiElement implement
|
||||
}
|
||||
}
|
||||
|
||||
if (firstChild.getElementType() != LT){
|
||||
if (getFirstChildNode().getElementType() != LT){
|
||||
TreeElement lt = Factory.createSingleLeafElement(LT, new char[]{'<'}, 0, 1, treeCharTab, getManager());
|
||||
super.addInternal(lt, lt, firstChild, Boolean.TRUE);
|
||||
super.addInternal(lt, lt, (TreeElement)getFirstChildNode(), Boolean.TRUE);
|
||||
}
|
||||
if (lastChild.getElementType() != GT){
|
||||
if (getLastChildNode().getElementType() != GT){
|
||||
TreeElement gt = Factory.createSingleLeafElement(GT, new char[]{'>'}, 0, 1, treeCharTab, getManager());
|
||||
super.addInternal(gt, gt, lastChild, Boolean.FALSE);
|
||||
super.addInternal(gt, gt, (TreeElement)getLastChildNode(), Boolean.FALSE);
|
||||
}
|
||||
return firstAdded;
|
||||
}
|
||||
|
||||
@@ -88,8 +88,8 @@ public class PsiSuperExpressionImpl extends CompositePsiElement implements PsiSu
|
||||
return null;
|
||||
|
||||
case ChildRole.QUALIFIER:
|
||||
if (firstChild.getElementType() == JAVA_CODE_REFERENCE){
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == JAVA_CODE_REFERENCE){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
@@ -99,7 +99,7 @@ public class PsiSuperExpressionImpl extends CompositePsiElement implements PsiSu
|
||||
return TreeUtil.findChild(this, DOT);
|
||||
|
||||
case ChildRole.SUPER_KEYWORD:
|
||||
return lastChild;
|
||||
return getLastChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -60,8 +60,8 @@ public class PsiThisExpressionImpl extends CompositePsiElement implements PsiThi
|
||||
return null;
|
||||
|
||||
case ChildRole.QUALIFIER:
|
||||
if (firstChild.getElementType() == JAVA_CODE_REFERENCE){
|
||||
return firstChild;
|
||||
if (getFirstChildNode().getElementType() == JAVA_CODE_REFERENCE){
|
||||
return getFirstChildNode();
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
@@ -71,7 +71,7 @@ public class PsiThisExpressionImpl extends CompositePsiElement implements PsiThi
|
||||
return TreeUtil.findChild(this, DOT);
|
||||
|
||||
case ChildRole.THIS_KEYWORD:
|
||||
return lastChild;
|
||||
return getLastChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeUtil;
|
||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.scope.util.PsiScopesUtil;
|
||||
@@ -91,7 +90,7 @@ public class PsiTryStatementImpl extends CompositePsiElement implements PsiTrySt
|
||||
if (finallyKeyword == null) return null;
|
||||
for(ASTNode child = finallyKeyword.getTreeNext(); child != null; child = child.getTreeNext()){
|
||||
if (child.getElementType() == CODE_BLOCK){
|
||||
return (TreeElement)child;
|
||||
return child;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
+4
-3
@@ -9,6 +9,7 @@ import com.intellij.psi.impl.source.SrcRepositoryPsiElement;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.RepositoryTreeElement;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
/**
|
||||
* @author max
|
||||
@@ -64,14 +65,14 @@ public class PsiTypeParameterExtendsBoundsListImpl extends SlaveRepositoryPsiEle
|
||||
return types;
|
||||
}
|
||||
|
||||
private CompositeElement getMirrorTreeElement() {
|
||||
private ASTNode getMirrorTreeElement() {
|
||||
CompositeElement mirror = ((PsiTypeParameterImpl) getParent()).getMirrorTreeElement();
|
||||
CompositeElement myselfTree = (CompositeElement) mirror.findChildByRole(ChildRole.EXTENDS_LIST);
|
||||
ASTNode myselfTree = mirror.findChildByRole(ChildRole.EXTENDS_LIST);
|
||||
return myselfTree;
|
||||
}
|
||||
|
||||
private PsiTypeParameterExtendsBoundsListImpl getMirrorElement() {
|
||||
final CompositeElement treeElement = getMirrorTreeElement();
|
||||
final ASTNode treeElement = getMirrorTreeElement();
|
||||
return (PsiTypeParameterExtendsBoundsListImpl)SourceTreeToPsiMap.treeElementToPsi(treeElement);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ public abstract class ReferenceListElement extends RepositoryTreeElement{
|
||||
|
||||
public TreeElement addInternal(TreeElement first, TreeElement last, TreeElement anchor, Boolean before){
|
||||
if (first == last && first.getElementType() == JAVA_CODE_REFERENCE){
|
||||
if (lastChild != null && lastChild.getElementType() == ERROR_ELEMENT){
|
||||
super.deleteChildInternal(lastChild);
|
||||
if (getLastChildNode() != null && getLastChildNode().getElementType() == ERROR_ELEMENT){
|
||||
super.deleteChildInternal(getLastChildNode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public abstract class ReferenceListElement extends RepositoryTreeElement{
|
||||
keywordText = getKeywordText();
|
||||
if (TreeUtil.findChild(this, keywordType) == null && TreeUtil.findChild(this, JAVA_CODE_REFERENCE) != null){
|
||||
LeafElement keyword = Factory.createSingleLeafElement(keywordType, keywordText.toCharArray(), 0, keywordText.length(), SharedImplUtil.findCharTableByTree(this), getManager());
|
||||
super.addInternal(keyword, keyword, firstChild, Boolean.TRUE);
|
||||
super.addInternal(keyword, keyword, (TreeElement)getFirstChildNode(), Boolean.TRUE);
|
||||
}
|
||||
return firstAdded;
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@ import com.intellij.psi.impl.source.Constants;
|
||||
import com.intellij.psi.impl.source.SourceTreeToPsiMap;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.impl.source.tree.ElementType;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class ReplaceExpressionUtil implements Constants {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.tree.java.ReplaceExpressionUtil");
|
||||
|
||||
public static boolean isNeedParenthesis(TreeElement oldExpr, ASTNode newExpr) {
|
||||
public static boolean isNeedParenthesis(ASTNode oldExpr, ASTNode newExpr) {
|
||||
if (!ElementType.EXPRESSION_BIT_SET.isInSet(oldExpr.getTreeParent().getElementType())) return false;
|
||||
int priority = getExpressionPriority(newExpr);
|
||||
int parentPriority = getExpressionPriority(oldExpr.getTreeParent());
|
||||
@@ -21,17 +21,17 @@ public class ReplaceExpressionUtil implements Constants {
|
||||
IElementType i = oldExpr.getTreeParent().getElementType();
|
||||
if (i == ASSIGNMENT_EXPRESSION) {
|
||||
if (priority < parentPriority) return true;
|
||||
return oldExpr.getTreeParent().getChildRole(oldExpr) == ChildRole.LOPERAND ? true : false;
|
||||
return ((CompositeElement)oldExpr.getTreeParent()).getChildRole(oldExpr) == ChildRole.LOPERAND ? true : false;
|
||||
}
|
||||
else if (i == CONDITIONAL_EXPRESSION) {
|
||||
int role = oldExpr.getTreeParent().getChildRole(oldExpr);
|
||||
int role = ((CompositeElement)oldExpr.getTreeParent()).getChildRole(oldExpr);
|
||||
if (role == ChildRole.THEN_EXPRESSION) return false;
|
||||
if (priority < parentPriority) return true;
|
||||
return role == ChildRole.ELSE_EXPRESSION ? false : true;
|
||||
}
|
||||
else if (i == BINARY_EXPRESSION) {
|
||||
if (priority < parentPriority) return true;
|
||||
return oldExpr.getTreeParent().getChildRole(oldExpr) == ChildRole.LOPERAND ? false : true;
|
||||
return ((CompositeElement)oldExpr.getTreeParent()).getChildRole(oldExpr) == ChildRole.LOPERAND ? false : true;
|
||||
}
|
||||
else if (i == INSTANCE_OF_EXPRESSION) {
|
||||
return priority < parentPriority;
|
||||
@@ -52,7 +52,7 @@ public class ReplaceExpressionUtil implements Constants {
|
||||
return false;
|
||||
}
|
||||
else if (i == ARRAY_ACCESS_EXPRESSION) {
|
||||
int role = oldExpr.getTreeParent().getChildRole(oldExpr);
|
||||
int role = ((CompositeElement)oldExpr.getTreeParent()).getChildRole(oldExpr);
|
||||
if (role == ChildRole.ARRAY_DIMENSION) return false;
|
||||
return priority < parentPriority;
|
||||
}
|
||||
|
||||
+3
-3
@@ -21,8 +21,8 @@ public class TypeParameterExtendsBoundsListElement extends RepositoryTreeElement
|
||||
|
||||
public TreeElement addInternal(TreeElement first, TreeElement last, TreeElement anchor, Boolean before) {
|
||||
if (first == last && first.getElementType() == JAVA_CODE_REFERENCE){
|
||||
if (lastChild != null && lastChild.getElementType() == ERROR_ELEMENT){
|
||||
super.deleteChildInternal(lastChild);
|
||||
if (getLastChildNode() != null && getLastChildNode().getElementType() == ERROR_ELEMENT){
|
||||
super.deleteChildInternal(getLastChildNode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class TypeParameterExtendsBoundsListElement extends RepositoryTreeElement
|
||||
final String keywordText = "extends";
|
||||
if (TreeUtil.findChild(this, keywordType) == null && TreeUtil.findChild(this, JAVA_CODE_REFERENCE) != null){
|
||||
LeafElement keyword = Factory.createSingleLeafElement(keywordType, keywordText.toCharArray(), 0, keywordText.length(), treeCharTab, getManager());
|
||||
super.addInternal(keyword, keyword, firstChild, Boolean.TRUE);
|
||||
super.addInternal(keyword, keyword, (TreeElement)getFirstChildNode(), Boolean.TRUE);
|
||||
}
|
||||
return firstAdded;
|
||||
}
|
||||
|
||||
@@ -43,13 +43,13 @@ public class TypeParameterListElement extends RepositoryTreeElement {
|
||||
final CharTable treeCharTab = SharedImplUtil.findCharTableByTree(this);
|
||||
if (lt == null) {
|
||||
lt = Factory.createSingleLeafElement(LT, new char[]{'<'}, 0, 1, treeCharTab, getManager());
|
||||
super.addInternal(lt, lt, firstChild, Boolean.TRUE);
|
||||
super.addInternal(lt, lt, (TreeElement)getFirstChildNode(), Boolean.TRUE);
|
||||
}
|
||||
|
||||
TreeElement gt = (TreeElement)findChildByRole(ChildRole.GT_IN_TYPE_LIST);
|
||||
if (gt == null) {
|
||||
gt = Factory.createSingleLeafElement(GT, new char[]{'>'}, 0, 1, treeCharTab, getManager());
|
||||
super.addInternal(gt, gt, lastChild, Boolean.FALSE);
|
||||
super.addInternal(gt, gt, (TreeElement)getLastChildNode(), Boolean.FALSE);
|
||||
}
|
||||
|
||||
if (anchor == null) {
|
||||
|
||||
@@ -21,9 +21,9 @@ import java.util.*;
|
||||
|
||||
class TagNameReference implements PsiReference {
|
||||
private final boolean myStartTagFlag;
|
||||
private final TreeElement myNameElement;
|
||||
private final ASTNode myNameElement;
|
||||
|
||||
public TagNameReference(TreeElement nameElement, boolean startTagFlag) {
|
||||
public TagNameReference(ASTNode nameElement, boolean startTagFlag) {
|
||||
myStartTagFlag = startTagFlag;
|
||||
myNameElement = nameElement;
|
||||
}
|
||||
@@ -38,11 +38,11 @@ class TagNameReference implements PsiReference {
|
||||
if (getNameElement() == null){
|
||||
return new TextRange(0, 0);
|
||||
}
|
||||
final int parentOffset = getNameElement().getStartOffsetInParent();
|
||||
final int parentOffset = ((TreeElement)getNameElement()).getStartOffsetInParent();
|
||||
return new TextRange(parentOffset, parentOffset + getNameElement().getTextLength());
|
||||
}
|
||||
|
||||
private TreeElement getNameElement() {
|
||||
private ASTNode getNameElement() {
|
||||
return myNameElement;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,15 +53,17 @@ public class XmlAttributeImpl extends XmlElementImpl implements XmlAttribute {
|
||||
}
|
||||
|
||||
public void setValue(String valueText) throws IncorrectOperationException{
|
||||
final TreeElement value = XmlChildRole.ATTRIBUTE_VALUE_FINDER.findChild(this);
|
||||
final ASTNode value = XmlChildRole.ATTRIBUTE_VALUE_FINDER.findChild(this);
|
||||
final PomModel model = getProject().getModel();
|
||||
final TreeElement newValue = XmlChildRole.ATTRIBUTE_VALUE_FINDER.findChild((CompositeElement)getManager().getElementFactory().createXmlAttribute("a", valueText));
|
||||
final ASTNode newValue = XmlChildRole.ATTRIBUTE_VALUE_FINDER.findChild((ASTNode)getManager().getElementFactory().createXmlAttribute("a", valueText));
|
||||
model.runTransaction(new PomTransaction() {
|
||||
public PomModelEvent run(){
|
||||
if(value != null){
|
||||
CodeEditUtil.replaceChild(XmlAttributeImpl.this, value, newValue);
|
||||
CodeEditUtil.replaceChild(XmlAttributeImpl.this, (TreeElement)value, (TreeElement)newValue);
|
||||
}
|
||||
else {
|
||||
CodeEditUtil.addChild(XmlAttributeImpl.this, (TreeElement)newValue, null);
|
||||
}
|
||||
else CodeEditUtil.addChild(XmlAttributeImpl.this, newValue, null);
|
||||
return XmlAttributeSet.createXmlAttributeSet(model, getParent(), getName(), value != null ? value.getText() : null);
|
||||
}
|
||||
}, model.getModelAspect(XmlAspect.class));
|
||||
@@ -103,13 +105,13 @@ public class XmlAttributeImpl extends XmlElementImpl implements XmlAttribute {
|
||||
}
|
||||
|
||||
public PsiElement setName(final String nameText) throws IncorrectOperationException {
|
||||
final TreeElement name = XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild(this);
|
||||
final ASTNode name = XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild(this);
|
||||
final String oldName = name.getText();
|
||||
final PomModel model = getProject().getModel();
|
||||
final TreeElement newName = XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild((CompositeElement)getManager().getElementFactory().createXmlAttribute(nameText, ""));
|
||||
final ASTNode newName = XmlChildRole.ATTRIBUTE_NAME_FINDER.findChild((ASTNode)getManager().getElementFactory().createXmlAttribute(nameText, ""));
|
||||
model.runTransaction(new PomTransaction() {
|
||||
public PomModelEvent run(){
|
||||
CodeEditUtil.replaceChild(XmlAttributeImpl.this, name, newName);
|
||||
CodeEditUtil.replaceChild(XmlAttributeImpl.this, (TreeElement)name, (TreeElement)newName);
|
||||
return XmlAttributeSet.createXmlAttributeSet(model, getParent(), nameText, getValue());
|
||||
}
|
||||
}, model.getModelAspect(XmlAspect.class));
|
||||
|
||||
@@ -32,7 +32,7 @@ public class XmlEntityDeclImpl extends XmlElementImpl implements XmlEntityDecl {
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
for (ASTNode e = firstChild; e != null; e = e.getTreeNext()) {
|
||||
for (ASTNode e = getFirstChildNode(); e != null; e = e.getTreeNext()) {
|
||||
if (e instanceof XmlTokenImpl) {
|
||||
XmlTokenImpl xmlToken = (XmlTokenImpl)e;
|
||||
|
||||
@@ -178,7 +178,7 @@ public class XmlEntityDeclImpl extends XmlElementImpl implements XmlEntityDecl {
|
||||
|
||||
private PsiElement getValueElement(PsiFile baseFile) {
|
||||
if (isInternalReference()) {
|
||||
for (ASTNode e = firstChild; e != null; e = e.getTreeNext()) {
|
||||
for (ASTNode e = getFirstChildNode(); e != null; e = e.getTreeNext()) {
|
||||
if (e.getElementType() == ElementType.XML_ATTRIBUTE_VALUE) {
|
||||
XmlAttributeValue value = (XmlAttributeValue)SourceTreeToPsiMap.treeElementToPsi(e);
|
||||
return value;
|
||||
@@ -186,7 +186,7 @@ public class XmlEntityDeclImpl extends XmlElementImpl implements XmlEntityDecl {
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (ASTNode e = lastChild; e != null; e = e.getTreePrev()) {
|
||||
for (ASTNode e = getLastChildNode(); e != null; e = e.getTreePrev()) {
|
||||
if (e.getElementType() == ElementType.XML_ATTRIBUTE_VALUE) {
|
||||
XmlAttributeValue value = (XmlAttributeValue)SourceTreeToPsiMap.treeElementToPsi(e);
|
||||
final XmlFile xmlFile = XmlUtil.findXmlFile(baseFile, value.getValue());
|
||||
@@ -203,7 +203,7 @@ public class XmlEntityDeclImpl extends XmlElementImpl implements XmlEntityDecl {
|
||||
}
|
||||
|
||||
private boolean isInternalReference() {
|
||||
for (ASTNode e = firstChild; e != null; e = e.getTreeNext()) {
|
||||
for (ASTNode e = getFirstChildNode(); e != null; e = e.getTreeNext()) {
|
||||
if (e.getElementType() instanceof IXmlElementType) {
|
||||
XmlToken token = (XmlToken)SourceTreeToPsiMap.treeElementToPsi(e);
|
||||
if (token.getTokenType() == XmlTokenType.XML_DOCTYPE_PUBLIC || token.getTokenType() == XmlToken.XML_DOCTYPE_SYSTEM) {
|
||||
|
||||
@@ -83,9 +83,9 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
|
||||
public PsiReference[] getReferences() {
|
||||
ProgressManager.getInstance().checkCanceled();
|
||||
final TreeElement startTagName = XmlChildRole.START_TAG_NAME_FINDER.findChild(this);
|
||||
final ASTNode startTagName = XmlChildRole.START_TAG_NAME_FINDER.findChild(this);
|
||||
if (startTagName == null) return PsiReference.EMPTY_ARRAY;
|
||||
final TreeElement endTagName = XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(this);
|
||||
final ASTNode endTagName = XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(this);
|
||||
final PsiReference[] referencesFromProviders = ResolveUtil.getReferencesFromProviders(this);
|
||||
if (endTagName != null){
|
||||
final PsiReference[] psiReferences = new PsiReference[referencesFromProviders.length + 2];
|
||||
@@ -279,7 +279,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
|
||||
if (file != null){
|
||||
descriptor = (XmlNSDescriptor)file.getDocument().getMetaData();
|
||||
|
||||
|
||||
if(descriptor != null){
|
||||
final XmlFile file1 = file;
|
||||
|
||||
@@ -361,9 +361,9 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
final XmlTagImpl dummyTag = (XmlTagImpl)getManager().getElementFactory().createTagFromText(XmlTagTextUtil.composeTagText(name, "aa"));
|
||||
final XmlTagImpl tag = XmlTagImpl.this;
|
||||
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(tag);
|
||||
ChangeUtil.replaceChild(tag, XmlChildRole.START_TAG_NAME_FINDER.findChild(tag), ChangeUtil.copyElement(XmlChildRole.START_TAG_NAME_FINDER.findChild(dummyTag), charTableByTree));
|
||||
final TreeElement childByRole = XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(tag);
|
||||
if(childByRole != null) ChangeUtil.replaceChild(tag, childByRole, ChangeUtil.copyElement(XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(dummyTag), charTableByTree));
|
||||
ChangeUtil.replaceChild(tag, (TreeElement)XmlChildRole.START_TAG_NAME_FINDER.findChild(tag), ChangeUtil.copyElement((TreeElement)XmlChildRole.START_TAG_NAME_FINDER.findChild(dummyTag), charTableByTree));
|
||||
final ASTNode childByRole = XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(tag);
|
||||
if(childByRole != null) ChangeUtil.replaceChild(tag, (TreeElement)childByRole, ChangeUtil.copyElement((TreeElement)XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(dummyTag), charTableByTree));
|
||||
|
||||
return XmlTagNameChanged.createXmlTagNameChanged(model, tag, oldName);
|
||||
}
|
||||
@@ -723,11 +723,11 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
final String name = ((XmlAttribute)child).getName();
|
||||
TreeElement treeElement;
|
||||
if(anchor == null){
|
||||
TreeElement startTagEnd = XmlChildRole.START_TAG_END_FINDER.findChild(XmlTagImpl.this);
|
||||
ASTNode startTagEnd = XmlChildRole.START_TAG_END_FINDER.findChild(XmlTagImpl.this);
|
||||
if(startTagEnd == null) startTagEnd = XmlChildRole.EMPTY_TAG_END_FINDER.findChild(XmlTagImpl.this);
|
||||
|
||||
if(startTagEnd == null) treeElement = addInternalHack(child, child, null, null,fileType);
|
||||
else treeElement = addInternalHack(child, child, startTagEnd, Boolean.TRUE, fileType);
|
||||
else treeElement = addInternalHack(child, child, (TreeElement)startTagEnd, Boolean.TRUE, fileType);
|
||||
}
|
||||
else treeElement = addInternalHack(child, child, anchor, Boolean.valueOf(before), fileType);
|
||||
final ASTNode treePrev = treeElement.getTreePrev();
|
||||
@@ -833,15 +833,15 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
catch (IncorrectOperationException e) {}
|
||||
}
|
||||
|
||||
private LeafElement expandTag() throws IncorrectOperationException{
|
||||
LeafElement endTagStart = (LeafElement)XmlChildRole.CLOSING_TAG_START_FINDER.findChild(XmlTagImpl.this);
|
||||
private ASTNode expandTag() throws IncorrectOperationException{
|
||||
ASTNode endTagStart = XmlChildRole.CLOSING_TAG_START_FINDER.findChild(XmlTagImpl.this);
|
||||
if(endTagStart == null){
|
||||
final XmlTagImpl tagFromText = (XmlTagImpl)getManager().getElementFactory().createTagFromText("<" + getName() + "></" + getName() + ">");
|
||||
final TreeElement startTagStart = XmlChildRole.START_TAG_END_FINDER.findChild(tagFromText);
|
||||
endTagStart = (LeafElement)XmlChildRole.CLOSING_TAG_START_FINDER.findChild(tagFromText);
|
||||
final ASTNode startTagStart = XmlChildRole.START_TAG_END_FINDER.findChild(tagFromText);
|
||||
endTagStart = XmlChildRole.CLOSING_TAG_START_FINDER.findChild(tagFromText);
|
||||
final LeafElement emptyTagEnd = (LeafElement)XmlChildRole.EMPTY_TAG_END_FINDER.findChild(this);
|
||||
if(emptyTagEnd != null) ChangeUtil.removeChild(this, emptyTagEnd);
|
||||
ChangeUtil.addChildren(this, startTagStart, null, null);
|
||||
ChangeUtil.addChildren(this, (TreeElement)startTagStart, null, null);
|
||||
}
|
||||
return endTagStart;
|
||||
}
|
||||
@@ -867,7 +867,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
private class BodyInsertTransaction implements PomTransaction{
|
||||
private TreeElement myChild;
|
||||
private TreeElement myAnchor;
|
||||
private TreeElement myNewElement;
|
||||
private ASTNode myNewElement;
|
||||
private PomModel myModel;
|
||||
private boolean myBeforeFlag;
|
||||
private FileType myFileType ;
|
||||
@@ -881,16 +881,16 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
}
|
||||
|
||||
public PomModelEvent run() throws IncorrectOperationException {
|
||||
TreeElement treeElement;
|
||||
ASTNode treeElement;
|
||||
if(myChild.getElementType() == XmlElementType.XML_TEXT){
|
||||
TreeElement left;
|
||||
TreeElement right;
|
||||
ASTNode left;
|
||||
ASTNode right;
|
||||
if(myBeforeFlag){
|
||||
left = myAnchor != null ? myAnchor.getTreePrev() : lastChild;
|
||||
left = myAnchor != null ? myAnchor.getTreePrev() : getLastChildNode();
|
||||
right = myAnchor;
|
||||
}
|
||||
else{
|
||||
left = myAnchor != null ? myAnchor : lastChild;
|
||||
left = myAnchor != null ? myAnchor : getLastChildNode();
|
||||
right = myAnchor != null ? myAnchor.getTreeNext() : null;
|
||||
}
|
||||
if(left.getElementType() == XmlElementType.XML_TEXT){
|
||||
@@ -899,14 +899,14 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
return null;
|
||||
}
|
||||
if(right != null && right.getElementType() == XmlElementType.XML_TEXT){
|
||||
((XmlText)right).addBefore((PsiElement)myChild, (PsiElement)((XmlTextImpl)right).firstChild);
|
||||
((XmlText)right).addBefore((PsiElement)myChild, (PsiElement)right.getFirstChildNode());
|
||||
myNewElement = right;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (myAnchor == null) {
|
||||
TreeElement anchor = expandTag();
|
||||
ASTNode anchor = expandTag();
|
||||
if(myChild.getElementType() == XmlElementType.XML_TAG){
|
||||
final XmlElementDescriptor parentDescriptor = getDescriptor();
|
||||
final XmlTag[] subTags = getSubTags();
|
||||
@@ -919,7 +919,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
while (subTagNum < subTags.length - 1 && subTags[subTagNum + 1].getName().equals(childElementName)) {
|
||||
subTagNum++;
|
||||
}
|
||||
if (childElementName.equals(XmlChildRole.START_TAG_NAME_FINDER.findChild((CompositeElement)myChild).getText())) {
|
||||
if (childElementName.equals(XmlChildRole.START_TAG_NAME_FINDER.findChild(myChild).getText())) {
|
||||
// insert child just after anchor
|
||||
// insert into the position specified by index
|
||||
if(subTagNum >= 0){
|
||||
@@ -932,8 +932,8 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
treeElement = addInternalHack(myChild, myChild, subTag, Boolean.FALSE, myFileType);
|
||||
}
|
||||
else{
|
||||
final TreeElement child = XmlChildRole.START_TAG_END_FINDER.findChild(XmlTagImpl.this);
|
||||
treeElement = addInternalHack(myChild, myChild, child, Boolean.FALSE, myFileType);
|
||||
final ASTNode child = XmlChildRole.START_TAG_END_FINDER.findChild(XmlTagImpl.this);
|
||||
treeElement = addInternalHack(myChild, myChild, (TreeElement)child, Boolean.FALSE, myFileType);
|
||||
}
|
||||
myNewElement = treeElement;
|
||||
return XmlTagChildAdd.createXmlTagChildAdd(myModel, XmlTagImpl.this, (XmlTagChild)SourceTreeToPsiMap.treeElementToPsi(treeElement));
|
||||
@@ -941,7 +941,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
}
|
||||
}
|
||||
}
|
||||
treeElement = addInternalHack(myChild, myChild, anchor, Boolean.TRUE, myFileType);
|
||||
treeElement = addInternalHack(myChild, myChild, (TreeElement)anchor, Boolean.TRUE, myFileType);
|
||||
}
|
||||
else {
|
||||
treeElement = addInternalHack(myChild, myChild, myAnchor, Boolean.valueOf(myBeforeFlag), myFileType);
|
||||
@@ -962,7 +962,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag/*, Modification
|
||||
}
|
||||
|
||||
TreeElement getNewElement(){
|
||||
return myNewElement;
|
||||
return (TreeElement)myNewElement;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.intellij.psi.impl.source.xml;
|
||||
|
||||
import com.intellij.psi.xml.*;
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
@@ -50,9 +50,9 @@ public class XmlTagValueImpl implements XmlTagValue{
|
||||
|
||||
public TextRange getTextRange() {
|
||||
if(myElements.length == 0){
|
||||
final TreeElement child = XmlChildRole.START_TAG_END_FINDER.findChild( (CompositeElement)myTag);
|
||||
final ASTNode child = XmlChildRole.START_TAG_END_FINDER.findChild( (ASTNode)myTag);
|
||||
if(child != null)
|
||||
return new TextRange(child.getTextOffset() + 1, child.getTextOffset() + 1);
|
||||
return new TextRange(child.getStartOffset() + 1, child.getStartOffset() + 1);
|
||||
return new TextRange(myTag.getTextRange().getEndOffset(), myTag.getTextRange().getEndOffset());
|
||||
}
|
||||
return new TextRange(myElements[0].getTextRange().getStartOffset(), myElements[myElements.length - 1].getTextRange().getEndOffset());
|
||||
|
||||
@@ -56,14 +56,14 @@ public class XmlTextImpl extends XmlElementImpl implements XmlText{
|
||||
public String getValue() {
|
||||
if(myDisplayText != null) return myDisplayText;
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
ASTNode child = firstChild;
|
||||
ASTNode child = getFirstChildNode();
|
||||
final List<Integer> gaps = new ArrayList<Integer>();
|
||||
while(child != null){
|
||||
final int start = buffer.length();
|
||||
IElementType elementType = child.getElementType();
|
||||
if(elementType == XmlElementType.XML_CDATA){
|
||||
final CompositeElement cdata = (CompositeElement)child;
|
||||
child = cdata.firstChild;
|
||||
final ASTNode cdata = child;
|
||||
child = cdata.getFirstChildNode();
|
||||
}
|
||||
else if(elementType == XmlTokenType.XML_CHAR_ENTITY_REF){
|
||||
buffer.append(getChar(child.getText()));
|
||||
@@ -185,7 +185,7 @@ public class XmlTextImpl extends XmlElementImpl implements XmlText{
|
||||
if(second != null){
|
||||
final XmlText xmlText = getManager().getElementFactory().createTagFromText("<tag> </tag>").getValue().getTextElements()[0];
|
||||
final CompositeElement compositeElement = (CompositeElement)SourceTreeToPsiMap.psiElementToTree(xmlText);
|
||||
TreeUtil.removeRange(compositeElement.firstChild, null);
|
||||
TreeUtil.removeRange((TreeElement)compositeElement.getFirstChildNode(), null);
|
||||
model.runTransaction(new PomTransaction() {
|
||||
public PomModelEvent run(){
|
||||
TreeElement current = second;
|
||||
@@ -424,31 +424,33 @@ public class XmlTextImpl extends XmlElementImpl implements XmlText{
|
||||
model.runTransaction(new PomTransaction() {
|
||||
public PomModelEvent run(){
|
||||
final String oldText = getText();
|
||||
TreeElement childBefore = anchor != null ? (before ? anchor.getTreePrev() : anchor) : lastChild;
|
||||
if(childBefore != null && childBefore.getElementType() == text.firstChild.getElementType()){
|
||||
final LeafElement newText = mergeElements((LeafElement)childBefore, (LeafElement)text.firstChild, SharedImplUtil.findCharTableByTree(XmlTextImpl.this));
|
||||
TreeElement childBefore = (TreeElement)(anchor != null ? (before ? anchor.getTreePrev() : anchor) : getLastChildNode());
|
||||
if(childBefore != null && childBefore.getElementType() == text.getFirstChildNode().getElementType()){
|
||||
final LeafElement newText = mergeElements((LeafElement)childBefore, (LeafElement)text.getFirstChildNode(), SharedImplUtil.findCharTableByTree(XmlTextImpl.this));
|
||||
if(newText != null){
|
||||
replaceChildInternal(childBefore, newText);
|
||||
if(text.lastChild != text.firstChild){
|
||||
addChildren(XmlTextImpl.this, text.firstChild.getTreeNext(), null, anchor, before);
|
||||
if(text.getLastChildNode() != text.getFirstChildNode()){
|
||||
addChildren(XmlTextImpl.this, (TreeElement)text.getFirstChildNode().getTreeNext(), null, anchor, before);
|
||||
}
|
||||
} else {
|
||||
addChildren(XmlTextImpl.this, (TreeElement)text.getFirstChildNode(), null, anchor, before);
|
||||
}
|
||||
else addChildren(XmlTextImpl.this, text.firstChild, null, anchor, before);
|
||||
}
|
||||
else{
|
||||
TreeElement childAfter = anchor != null ? (before ? anchor : anchor.getTreeNext()) : lastChild;
|
||||
if(childAfter != null && childAfter.getElementType() == text.firstChild.getElementType()){
|
||||
final LeafElement newText = mergeElements((LeafElement)text.firstChild, (LeafElement)childAfter, SharedImplUtil.findCharTableByTree(XmlTextImpl.this));
|
||||
TreeElement childAfter = (TreeElement)(anchor != null ? (before ? anchor : anchor.getTreeNext()) : getLastChildNode());
|
||||
if(childAfter != null && childAfter.getElementType() == text.getFirstChildNode().getElementType()){
|
||||
final LeafElement newText = mergeElements((LeafElement)text.getFirstChildNode(), (LeafElement)childAfter, SharedImplUtil.findCharTableByTree(XmlTextImpl.this));
|
||||
if(newText != null){
|
||||
replaceChildInternal(childAfter, newText);
|
||||
if(text.lastChild != text.firstChild){
|
||||
addChildren(XmlTextImpl.this, text.firstChild.getTreeNext(), null, anchor, before);
|
||||
if(text.getLastChildNode() != text.getFirstChildNode()){
|
||||
addChildren(XmlTextImpl.this, (TreeElement)text.getFirstChildNode().getTreeNext(), null, anchor, before);
|
||||
}
|
||||
} else {
|
||||
addChildren(XmlTextImpl.this, (TreeElement)text.getFirstChildNode(), null, anchor, before);
|
||||
}
|
||||
else addChildren(XmlTextImpl.this, text.firstChild, null, anchor, before);
|
||||
}
|
||||
|
||||
addChildren(XmlTextImpl.this, text.firstChild, null, anchor, before);
|
||||
addChildren(XmlTextImpl.this, (TreeElement)text.getFirstChildNode(), null, anchor, before);
|
||||
}
|
||||
|
||||
retHolder[0] = XmlTextImpl.this;
|
||||
@@ -567,7 +569,7 @@ public class XmlTextImpl extends XmlElementImpl implements XmlText{
|
||||
}
|
||||
}
|
||||
|
||||
return dummyParent.firstChild;
|
||||
return dummyParent.getFirstChildNode();
|
||||
}
|
||||
|
||||
private static TreeElement createCharEntity(char ch, CharTable charTable) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.xml.XmlElementType;
|
||||
import com.intellij.psi.xml.XmlTokenType;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public class DefaultRoleFinder implements RoleFinder{
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.tree.DefaultRoleFinder");
|
||||
@@ -16,9 +17,9 @@ public class DefaultRoleFinder implements RoleFinder{
|
||||
myParentType = parentType;
|
||||
}
|
||||
|
||||
public TreeElement findChild(CompositeElement parent) {
|
||||
public ASTNode findChild(ASTNode parent) {
|
||||
if(myParentType != null) LOG.assertTrue(parent.getElementType() == myParentType);
|
||||
TreeElement current = parent.firstChild;
|
||||
ASTNode current = parent.getFirstChildNode();
|
||||
while(current != null && current.getElementType() != myElementType)
|
||||
current = current.getTreeNext();
|
||||
return current;
|
||||
|
||||
@@ -2,7 +2,8 @@ package com.intellij.psi.tree;
|
||||
|
||||
import com.intellij.psi.impl.source.tree.CompositeElement;
|
||||
import com.intellij.psi.impl.source.tree.TreeElement;
|
||||
import com.intellij.lang.ASTNode;
|
||||
|
||||
public interface RoleFinder {
|
||||
TreeElement findChild(CompositeElement parent);
|
||||
ASTNode findChild(ASTNode parent);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user