Continue introducing interface ASTNode.

This commit is contained in:
Maxim Shafirov
2005-01-19 19:37:58 +03:00
parent 5274c0dda3
commit 388c386925
101 changed files with 552 additions and 536 deletions
+4 -1
View File
@@ -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();
+11 -11
View File
@@ -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;
@@ -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;
}
@@ -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 -1
View File
@@ -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