/*
* Copyright 2010-2015 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.kotlin.psi.stubs.elements;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.kotlin.psi.*;
public interface KtStubElementTypes {
KtFileElementType FILE = new KtFileElementType();
KtClassElementType CLASS = new KtClassElementType("CLASS");
KtFunctionElementType FUNCTION = new KtFunctionElementType("FUN");
KtPropertyElementType PROPERTY = new KtPropertyElementType("PROPERTY");
KtPropertyAccessorElementType PROPERTY_ACCESSOR = new KtPropertyAccessorElementType("PROPERTY_ACCESSOR");
KtTypeAliasElementType TYPEALIAS = new KtTypeAliasElementType("TYPEALIAS");
KtClassElementType ENUM_ENTRY = new KtClassElementType("ENUM_ENTRY");
KtObjectElementType OBJECT_DECLARATION = new KtObjectElementType("OBJECT_DECLARATION");
KtPlaceHolderStubElementType<KtClassInitializer> CLASS_INITIALIZER =
new KtPlaceHolderStubElementType<>("CLASS_INITIALIZER", KtClassInitializer.class);
KtPlaceHolderStubElementType<KtSecondaryConstructor> SECONDARY_CONSTRUCTOR =
new KtPlaceHolderStubElementType<>("SECONDARY_CONSTRUCTOR", KtSecondaryConstructor.class);
KtPlaceHolderStubElementType<KtPrimaryConstructor> PRIMARY_CONSTRUCTOR =
new KtPlaceHolderStubElementType<>("PRIMARY_CONSTRUCTOR", KtPrimaryConstructor.class);
KtParameterElementType VALUE_PARAMETER = new KtParameterElementType("VALUE_PARAMETER");
KtPlaceHolderStubElementType<KtParameterList> VALUE_PARAMETER_LIST =
new KtPlaceHolderStubElementType<>("VALUE_PARAMETER_LIST", KtParameterList.class);
KtTypeParameterElementType TYPE_PARAMETER = new KtTypeParameterElementType("TYPE_PARAMETER");
KtPlaceHolderStubElementType<KtTypeParameterList> TYPE_PARAMETER_LIST =
new KtPlaceHolderStubElementType<>("TYPE_PARAMETER_LIST", KtTypeParameterList.class);
KtAnnotationEntryElementType ANNOTATION_ENTRY = new KtAnnotationEntryElementType("ANNOTATION_ENTRY");
KtPlaceHolderStubElementType<KtAnnotation> ANNOTATION =
new KtPlaceHolderStubElementType<>("ANNOTATION", KtAnnotation.class);
KtAnnotationUseSiteTargetElementType ANNOTATION_TARGET = new KtAnnotationUseSiteTargetElementType("ANNOTATION_TARGET");
KtPlaceHolderStubElementType<KtClassBody> CLASS_BODY =
new KtPlaceHolderStubElementType<>("CLASS_BODY", KtClassBody.class);
KtPlaceHolderStubElementType<KtImportList> IMPORT_LIST =
new KtPlaceHolderStubElementType<>("IMPORT_LIST", KtImportList.class);
KtPlaceHolderStubElementType<KtFileAnnotationList> FILE_ANNOTATION_LIST =
new KtPlaceHolderStubElementType<>("FILE_ANNOTATION_LIST", KtFileAnnotationList.class);
KtImportDirectiveElementType IMPORT_DIRECTIVE = new KtImportDirectiveElementType("IMPORT_DIRECTIVE");
KtPlaceHolderStubElementType<KtPackageDirective> PACKAGE_DIRECTIVE =
new KtPlaceHolderStubElementType<>("PACKAGE_DIRECTIVE", KtPackageDirective.class);
KtModifierListElementType<KtDeclarationModifierList> MODIFIER_LIST =
new KtModifierListElementType<>("MODIFIER_LIST", KtDeclarationModifierList.class);
KtPlaceHolderStubElementType<KtTypeConstraintList> TYPE_CONSTRAINT_LIST =
new KtPlaceHolderStubElementType<>("TYPE_CONSTRAINT_LIST", KtTypeConstraintList.class);
KtPlaceHolderStubElementType<KtTypeConstraint> TYPE_CONSTRAINT =
new KtPlaceHolderStubElementType<>("TYPE_CONSTRAINT", KtTypeConstraint.class);
KtPlaceHolderStubElementType<KtNullableType> NULLABLE_TYPE =
new KtPlaceHolderStubElementType<>("NULLABLE_TYPE", KtNullableType.class);
KtPlaceHolderStubElementType<KtTypeReference> TYPE_REFERENCE =
new KtPlaceHolderStubElementType<>("TYPE_REFERENCE", KtTypeReference.class);
KtUserTypeElementType USER_TYPE = new KtUserTypeElementType("USER_TYPE");
KtPlaceHolderStubElementType<KtDynamicType> DYNAMIC_TYPE =
new KtPlaceHolderStubElementType<>("DYNAMIC_TYPE", KtDynamicType.class);
KtPlaceHolderStubElementType<KtFunctionType> FUNCTION_TYPE =
new KtPlaceHolderStubElementType<>("FUNCTION_TYPE", KtFunctionType.class);
KtTypeProjectionElementType TYPE_PROJECTION = new KtTypeProjectionElementType("TYPE_PROJECTION");
KtPlaceHolderStubElementType<KtFunctionTypeReceiver> FUNCTION_TYPE_RECEIVER =
new KtPlaceHolderStubElementType<>("FUNCTION_TYPE_RECEIVER", KtFunctionTypeReceiver.class);
KtNameReferenceExpressionElementType REFERENCE_EXPRESSION = new KtNameReferenceExpressionElementType("REFERENCE_EXPRESSION");
KtDotQualifiedExpressionElementType DOT_QUALIFIED_EXPRESSION = new KtDotQualifiedExpressionElementType("DOT_QUALIFIED_EXPRESSION");
KtEnumEntrySuperClassReferenceExpressionElementType
ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION = new KtEnumEntrySuperClassReferenceExpressionElementType("ENUM_ENTRY_SUPERCLASS_REFERENCE_EXPRESSION");
KtPlaceHolderStubElementType<KtTypeArgumentList> TYPE_ARGUMENT_LIST =
new KtPlaceHolderStubElementType<>("TYPE_ARGUMENT_LIST", KtTypeArgumentList.class);
KtPlaceHolderStubElementType<KtSuperTypeList> SUPER_TYPE_LIST =
new KtPlaceHolderStubElementType<>("SUPER_TYPE_LIST", KtSuperTypeList.class);
KtPlaceHolderStubElementType<KtInitializerList> INITIALIZER_LIST =
new KtPlaceHolderStubElementType<>("INITIALIZER_LIST", KtInitializerList.class);
KtPlaceHolderStubElementType<KtDelegatedSuperTypeEntry> DELEGATED_SUPER_TYPE_ENTRY =
new KtPlaceHolderStubElementType<>("DELEGATED_SUPER_TYPE_ENTRY", KtDelegatedSuperTypeEntry.class);
KtPlaceHolderStubElementType<KtSuperTypeCallEntry> SUPER_TYPE_CALL_ENTRY =
new KtPlaceHolderStubElementType<>("SUPER_TYPE_CALL_ENTRY", KtSuperTypeCallEntry.class);
KtPlaceHolderStubElementType<KtSuperTypeEntry> SUPER_TYPE_ENTRY =
new KtPlaceHolderStubElementType<>("SUPER_TYPE_ENTRY", KtSuperTypeEntry.class);
KtPlaceHolderStubElementType<KtConstructorCalleeExpression> CONSTRUCTOR_CALLEE =
new KtPlaceHolderStubElementType<>("CONSTRUCTOR_CALLEE", KtConstructorCalleeExpression.class);
KtScriptElementType SCRIPT = new KtScriptElementType("SCRIPT");
TokenSet DECLARATION_TYPES =
TokenSet.create(CLASS, OBJECT_DECLARATION, FUNCTION, PROPERTY, TYPEALIAS, CLASS_INITIALIZER, SECONDARY_CONSTRUCTOR, ENUM_ENTRY);
TokenSet SUPER_TYPE_LIST_ENTRIES = TokenSet.create(DELEGATED_SUPER_TYPE_ENTRY, SUPER_TYPE_CALL_ENTRY, SUPER_TYPE_ENTRY);
TokenSet TYPE_ELEMENT_TYPES = TokenSet.create(USER_TYPE, NULLABLE_TYPE, FUNCTION_TYPE, DYNAMIC_TYPE);
TokenSet INSIDE_DIRECTIVE_EXPRESSIONS = TokenSet.create(REFERENCE_EXPRESSION, DOT_QUALIFIED_EXPRESSION);
}