blob: fc4e0996fabadf8a345a67926a93c37e69190c54 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.compiler.lookup;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
public interface TagBits {
// Tag bits in the tagBits int of every TypeBinding
long IsArrayType = ASTNode.Bit1;
long IsBaseType = ASTNode.Bit2;
long IsNestedType = ASTNode.Bit3;
long IsMemberType = ASTNode.Bit4;
long ContainsNestedTypeReferences = ASTNode.Bit12; // method/parameterized type binding
long MemberTypeMask = IsNestedType | IsMemberType | ContainsNestedTypeReferences;
long IsLocalType = ASTNode.Bit5;
long LocalTypeMask = IsNestedType | IsLocalType | ContainsNestedTypeReferences;
long IsAnonymousType = ASTNode.Bit6;
long AnonymousTypeMask = LocalTypeMask | IsAnonymousType | ContainsNestedTypeReferences;
long IsBinaryBinding = ASTNode.Bit7;
// set for all bindings either representing a missing type (type), or directly referencing a missing type (field/method/variable)
long HasMissingType = ASTNode.Bit8;
// for method
long HasUncheckedTypeArgumentForBoundCheck = ASTNode.Bit9;
// local variable
long NotInitialized = ASTNode.Bit9;
// set when method has argument(s) that couldn't be resolved
long HasUnresolvedArguments = ASTNode.Bit10;
// for the type cycle hierarchy check used by ClassScope
long BeginHierarchyCheck = ASTNode.Bit9; // type
long EndHierarchyCheck = ASTNode.Bit10; // type
long PauseHierarchyCheck = ASTNode.Bit20; // type
long HasParameterAnnotations = ASTNode.Bit11; // method/constructor
// test bit to see if default abstract methods were computed
long KnowsDefaultAbstractMethods = ASTNode.Bit11; // type
long IsArgument = ASTNode.Bit11; // local
long ClearPrivateModifier = ASTNode.Bit10; // constructor binding
// test bits to see if parts of binary types are faulted
long AreFieldsSorted = ASTNode.Bit13;
long AreFieldsComplete = ASTNode.Bit14; // sorted and all resolved
long AreMethodsSorted = ASTNode.Bit15;
long AreMethodsComplete = ASTNode.Bit16; // sorted and all resolved
// test bit to avoid asking a type for a member type (includes inherited member types)
long HasNoMemberTypes = ASTNode.Bit17;
// test bit to identify if the type's hierarchy is inconsistent
long HierarchyHasProblems = ASTNode.Bit18;
// test bit to identify if the type's type variables have been connected
long TypeVariablesAreConnected = ASTNode.Bit19;
// set for parameterized type with successful bound check
long PassedBoundCheck = ASTNode.Bit23;
// set for parameterized type NOT of the form X<?,?>
long IsBoundParameterizedType = ASTNode.Bit24;
// used by BinaryTypeBinding
long HasUnresolvedTypeVariables = ASTNode.Bit25;
long HasUnresolvedSuperclass = ASTNode.Bit26;
long HasUnresolvedSuperinterfaces = ASTNode.Bit27;
long HasUnresolvedEnclosingType = ASTNode.Bit28;
long HasUnresolvedMemberTypes = ASTNode.Bit29;
long HasTypeVariable = ASTNode.Bit30; // set either for type variables (direct) or parameterized types indirectly referencing type variables
long HasDirectWildcard = ASTNode.Bit31; // set for parameterized types directly referencing wildcards
// for the annotation cycle hierarchy check used by ClassScope
long BeginAnnotationCheck = ASTNode.Bit32L;
long EndAnnotationCheck = ASTNode.Bit33L;
// standard annotations
// 9-bits for targets
long AnnotationResolved = ASTNode.Bit34L;
long DeprecatedAnnotationResolved = ASTNode.Bit35L;
long AnnotationTarget = ASTNode.Bit36L; // @Target({}) only sets this bit
long AnnotationForType = ASTNode.Bit37L;
long AnnotationForField = ASTNode.Bit38L;
long AnnotationForMethod = ASTNode.Bit39L;
long AnnotationForParameter = ASTNode.Bit40L;
long AnnotationForConstructor = ASTNode.Bit41L;
long AnnotationForLocalVariable = ASTNode.Bit42L;
long AnnotationForAnnotationType = ASTNode.Bit43L;
long AnnotationForPackage = ASTNode.Bit44L;
long AnnotationTargetMASK = AnnotationTarget
| AnnotationForType | AnnotationForField
| AnnotationForMethod | AnnotationForParameter
| AnnotationForConstructor | AnnotationForLocalVariable
| AnnotationForAnnotationType | AnnotationForPackage;
// 2-bits for retention (should check (tagBits & RetentionMask) == RuntimeRetention
long AnnotationSourceRetention = ASTNode.Bit45L;
long AnnotationClassRetention = ASTNode.Bit46L;
long AnnotationRuntimeRetention = AnnotationSourceRetention | AnnotationClassRetention;
long AnnotationRetentionMASK = AnnotationSourceRetention | AnnotationClassRetention | AnnotationRuntimeRetention;
// marker annotations
long AnnotationDeprecated = ASTNode.Bit47L;
long AnnotationDocumented = ASTNode.Bit48L;
long AnnotationInherited = ASTNode.Bit49L;
long AnnotationOverride = ASTNode.Bit50L;
long AnnotationSuppressWarnings = ASTNode.Bit51L;
long AllStandardAnnotationsMask = AnnotationTargetMASK | AnnotationRetentionMASK | AnnotationDeprecated | AnnotationDocumented | AnnotationInherited | AnnotationOverride | AnnotationSuppressWarnings;
long DefaultValueResolved = ASTNode.Bit52L;
// set when type contains non-private constructor(s)
long HasNonPrivateConstructor = ASTNode.Bit53L;
}