001    /*
002     * Copyright 2010-2015 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.kotlin.psi.stubs.elements;
018    
019    import com.intellij.psi.tree.TokenSet;
020    import org.jetbrains.kotlin.psi.*;
021    
022    import static org.jetbrains.kotlin.JetNodeTypes.SELF_TYPE;
023    
024    public interface JetStubElementTypes {
025        JetFileElementType FILE = new JetFileElementType();
026    
027        JetClassElementType CLASS = new JetClassElementType("CLASS");
028        JetFunctionElementType FUNCTION = new JetFunctionElementType("FUN");
029        JetPropertyElementType PROPERTY = new JetPropertyElementType("PROPERTY");
030        JetPropertyAccessorElementType PROPERTY_ACCESSOR = new JetPropertyAccessorElementType("PROPERTY_ACCESSOR");
031    
032        JetClassElementType ENUM_ENTRY = new JetClassElementType("ENUM_ENTRY");
033        JetObjectElementType OBJECT_DECLARATION = new JetObjectElementType("OBJECT_DECLARATION");
034        JetPlaceHolderStubElementType<JetClassInitializer> ANONYMOUS_INITIALIZER =
035                new JetPlaceHolderStubElementType<JetClassInitializer>("ANONYMOUS_INITIALIZER", JetClassInitializer.class);
036        JetPlaceHolderStubElementType<JetSecondaryConstructor> SECONDARY_CONSTRUCTOR =
037                new JetPlaceHolderStubElementType<JetSecondaryConstructor>("SECONDARY_CONSTRUCTOR", JetSecondaryConstructor.class);
038        JetPlaceHolderStubElementType<JetPrimaryConstructor> PRIMARY_CONSTRUCTOR =
039                new JetPlaceHolderStubElementType<JetPrimaryConstructor>("PRIMARY_CONSTRUCTOR", JetPrimaryConstructor.class);
040    
041        JetParameterElementType VALUE_PARAMETER = new JetParameterElementType("VALUE_PARAMETER");
042        JetPlaceHolderStubElementType<JetParameterList> VALUE_PARAMETER_LIST =
043                new JetPlaceHolderStubElementType<JetParameterList>("VALUE_PARAMETER_LIST", JetParameterList.class);
044    
045        JetTypeParameterElementType TYPE_PARAMETER = new JetTypeParameterElementType("TYPE_PARAMETER");
046        JetPlaceHolderStubElementType<JetTypeParameterList> TYPE_PARAMETER_LIST =
047                new JetPlaceHolderStubElementType<JetTypeParameterList>("TYPE_PARAMETER_LIST", JetTypeParameterList.class);
048    
049        JetAnnotationEntryElementType ANNOTATION_ENTRY = new JetAnnotationEntryElementType("ANNOTATION_ENTRY");
050        JetPlaceHolderStubElementType<JetAnnotation> ANNOTATION =
051                new JetPlaceHolderStubElementType<JetAnnotation>("ANNOTATION", JetAnnotation.class);
052    
053        JetAnnotationUseSiteTargetElementType ANNOTATION_TARGET = new JetAnnotationUseSiteTargetElementType("ANNOTATION_TARGET");
054    
055        JetPlaceHolderStubElementType<JetClassBody> CLASS_BODY =
056                new JetPlaceHolderStubElementType<JetClassBody>("CLASS_BODY", JetClassBody.class);
057    
058        JetPlaceHolderStubElementType<JetImportList> IMPORT_LIST =
059                new JetPlaceHolderStubElementType<JetImportList>("IMPORT_LIST", JetImportList.class);
060    
061        JetPlaceHolderStubElementType<JetFileAnnotationList> FILE_ANNOTATION_LIST =
062                new JetPlaceHolderStubElementType<JetFileAnnotationList>("FILE_ANNOTATION_LIST", JetFileAnnotationList.class);
063    
064        JetImportDirectiveElementType IMPORT_DIRECTIVE = new JetImportDirectiveElementType("IMPORT_DIRECTIVE");
065    
066        JetPlaceHolderStubElementType<JetPackageDirective> PACKAGE_DIRECTIVE =
067                new JetPlaceHolderStubElementType<JetPackageDirective>("PACKAGE_DIRECTIVE", JetPackageDirective.class);
068    
069        JetModifierListElementType<JetDeclarationModifierList> MODIFIER_LIST =
070                new JetModifierListElementType<JetDeclarationModifierList>("MODIFIER_LIST", JetDeclarationModifierList.class);
071    
072        JetPlaceHolderStubElementType<JetTypeConstraintList> TYPE_CONSTRAINT_LIST =
073                new JetPlaceHolderStubElementType<JetTypeConstraintList>("TYPE_CONSTRAINT_LIST", JetTypeConstraintList.class);
074    
075        JetPlaceHolderStubElementType<JetTypeConstraint> TYPE_CONSTRAINT =
076                new JetPlaceHolderStubElementType<JetTypeConstraint>("TYPE_CONSTRAINT", JetTypeConstraint.class);
077    
078        JetPlaceHolderStubElementType<JetNullableType> NULLABLE_TYPE =
079                new JetPlaceHolderStubElementType<JetNullableType>("NULLABLE_TYPE", JetNullableType.class);
080    
081        JetPlaceHolderStubElementType<JetTypeReference> TYPE_REFERENCE =
082                new JetPlaceHolderStubElementType<JetTypeReference>("TYPE_REFERENCE", JetTypeReference.class);
083    
084        JetUserTypeElementType USER_TYPE = new JetUserTypeElementType("USER_TYPE");
085        JetPlaceHolderStubElementType<JetDynamicType> DYNAMIC_TYPE =
086                new JetPlaceHolderStubElementType<JetDynamicType>("DYNAMIC_TYPE", JetDynamicType.class);
087    
088        JetPlaceHolderStubElementType<JetFunctionType> FUNCTION_TYPE =
089                new JetPlaceHolderStubElementType<JetFunctionType>("FUNCTION_TYPE", JetFunctionType.class);
090    
091        JetTypeProjectionElementType TYPE_PROJECTION = new JetTypeProjectionElementType("TYPE_PROJECTION");
092    
093        JetPlaceHolderStubElementType<JetFunctionTypeReceiver> FUNCTION_TYPE_RECEIVER =
094                new JetPlaceHolderStubElementType<JetFunctionTypeReceiver>("FUNCTION_TYPE_RECEIVER", JetFunctionTypeReceiver.class);
095    
096        JetNameReferenceExpressionElementType REFERENCE_EXPRESSION = new JetNameReferenceExpressionElementType("REFERENCE_EXPRESSION");
097        JetDotQualifiedExpressionElementType DOT_QUALIFIED_EXPRESSION = new JetDotQualifiedExpressionElementType("DOT_QUALIFIED_EXPRESSION");
098        JetEnumEntrySuperClassReferenceExpressionElementType
099                ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION = new JetEnumEntrySuperClassReferenceExpressionElementType("ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION");
100        JetPlaceHolderStubElementType<JetTypeArgumentList> TYPE_ARGUMENT_LIST =
101                new JetPlaceHolderStubElementType<JetTypeArgumentList>("TYPE_ARGUMENT_LIST", JetTypeArgumentList.class);
102    
103        JetPlaceHolderStubElementType<JetDelegationSpecifierList> DELEGATION_SPECIFIER_LIST =
104                new JetPlaceHolderStubElementType<JetDelegationSpecifierList>("DELEGATION_SPECIFIER_LIST", JetDelegationSpecifierList.class);
105    
106        JetPlaceHolderStubElementType<JetInitializerList> INITIALIZER_LIST =
107                new JetPlaceHolderStubElementType<JetInitializerList>("INITIALIZER_LIST", JetInitializerList.class);
108    
109        JetPlaceHolderStubElementType<JetDelegatorByExpressionSpecifier> DELEGATOR_BY =
110                new JetPlaceHolderStubElementType<JetDelegatorByExpressionSpecifier>("DELEGATOR_BY", JetDelegatorByExpressionSpecifier.class);
111    
112        JetPlaceHolderStubElementType<JetDelegatorToSuperCall> DELEGATOR_SUPER_CALL =
113                new JetPlaceHolderStubElementType<JetDelegatorToSuperCall>("DELEGATOR_SUPER_CALL", JetDelegatorToSuperCall.class);
114        JetPlaceHolderStubElementType<JetDelegatorToSuperClass> DELEGATOR_SUPER_CLASS =
115                new JetPlaceHolderStubElementType<JetDelegatorToSuperClass>("DELEGATOR_SUPER_CLASS", JetDelegatorToSuperClass.class);
116        JetPlaceHolderStubElementType<JetConstructorCalleeExpression> CONSTRUCTOR_CALLEE =
117                new JetPlaceHolderStubElementType<JetConstructorCalleeExpression>("CONSTRUCTOR_CALLEE", JetConstructorCalleeExpression.class);
118    
119        TokenSet DECLARATION_TYPES =
120                TokenSet.create(CLASS, OBJECT_DECLARATION, FUNCTION, PROPERTY, ANONYMOUS_INITIALIZER, SECONDARY_CONSTRUCTOR, ENUM_ENTRY);
121    
122        TokenSet DELEGATION_SPECIFIER_TYPES = TokenSet.create(DELEGATOR_BY, DELEGATOR_SUPER_CALL, DELEGATOR_SUPER_CLASS);
123    
124        TokenSet TYPE_ELEMENT_TYPES = TokenSet.create(USER_TYPE, NULLABLE_TYPE, FUNCTION_TYPE, DYNAMIC_TYPE, SELF_TYPE);
125    
126        TokenSet INSIDE_DIRECTIVE_EXPRESSIONS = TokenSet.create(REFERENCE_EXPRESSION, DOT_QUALIFIED_EXPRESSION);
127    }