From e856e8f135ca6861affcd27c365b11e6f337c94c Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Tue, 24 Apr 2012 19:26:17 +0400 Subject: [PATCH] adding refs to throws list --- .../impl/auxiliary/GrThrowsClauseImpl.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/auxiliary/GrThrowsClauseImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/auxiliary/GrThrowsClauseImpl.java index 3e27165d2797..c41aa784d097 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/auxiliary/GrThrowsClauseImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/auxiliary/GrThrowsClauseImpl.java @@ -18,13 +18,17 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.auxiliary; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiClassType; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiJavaCodeReferenceElement; +import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.groovy.lang.lexer.GroovyTokenTypes; import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor; import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.GrThrowsClause; import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.impl.GrClassReferenceType; import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiElementImpl; +import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; /** * @author: Dmitry.Krasilschikov @@ -63,4 +67,22 @@ public class GrThrowsClauseImpl extends GroovyPsiElementImpl implements GrThrows public Role getRole() { return Role.THROWS_LIST; } + + @Override + public PsiElement add(@NotNull PsiElement element) throws IncorrectOperationException { + if (element instanceof GrCodeReferenceElement) { + if (findChildByClass(GrCodeReferenceElement.class) == null) { + getNode().addLeaf(GroovyTokenTypes.kTHROWS, "throws", null); + } + else { + PsiElement lastChild = getLastChild(); + lastChild = PsiUtil.skipWhitespaces(lastChild, false); + if (!lastChild.getNode().getElementType().equals(GroovyTokenTypes.mCOMMA)) { + getNode().addLeaf(GroovyTokenTypes.mCOMMA, ",", null); + } + } + } + return super.add(element); + } + }