/*******************************************************************************
* 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;
// 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;
}