From e5894ad58970c1bc26aa7f96323ddbf7401a4fb4 Mon Sep 17 00:00:00 2001 From: "no_reply@jetbrains.com" Date: Wed, 9 Mar 2005 21:55:29 +0300 Subject: [PATCH] New chameleons and fix for problem with changed elements ordering in tree events --- .../psi/impl/source/javadoc/ExceptionTagInfo.java | 7 +++---- .../psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java | 8 +++++--- source/com/intellij/psi/xml/XmlElementType.java | 7 ++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/source/com/intellij/psi/impl/source/javadoc/ExceptionTagInfo.java b/source/com/intellij/psi/impl/source/javadoc/ExceptionTagInfo.java index 42e1f592b93b..c2f1dbf01122 100644 --- a/source/com/intellij/psi/impl/source/javadoc/ExceptionTagInfo.java +++ b/source/com/intellij/psi/impl/source/javadoc/ExceptionTagInfo.java @@ -3,7 +3,6 @@ package com.intellij.psi.impl.source.javadoc; import com.intellij.psi.*; import com.intellij.psi.javadoc.JavadocTagInfo; import com.intellij.psi.javadoc.PsiDocTagValue; -import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ArrayUtil; @@ -18,11 +17,11 @@ class ExceptionTagInfo implements JavadocTagInfo { } public String checkTagValue(PsiDocTagValue value) { - if (value == null) return "Exception class expected"; + if (value == null || value.getFirstChild() == null) return "Exception class expected"; - if (!(value.getFirstChild() instanceof PsiJavaCodeReferenceElement)) return "Wrong tag value"; + if (!(value.getFirstChild().getFirstChild() instanceof PsiJavaCodeReferenceElement)) return "Wrong tag value"; - final PsiJavaCodeReferenceElement ref = ((PsiJavaCodeReferenceElement)value.getFirstChild()); + final PsiJavaCodeReferenceElement ref = ((PsiJavaCodeReferenceElement)value.getFirstChild().getFirstChild()); final PsiClass exceptionClass = (PsiClass)ref.resolve(); if (exceptionClass == null) return null; diff --git a/source/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java b/source/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java index 5ac99a8dd558..f4cfe78bca6a 100644 --- a/source/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java +++ b/source/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java @@ -125,9 +125,11 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo List types = new ArrayList(); for (PsiElement child = element.getFirstChild(); child != null; child = child.getNextSibling()) { - if (child instanceof PsiTypeElement) { - PsiTypeElement type = (PsiTypeElement)child; - types.add(type.getType()); + if (child.getNode().getElementType() == JavaDocElementType.DOC_TYPE_HOLDER) { + if(child.getFirstChild() != null){ + PsiTypeElement type = (PsiTypeElement)child.getFirstChild(); + types.add(type.getType()); + } } } diff --git a/source/com/intellij/psi/xml/XmlElementType.java b/source/com/intellij/psi/xml/XmlElementType.java index bdee88567550..a2b3c51e8bd6 100644 --- a/source/com/intellij/psi/xml/XmlElementType.java +++ b/source/com/intellij/psi/xml/XmlElementType.java @@ -73,20 +73,20 @@ public interface XmlElementType { }; - IElementType DTD_FILE = new IChameleonElementType("DTD_FILE"){ + IElementType DTD_FILE = new IChameleonElementType("DTD_FILE", Language.findByID("XML")){ public ASTNode parseContents(ASTNode chameleon) { final char[] chars = ((LeafElement)chameleon).textToCharArray(); final DTDParser parser = new DTDParser(); try { return parser.parse(chars, 0, chars.length, SharedImplUtil.findCharTableByTree(chameleon)); } - catch (ParsingException e) {} + catch (ParsingException e) {} return null; } public boolean isParsable(CharSequence buffer) {return true;} }; - IElementType XML_MARKUP = new IChameleonElementType("XML_MARKUP_DECL"){ + IElementType XML_MARKUP = new IChameleonElementType("XML_MARKUP_DECL", Language.findByID("XML")){ public ASTNode parseContents(ASTNode chameleon) { final char[] chars = ((LeafElement)chameleon).textToCharArray(); final DTDMarkupParser parser = new DTDMarkupParser(); @@ -104,6 +104,7 @@ public interface XmlElementType { oldXmlLexer.start(chars, 0, chars.length); while(oldXmlLexer.getTokenType() != null && oldXmlLexer.getTokenEnd() != buffer.length()){ if(oldXmlLexer.getTokenType() == XmlTokenType.XML_MARKUP_END) return false; + oldXmlLexer.advance(); } return true; }