org.eclipse.jdt.internal.compiler.lookup
Class BlockScope

java.lang.Object
  extended by org.eclipse.jdt.internal.compiler.lookup.Scope
      extended by org.eclipse.jdt.internal.compiler.lookup.BlockScope
All Implemented Interfaces:
TypeConstants, TypeIds
Direct Known Subclasses:
CodeSnippetScope, MethodScope

public class BlockScope
extends Scope


Field Summary
static VariableBinding[] EmulationPathToImplicitThis
           
 CaseStatement enclosingCase
           
 int localIndex
           
 LocalVariableBinding[] locals
           
 int maxOffset
           
static VariableBinding[] NoEnclosingInstanceInConstructorCall
           
static VariableBinding[] NoEnclosingInstanceInStaticContext
           
 int offset
           
 BlockScope[] shiftScopes
           
 boolean specificationEnabled
           
 int specIndex
           
 LocalVariableBinding[] specvardecls
           
 int startIndex
           
 int subscopeCount
           
 Scope[] subscopes
           
 
Fields inherited from class org.eclipse.jdt.internal.compiler.lookup.Scope
AUTOBOX_COMPATIBLE, BLOCK_SCOPE, CLASS_SCOPE, COMPATIBLE, COMPILATION_UNIT_SCOPE, EQUAL_OR_MORE_SPECIFIC, kind, METHOD_SCOPE, MORE_GENERIC, NOT_COMPATIBLE, NOT_RELATED, parent, VARARGS_COMPATIBLE
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, BOOLEAN, BYTE, CHAR, CharArray_JAVA_IO_OBJECTINPUTSTREAM, CharArray_JAVA_IO_OBJECTOUTPUTSTREAM, CharArray_JAVA_IO_OBJECTSTREAMFIELD, CharArray_JAVA_LANG_ANNOTATION_ANNOTATION, CharArray_JAVA_LANG_ENUM, CharArray_JAVA_LANG_OBJECT, CLINIT, CLONE, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, DOUBLE, FLOAT, GETCLASS, INIT, INT, IO, JAVA, JAVA_IO, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_SERIALIZABLE, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_BOOLEAN, JAVA_LANG_BYTE, JAVA_LANG_CHARACTER, JAVA_LANG_CLASS, JAVA_LANG_CLASSNOTFOUNDEXCEPTION, JAVA_LANG_CLONEABLE, JAVA_LANG_DEPRECATED, JAVA_LANG_DOUBLE, JAVA_LANG_ENUM, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_SUPPRESSWARNINGS, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, JAVA_UTIL_ITERATOR, JML_ANNOTATION, JML_ANNOTATION_CODE_BIGINT_MATH, JML_ANNOTATION_CODE_JAVA_MATH, JML_ANNOTATION_CODE_SAFE_MATH, JML_ANNOTATION_GHOST, JML_ANNOTATION_HELPER, JML_ANNOTATION_INSTANCE, JML_ANNOTATION_MODEL, JML_ANNOTATION_NON_NULL, JML_ANNOTATION_NON_NULL_BY_DEFAULT, JML_ANNOTATION_NULLABLE, JML_ANNOTATION_NULLABLE_BY_DEFAULT, JML_ANNOTATION_PEER, JML_ANNOTATION_PKG, JML_ANNOTATION_PURE, JML_ANNOTATION_READONLY, JML_ANNOTATION_REP, JML_ANNOTATION_SPEC_BIGINT_MATH, JML_ANNOTATION_SPEC_JAVA_MATH, JML_ANNOTATION_SPEC_PROTECTED, JML_ANNOTATION_SPEC_PUBLIC, JML_ANNOTATION_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_CODE_BIGINT_MATH, JML_ANNOTATION_TYPE_CODE_JAVA_MATH, JML_ANNOTATION_TYPE_CODE_SAFE_MATH, JML_ANNOTATION_TYPE_GHOST, JML_ANNOTATION_TYPE_HELPER, JML_ANNOTATION_TYPE_INSTANCE, JML_ANNOTATION_TYPE_MODEL, JML_ANNOTATION_TYPE_NON_NULL_BY_DEFAULT, JML_ANNOTATION_TYPE_NONNULL, JML_ANNOTATION_TYPE_NULLABLE, JML_ANNOTATION_TYPE_NULLABLE_BY_DEFAULT, JML_ANNOTATION_TYPE_PEER, JML_ANNOTATION_TYPE_PURE, JML_ANNOTATION_TYPE_READONLY, JML_ANNOTATION_TYPE_REP, JML_ANNOTATION_TYPE_SPEC_BIGINT_MATH, JML_ANNOTATION_TYPE_SPEC_JAVA_MATH, JML_ANNOTATION_TYPE_SPEC_PROTECTED, JML_ANNOTATION_TYPE_SPEC_PUBLIC, JML_ANNOTATION_TYPE_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_UNINITIALIZED, JML_ANNOTATION_UNINITIALIZED, JML_ORG, JML_RUNTIME, JML_RUNTIME_ANNOTATION, JML4, JMLSPECS, LANG, LENGTH, LONG, MAIN, MISMATCH, NULL, OBJECT, OK, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_SWITCH_ENUM_TABLE, TYPE, UNCHECKED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALUE, VALUEOF, VALUES, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.TypeIds
Boolean2Boolean, Boolean2Int, Boolean2String, BOXING, Byte2Byte, Byte2Char, Byte2Double, Byte2Float, Byte2Int, Byte2Long, Byte2Short, Byte2String, Char2Byte, Char2Char, Char2Double, Char2Float, Char2Int, Char2Long, Char2Short, Char2String, COMPILE_TYPE_MASK, Double2Byte, Double2Char, Double2Double, Double2Float, Double2Int, Double2Long, Double2Short, Double2String, Float2Byte, Float2Char, Float2Double, Float2Float, Float2Int, Float2Long, Float2Short, Float2String, IMPLICIT_CONVERSION_MASK, Int2Byte, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Byte, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2String, Object2Object, Object2String, Short2Byte, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_boolean, T_byte, T_char, T_double, T_float, T_int, T_JavaIoException, T_JavaIoExternalizable, T_JavaIoObjectStreamException, T_JavaIoPrintStream, T_JavaIoSerializable, T_JavaLangAnnotationAnnotation, T_JavaLangAnnotationDocumented, T_JavaLangAnnotationElementType, T_JavaLangAnnotationInherited, T_JavaLangAnnotationRetention, T_JavaLangAnnotationRetentionPolicy, T_JavaLangAnnotationTarget, T_JavaLangAssertionError, T_JavaLangBoolean, T_JavaLangByte, T_JavaLangCharacter, T_JavaLangClass, T_JavaLangClassNotFoundException, T_JavaLangCloneable, T_JavaLangDeprecated, T_JavaLangDouble, T_JavaLangEnum, T_JavaLangError, T_JavaLangException, T_JavaLangFloat, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangReflectConstructor, T_JavaLangReflectField, T_JavaLangReflectMethod, T_JavaLangRuntimeException, T_JavaLangShort, T_JavaLangString, T_JavaLangStringBuffer, T_JavaLangStringBuilder, T_JavaLangSuppressWarnings, T_JavaLangSystem, T_JavaLangThrowable, T_JavaLangVoid, T_JavaUtilIterator, T_long, T_null, T_short, T_undefined, T_void, UNBOXING
 
Constructor Summary
BlockScope(BlockScope parent)
           
BlockScope(BlockScope parent, boolean addToParentScope)
           
BlockScope(BlockScope parent, int variableCount)
           
 
Method Summary
 void addAnonymousType(TypeDeclaration anonymousType, ReferenceBinding superBinding)
           
 void addLocalType(TypeDeclaration localType)
           
 void addLocalVariable(LocalVariableBinding binding)
           
 void addSpecificationVariable(LocalVariableBinding binding)
           
 void addSubscope(Scope childScope)
           
 boolean allowBlankFinalFieldAssignment(FieldBinding binding)
          Answer true if the receiver is suitable for assigning final blank fields.
 void emulateOuterAccess(LocalVariableBinding outerLocalVariable)
           
 ReferenceBinding findLocalType(char[] name)
           
 LocalDeclaration[] findLocalVariableDeclarations(int position)
          Returns all declarations of most specific locals containing a given position in their source range.
 LocalVariableBinding findVariable(char[] variableName)
           
 Binding getBinding(char[][] compoundName, int mask, InvocationSite invocationSite, boolean needResolve)
           
 Binding getBinding(char[][] compoundName, InvocationSite invocationSite)
           
 VariableBinding[] getEmulationPath(LocalVariableBinding outerLocalVariable)
           
 java.lang.Object[] getEmulationPath(ReferenceBinding targetEnclosingType, boolean onlyExactMatch, boolean denyEnclosingArgInConstructorCall)
           
 boolean isDuplicateLocalVariable(char[] name)
           
 int maxShiftedOffset()
           
 boolean needBlankFinalFieldInitializationCheck(FieldBinding binding)
          Returns true if the context requires to check initialization of final blank fields.
 ProblemReporter problemReporter()
           
 void propagateInnerEmulation(ReferenceBinding targetType, boolean isEnclosingInstanceSupplied)
           
 TypeDeclaration referenceType()
           
 int scopeIndex()
           
 java.lang.String toString()
           
 java.lang.String toString(int tab)
           
 
Methods inherited from class org.eclipse.jdt.internal.compiler.lookup.Scope
boxing, classScope, compareTypes, compilationUnitScope, compilerOptions, createArrayType, createTypeVariables, enclosingClassScope, enclosingMethodScope, enclosingReceiverType, enclosingReferenceContext, enclosingSourceType, environment, findDirectMemberType, findExactMethod, findField, findMemberType, findMethod, findMethod, findMethodForArray, findType, getBaseType, getBinding, getConstructor, getCurrentPackage, getDeclarationModifiers, getField, getImplicitMethod, getJavaIoSerializable, getJavaLangAnnotationAnnotation, getJavaLangAssertionError, getJavaLangClass, getJavaLangCloneable, getJavaLangEnum, getJavaLangIterable, getJavaLangObject, getJavaLangString, getJavaLangThrowable, getJavaUtilIterator, getMemberType, getMethod, getPackage, getType, getType, getType, getTypeOrPackage, greaterLowerBound, greaterLowerBound, innermostSwitchCase, isBoxingCompatibleWith, isDefinedInField, isDefinedInMethod, isDefinedInSameUnit, isDefinedInType, isInsideCase, isInsideDeprecatedCode, lowerUpperBound, methodScope, outerMostClassScope, outerMostMethodScope, parameterCompatibilityLevel, referenceCompilationUnit, referenceContext, substitute, substitute, substitute
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

specvardecls

public LocalVariableBinding[] specvardecls

specificationEnabled

public boolean specificationEnabled

specIndex

public int specIndex

locals

public LocalVariableBinding[] locals

localIndex

public int localIndex

startIndex

public int startIndex

offset

public int offset

maxOffset

public int maxOffset

shiftScopes

public BlockScope[] shiftScopes

subscopes

public Scope[] subscopes

subscopeCount

public int subscopeCount

enclosingCase

public CaseStatement enclosingCase

EmulationPathToImplicitThis

public static final VariableBinding[] EmulationPathToImplicitThis

NoEnclosingInstanceInConstructorCall

public static final VariableBinding[] NoEnclosingInstanceInConstructorCall

NoEnclosingInstanceInStaticContext

public static final VariableBinding[] NoEnclosingInstanceInStaticContext
Constructor Detail

BlockScope

public BlockScope(BlockScope parent)

BlockScope

public BlockScope(BlockScope parent,
                  boolean addToParentScope)

BlockScope

public BlockScope(BlockScope parent,
                  int variableCount)
Method Detail

addAnonymousType

public final void addAnonymousType(TypeDeclaration anonymousType,
                                   ReferenceBinding superBinding)

addLocalType

public final void addLocalType(TypeDeclaration localType)

addLocalVariable

public final void addLocalVariable(LocalVariableBinding binding)

addSpecificationVariable

public final void addSpecificationVariable(LocalVariableBinding binding)

addSubscope

public void addSubscope(Scope childScope)

allowBlankFinalFieldAssignment

public final boolean allowBlankFinalFieldAssignment(FieldBinding binding)
Answer true if the receiver is suitable for assigning final blank fields. in other words, it is inside an initializer, a constructor or a clinit


emulateOuterAccess

public void emulateOuterAccess(LocalVariableBinding outerLocalVariable)

findLocalType

public final ReferenceBinding findLocalType(char[] name)

findLocalVariableDeclarations

public LocalDeclaration[] findLocalVariableDeclarations(int position)
Returns all declarations of most specific locals containing a given position in their source range. This code does not recurse in nested types. Returned array may have null values at trailing indexes.


findVariable

public LocalVariableBinding findVariable(char[] variableName)
Overrides:
findVariable in class Scope

getBinding

public Binding getBinding(char[][] compoundName,
                          int mask,
                          InvocationSite invocationSite,
                          boolean needResolve)

getBinding

public final Binding getBinding(char[][] compoundName,
                                InvocationSite invocationSite)

getEmulationPath

public VariableBinding[] getEmulationPath(LocalVariableBinding outerLocalVariable)

getEmulationPath

public java.lang.Object[] getEmulationPath(ReferenceBinding targetEnclosingType,
                                           boolean onlyExactMatch,
                                           boolean denyEnclosingArgInConstructorCall)

isDuplicateLocalVariable

public final boolean isDuplicateLocalVariable(char[] name)

maxShiftedOffset

public int maxShiftedOffset()

needBlankFinalFieldInitializationCheck

public final boolean needBlankFinalFieldInitializationCheck(FieldBinding binding)
Returns true if the context requires to check initialization of final blank fields. in other words, it is inside an initializer, a constructor or a clinit


problemReporter

public ProblemReporter problemReporter()
Specified by:
problemReporter in class Scope

propagateInnerEmulation

public void propagateInnerEmulation(ReferenceBinding targetType,
                                    boolean isEnclosingInstanceSupplied)

referenceType

public TypeDeclaration referenceType()

scopeIndex

public int scopeIndex()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toString

public java.lang.String toString(int tab)