From a1aabd1fe48148253bacfcb86bfc778b688a4cf4 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 21 Mar 2011 13:42:14 +0100 Subject: [PATCH] compact --- .../typeDefinitions/ExtendsClause.java | 58 ------------------ .../typeDefinitions/ImplementsClause.java | 59 ------------------- .../typeDefinitions/ReferenceElement.java | 33 +++++++++++ .../typeDefinitions/TypeDefinition.java | 10 ++-- 4 files changed, 38 insertions(+), 122 deletions(-) delete mode 100644 plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ExtendsClause.java delete mode 100644 plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ImplementsClause.java diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ExtendsClause.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ExtendsClause.java deleted file mode 100644 index 1d19469db454..000000000000 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ExtendsClause.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDefinitions; - -import com.intellij.lang.PsiBuilder; -import com.intellij.psi.tree.IElementType; -import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes; -import org.jetbrains.plugins.groovy.lang.parser.parsing.util.ParserUtils; - -import static org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDefinitions.ReferenceElement.ReferenceElementResult.*; - -/** - * @autor: Dmitry.Krasilschikov - * @date: 16.03.2007 - */ -public class ExtendsClause implements GroovyElementTypes { - public static IElementType parse(PsiBuilder builder) { - PsiBuilder.Marker sccMarker = builder.mark(); - - if (!ParserUtils.getToken(builder, kEXTENDS)) { - sccMarker.rollbackTo(); - return NONE; - } - - ParserUtils.getToken(builder, mNLS); - - if (ReferenceElement.parseReferenceElement(builder) == fail) { - sccMarker.rollbackTo(); - return WRONGWAY; - } - - while (ParserUtils.getToken(builder, mCOMMA)) { - ParserUtils.getToken(builder, mNLS); - - if (ReferenceElement.parseReferenceElement(builder) == fail) { - sccMarker.rollbackTo(); - return WRONGWAY; - } - } - - sccMarker.done(EXTENDS_CLAUSE); - return EXTENDS_CLAUSE; - } -} diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ImplementsClause.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ImplementsClause.java deleted file mode 100644 index 2a369c0f6a78..000000000000 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ImplementsClause.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDefinitions; - -import com.intellij.lang.PsiBuilder; -import com.intellij.psi.tree.IElementType; -import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes; -import org.jetbrains.plugins.groovy.lang.parser.parsing.util.ParserUtils; - -import static org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDefinitions.ReferenceElement.ReferenceElementResult.fail; - -/** - * @autor: Dmitry.Krasilschikov - * @date: 16.03.2007 - */ -public class ImplementsClause implements GroovyElementTypes { - public static IElementType parse(PsiBuilder builder) { - PsiBuilder.Marker isMarker = builder.mark(); - - if (!ParserUtils.getToken(builder, kIMPLEMENTS)) { - isMarker.rollbackTo(); - return NONE; - } - - ParserUtils.getToken(builder, mNLS); - - if (ReferenceElement.parseReferenceElement(builder)== fail) { - isMarker.rollbackTo(); - return WRONGWAY; - } - - while (ParserUtils.getToken(builder, mCOMMA)) { - ParserUtils.getToken(builder, mNLS); - - if (ReferenceElement.parseReferenceElement(builder) == fail) { - isMarker.rollbackTo(); - return WRONGWAY; - } - } - - ParserUtils.getToken(builder, mNLS); - isMarker.done(IMPLEMENTS_CLAUSE); - return IMPLEMENTS_CLAUSE; - } -} diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ReferenceElement.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ReferenceElement.java index af457856b1f1..79d85369f73c 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ReferenceElement.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/ReferenceElement.java @@ -18,9 +18,11 @@ package org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDefiniti import com.intellij.codeInsight.completion.CompletionInitializationContext; import com.intellij.lang.PsiBuilder; +import com.intellij.psi.tree.IElementType; import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes; import org.jetbrains.plugins.groovy.lang.parser.parsing.types.TypeArguments; import org.jetbrains.plugins.groovy.lang.parser.parsing.util.ParserUtils; +import org.jetbrains.plugins.groovy.lang.psi.stubs.elements.GrReferenceListElementType; import static org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDefinitions.ReferenceElement.ReferenceElementResult.fail; import static org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDefinitions.ReferenceElement.ReferenceElementResult.mayBeType; @@ -34,6 +36,37 @@ import static org.jetbrains.plugins.groovy.lang.parser.parsing.statements.typeDe public class ReferenceElement implements GroovyElementTypes { public static final String DUMMY_IDENTIFIER = CompletionInitializationContext.DUMMY_IDENTIFIER_TRIMMED; //inserted by completion + public static IElementType parseReferenceList(PsiBuilder builder, + final IElementType startElement, + final GrReferenceListElementType clauseType) { + PsiBuilder.Marker isMarker = builder.mark(); + + if (!ParserUtils.getToken(builder, startElement)) { + isMarker.rollbackTo(); + return NONE; + } + + ParserUtils.getToken(builder, mNLS); + + if (parseReferenceElement(builder)== fail) { + isMarker.rollbackTo(); + return WRONGWAY; + } + + while (ParserUtils.getToken(builder, mCOMMA)) { + ParserUtils.getToken(builder, mNLS); + + if (parseReferenceElement(builder) == fail) { + isMarker.rollbackTo(); + return WRONGWAY; + } + } + + ParserUtils.getToken(builder, mNLS); + isMarker.done(clauseType); + return clauseType; + } + public enum ReferenceElementResult { mayBeType, mustBeType, fail } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/TypeDefinition.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/TypeDefinition.java index 33bc906c02b9..c58540d34f9d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/TypeDefinition.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/parser/parsing/statements/typeDefinitions/TypeDefinition.java @@ -95,10 +95,10 @@ public class TypeDefinition implements GroovyElementTypes { TypeParameters.parse(builder); - ExtendsClause.parse(builder); + ReferenceElement.parseReferenceList(builder, kEXTENDS, EXTENDS_CLAUSE); ParserUtils.getToken(builder, mNLS); - ImplementsClause.parse(builder); + ReferenceElement.parseReferenceList(builder, kIMPLEMENTS, IMPLEMENTS_CLAUSE); ParserUtils.getToken(builder, mNLS); if (!parseInterfaceBlock(builder, name, parser)) { @@ -127,12 +127,12 @@ public class TypeDefinition implements GroovyElementTypes { TypeParameters.parse(builder); if (kEXTENDS.equals(builder.getTokenType())) { - ExtendsClause.parse(builder); + ReferenceElement.parseReferenceList(builder, kEXTENDS, EXTENDS_CLAUSE); ParserUtils.getToken(builder, mNLS); } if (kIMPLEMENTS.equals(builder.getTokenType())) { - ImplementsClause.parse(builder); + ReferenceElement.parseReferenceList(builder, kIMPLEMENTS, IMPLEMENTS_CLAUSE); } ParserUtils.getToken(builder, mNLS); @@ -161,7 +161,7 @@ public class TypeDefinition implements GroovyElementTypes { builder.advanceLexer(); } - if (WRONGWAY.equals(ImplementsClause.parse(builder))) { + if (WRONGWAY.equals(ReferenceElement.parseReferenceList(builder, kIMPLEMENTS, IMPLEMENTS_CLAUSE))) { return true; }