001 /*
002 * Copyright 2010-2013 JetBrains s.r.o.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 package org.jetbrains.jet.lang.psi.stubs.elements;
018
019 import com.intellij.psi.tree.TokenSet;
020 import org.jetbrains.jet.lang.psi.*;
021
022 public interface JetStubElementTypes {
023 JetFileElementType FILE = new JetFileElementType();
024
025 JetClassElementType CLASS = new JetClassElementType("CLASS");
026 JetFunctionElementType FUNCTION = new JetFunctionElementType("FUN");
027 JetPropertyElementType PROPERTY = new JetPropertyElementType("PROPERTY");
028 JetPropertyAccessorElementType PROPERTY_ACCESSOR = new JetPropertyAccessorElementType("PROPERTY_ACCESSOR");
029
030 JetClassElementType ENUM_ENTRY = new JetClassElementType("ENUM_ENTRY");
031 JetObjectElementType OBJECT_DECLARATION = new JetObjectElementType("OBJECT_DECLARATION");
032 JetPlaceHolderStubElementType<JetClassObject> CLASS_OBJECT =
033 new JetPlaceHolderStubElementType<JetClassObject>("CLASS_OBJECT", JetClassObject.class);
034 JetPlaceHolderStubElementType<JetClassInitializer> ANONYMOUS_INITIALIZER =
035 new JetPlaceHolderStubElementType<JetClassInitializer>("ANONYMOUS_INITIALIZER", JetClassInitializer.class);
036
037 JetParameterElementType VALUE_PARAMETER = new JetParameterElementType("VALUE_PARAMETER");
038 JetPlaceHolderStubElementType<JetParameterList> VALUE_PARAMETER_LIST =
039 new JetPlaceHolderStubElementType<JetParameterList>("VALUE_PARAMETER_LIST", JetParameterList.class);
040
041 JetTypeParameterElementType TYPE_PARAMETER = new JetTypeParameterElementType("TYPE_PARAMETER");
042 JetPlaceHolderStubElementType<JetTypeParameterList> TYPE_PARAMETER_LIST =
043 new JetPlaceHolderStubElementType<JetTypeParameterList>("TYPE_PARAMETER_LIST", JetTypeParameterList.class);
044
045 JetAnnotationEntryElementType ANNOTATION_ENTRY = new JetAnnotationEntryElementType("ANNOTATION_ENTRY");
046 JetPlaceHolderStubElementType<JetAnnotation> ANNOTATION =
047 new JetPlaceHolderStubElementType<JetAnnotation>("ANNOTATION", JetAnnotation.class);
048
049 JetPlaceHolderStubElementType<JetClassBody> CLASS_BODY =
050 new JetPlaceHolderStubElementType<JetClassBody>("CLASS_BODY", JetClassBody.class);
051
052 JetPlaceHolderStubElementType<JetImportList> IMPORT_LIST =
053 new JetPlaceHolderStubElementType<JetImportList>("IMPORT_LIST", JetImportList.class);
054
055 JetPlaceHolderStubElementType<JetFileAnnotationList> FILE_ANNOTATION_LIST =
056 new JetPlaceHolderStubElementType<JetFileAnnotationList>("FILE_ANNOTATION_LIST", JetFileAnnotationList.class);
057
058 JetImportDirectiveElementType IMPORT_DIRECTIVE = new JetImportDirectiveElementType("IMPORT_DIRECTIVE");
059
060 JetPlaceHolderStubElementType<JetPackageDirective> PACKAGE_DIRECTIVE =
061 new JetPlaceHolderStubElementType<JetPackageDirective>("PACKAGE_DIRECTIVE", JetPackageDirective.class);
062
063 JetModifierListElementType<JetDeclarationModifierList> MODIFIER_LIST =
064 new JetModifierListElementType<JetDeclarationModifierList>("MODIFIER_LIST", JetDeclarationModifierList.class);
065
066 JetModifierListElementType<JetPrimaryConstructorModifierList> PRIMARY_CONSTRUCTOR_MODIFIER_LIST =
067 new JetModifierListElementType<JetPrimaryConstructorModifierList>("PRIMARY_CONSTRUCTOR_MODIFIER_LIST", JetPrimaryConstructorModifierList.class);
068
069 JetPlaceHolderStubElementType<JetTypeConstraintList> TYPE_CONSTRAINT_LIST =
070 new JetPlaceHolderStubElementType<JetTypeConstraintList>("TYPE_CONSTRAINT_LIST", JetTypeConstraintList.class);
071
072 JetTypeConstraintElementType TYPE_CONSTRAINT = new JetTypeConstraintElementType("TYPE_CONSTRAINT");
073
074 JetPlaceHolderStubElementType<JetNullableType> NULLABLE_TYPE =
075 new JetPlaceHolderStubElementType<JetNullableType>("NULLABLE_TYPE", JetNullableType.class);
076
077 JetPlaceHolderStubElementType<JetTypeReference> TYPE_REFERENCE =
078 new JetPlaceHolderStubElementType<JetTypeReference>("TYPE_REFERENCE", JetTypeReference.class);
079
080 JetUserTypeElementType USER_TYPE = new JetUserTypeElementType("USER_TYPE");
081
082 JetPlaceHolderStubElementType<JetFunctionType> FUNCTION_TYPE =
083 new JetPlaceHolderStubElementType<JetFunctionType>("FUNCTION_TYPE", JetFunctionType.class);
084
085 JetTypeProjectionElementType TYPE_PROJECTION = new JetTypeProjectionElementType("TYPE_PROJECTION");
086
087 JetPlaceHolderStubElementType<JetFunctionTypeReceiver> FUNCTION_TYPE_RECEIVER =
088 new JetPlaceHolderStubElementType<JetFunctionTypeReceiver>("FUNCTION_TYPE_RECEIVER", JetFunctionTypeReceiver.class);
089
090 JetNameReferenceExpressionElementType REFERENCE_EXPRESSION = new JetNameReferenceExpressionElementType("REFERENCE_EXPRESSION");
091 JetDotQualifiedExpressionElementType DOT_QUALIFIED_EXPRESSION = new JetDotQualifiedExpressionElementType("DOT_QUALIFIED_EXPRESSION");
092 JetPlaceHolderStubElementType<JetTypeArgumentList> TYPE_ARGUMENT_LIST =
093 new JetPlaceHolderStubElementType<JetTypeArgumentList>("TYPE_ARGUMENT_LIST", JetTypeArgumentList.class);
094
095 JetPlaceHolderStubElementType<JetDelegationSpecifierList> DELEGATION_SPECIFIER_LIST =
096 new JetPlaceHolderStubElementType<JetDelegationSpecifierList>("DELEGATION_SPECIFIER_LIST", JetDelegationSpecifierList.class);
097
098 JetPlaceHolderStubElementType<JetInitializerList> INITIALIZER_LIST =
099 new JetPlaceHolderStubElementType<JetInitializerList>("INITIALIZER_LIST", JetInitializerList.class);
100
101 JetPlaceHolderStubElementType<JetDelegatorByExpressionSpecifier> DELEGATOR_BY =
102 new JetPlaceHolderStubElementType<JetDelegatorByExpressionSpecifier>("DELEGATOR_BY", JetDelegatorByExpressionSpecifier.class);
103
104 JetPlaceHolderStubElementType<JetDelegatorToSuperCall> DELEGATOR_SUPER_CALL =
105 new JetPlaceHolderStubElementType<JetDelegatorToSuperCall>("DELEGATOR_SUPER_CALL", JetDelegatorToSuperCall.class);
106 JetPlaceHolderStubElementType<JetDelegatorToSuperClass> DELEGATOR_SUPER_CLASS =
107 new JetPlaceHolderStubElementType<JetDelegatorToSuperClass>("DELEGATOR_SUPER_CLASS", JetDelegatorToSuperClass.class);
108 JetPlaceHolderStubElementType<JetDelegatorToThisCall> THIS_CALL =
109 new JetPlaceHolderStubElementType<JetDelegatorToThisCall>("THIS_CALL", JetDelegatorToThisCall.class);
110 JetPlaceHolderStubElementType<JetConstructorCalleeExpression> CONSTRUCTOR_CALLEE =
111 new JetPlaceHolderStubElementType<JetConstructorCalleeExpression>("CONSTRUCTOR_CALLEE", JetConstructorCalleeExpression.class);
112
113 TokenSet DECLARATION_TYPES =
114 TokenSet.create(CLASS, OBJECT_DECLARATION, CLASS_OBJECT, FUNCTION, PROPERTY, ANONYMOUS_INITIALIZER, ENUM_ENTRY);
115
116 TokenSet DELEGATION_SPECIFIER_TYPES = TokenSet.create(DELEGATOR_BY, DELEGATOR_SUPER_CALL, DELEGATOR_SUPER_CLASS, THIS_CALL);
117
118 TokenSet TYPE_ELEMENT_TYPES = TokenSet.create(USER_TYPE, NULLABLE_TYPE, FUNCTION_TYPE);
119
120 TokenSet INSIDE_DIRECTIVE_EXPRESSIONS = TokenSet.create(REFERENCE_EXPRESSION, DOT_QUALIFIED_EXPRESSION);
121 }