org.eclipse.jdt.internal.compiler.ast
Class Statement
java.lang.Object
org.eclipse.jdt.internal.compiler.ast.ASTNode
org.eclipse.jdt.internal.compiler.ast.Statement
- All Implemented Interfaces:
- TypeConstants, TypeIds
- Direct Known Subclasses:
- AbstractVariableDeclaration, AssertStatement, Block, BranchStatement, CaseStatement, DoStatement, EmptyStatement, ExplicitConstructorCall, Expression, ForeachStatement, ForStatement, IfStatement, LabeledStatement, ReturnStatement, SubRoutineStatement, SwitchStatement, ThrowStatement, TypeDeclaration, WhileStatement
public abstract class Statement
- extends ASTNode
| Fields inherited from class org.eclipse.jdt.internal.compiler.ast.ASTNode |
Bit1, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15, Bit16, Bit17, Bit18, Bit19, Bit2, Bit20, Bit21, Bit22, Bit23, Bit24, Bit25, Bit26, Bit27, Bit28, Bit29, Bit3, Bit30, Bit31, Bit32, Bit32L, Bit33L, Bit34L, Bit35L, Bit36L, Bit37L, Bit38L, Bit39L, Bit4, Bit40L, Bit41L, Bit42L, Bit43L, Bit44L, Bit45L, Bit46L, Bit47L, Bit48L, Bit49L, Bit5, Bit50L, Bit51L, Bit52L, Bit53L, Bit54L, Bit55L, Bit56L, Bit57L, Bit58L, Bit59L, Bit6, Bit60L, Bit61L, Bit62L, Bit63L, Bit64L, Bit7, Bit8, Bit9, bits, BlockExit, CanBeStatic, ContainsAssertion, DepthMASK, DepthSHIFT, DidResolve, DisableUnnecessaryCastCheck, DiscardEnclosingInstance, DocumentedCasesOmitted, DocumentedFallthrough, Empty, ErrorInSignature, FirstAssignmentToLocal, GenerateCheckcast, HasAbstractMethods, HasAllMethodBodies, HasBeenGenerated, HasBeenResolved, HasLocalType, HasSyntaxErrors, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, InsideExpressionStatement, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, INVOCATION_ARGUMENT_WILDCARD, IsAnnotationDefaultValue, IsAnonymousType, IsAnySubRoutineEscaping, IsArgument, IsCompoundAssigned, IsDefaultConstructor, IsDiamond, IsElseIfStatement, IsElseStatementUnreachable, IsImplicitThis, IsImplicitUnit, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsRecovered, IsReturnedValue, IsSecondaryType, IsStrictlyAssigned, IsSubRoutineEscaping, IsSuperType, IsSynchronized, IsSynthetic, IsThenStatementUnreachable, IsTryBlockExiting, IsUnionType, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, NeededScope, NeedFreeReturn, NeedReceiverGenericCast, OnDemand, OperatorMASK, OperatorSHIFT, OverridingMethodWithSupercall, ParenthesizedMASK, ParenthesizedSHIFT, ResolveJavadoc, RestrictiveFlagMASK, ReturnTypeIDMASK, sourceEnd, sourceStart, SuperAccess, ThenExit, Unchecked, UndocumentedEmptyBlock, UnnecessaryCast, UnsafeCast, Used |
| 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, CLOSE, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, CORE, DOUBLE, ECLIPSE, EQUALS, FLOAT, GETCLASS, HASHCODE, INIT, INT, INVOKE, IO, JAVA, JAVA_IO, JAVA_IO_CLOSEABLE, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_RESOURCE_FREE_CLOSEABLES, JAVA_IO_SERIALIZABLE, JAVA_IO_WRAPPER_CLOSEABLES, 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_AUTOCLOSEABLE, 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_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, 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_SAFEVARARGS, 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_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAX, JAVAX_RMI_CORBA_STUB, LANG, LENGTH, LONG, MAIN, MISMATCH, NULL, OBJECT, OK, ORG, ORG_ECLIPSE_CORE_RUNTIME_ASSERT, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, RUNTIME, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_CONSTANT_INITIALIZATION_METHOD_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_STATIC_FACTORY, 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, ZIP |
| Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.TypeIds |
BitAutoCloseable, BitCloseable, BitResourceFreeCloseable, BitUninitialized, BitWrapperCloseable, 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, InheritableBits, Int2Byte, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Byte, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2Null, Null2String, Object2boolean, Object2byte, Object2char, Object2double, Object2float, Object2int, Object2long, Object2Object, Object2short, Object2String, Short2Byte, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_boolean, T_byte, T_char, T_ConfiguredAnnotationNonNull, T_ConfiguredAnnotationNonNullByDefault, T_ConfiguredAnnotationNullable, 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_JavaLangAutoCloseable, 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_JavaLangInvokeMethodHandlePolymorphicSignature, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangReflectConstructor, T_JavaLangReflectField, T_JavaLangReflectMethod, T_JavaLangRuntimeException, T_JavaLangSafeVarargs, T_JavaLangShort, T_JavaLangString, T_JavaLangStringBuffer, T_JavaLangStringBuilder, T_JavaLangSuppressWarnings, T_JavaLangSystem, T_JavaLangThrowable, T_JavaLangVoid, T_JavaUtilCollection, T_JavaUtilIterator, T_long, T_null, T_OrgEclipseCoreRuntimeAssert, T_short, T_undefined, T_void, UNBOXING |
|
Method Summary |
protected void |
analyseArguments(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo,
MethodBinding methodBinding,
Expression[] arguments)
Analysing arguments of MessageSend, ExplicitConstructorCall, AllocationExpression. |
abstract FlowInfo |
analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo)
|
void |
branchChainTo(BranchLabel label)
INTERNAL USE ONLY. |
protected int |
checkAssignmentAgainstNullAnnotation(BlockScope currentScope,
FlowContext flowContext,
LocalVariableBinding local,
int nullStatus,
Expression expression,
TypeBinding providedType)
Check null-ness of 'local' against a possible null annotation |
int |
complainIfUnreachable(FlowInfo flowInfo,
BlockScope scope,
int previousComplaintLevel,
boolean endOfBlock)
|
TypeBinding |
expectedType()
Implementation of InvocationSite.expectedType()
suitable at this level. |
void |
generateArguments(MethodBinding binding,
Expression[] arguments,
BlockScope currentScope,
CodeStream codeStream)
Generate invocation arguments, considering varargs methods |
abstract void |
generateCode(BlockScope currentScope,
CodeStream codeStream)
|
protected boolean |
isBoxingCompatible(TypeBinding expressionType,
TypeBinding targetType,
Expression expression,
Scope scope)
|
boolean |
isEmptyBlock()
|
protected static boolean |
isKnowDeadCodePattern(Expression expression)
Answers true if the if is identified as a known coding pattern which
should be tolerated by dead code analysis. |
boolean |
isValidJavaStatement()
|
java.lang.StringBuffer |
print(int indent,
java.lang.StringBuffer output)
|
abstract java.lang.StringBuffer |
printStatement(int indent,
java.lang.StringBuffer output)
|
abstract void |
resolve(BlockScope scope)
|
Constant |
resolveCase(BlockScope scope,
TypeBinding testType,
SwitchStatement switchStatement)
Returns case constant associated to this statement (NotAConstant if none) |
| Methods inherited from class org.eclipse.jdt.internal.compiler.ast.ASTNode |
checkInvocationArguments, concreteStatement, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, printAnnotations, printIndent, printModifiers, resolveAnnotations, resolveDeprecatedAnnotations, sourceEnd, sourceStart, toString, traverse |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
NOT_COMPLAINED
public static final int NOT_COMPLAINED
- See Also:
- Constant Field Values
COMPLAINED_FAKE_REACHABLE
public static final int COMPLAINED_FAKE_REACHABLE
- See Also:
- Constant Field Values
COMPLAINED_UNREACHABLE
public static final int COMPLAINED_UNREACHABLE
- See Also:
- Constant Field Values
Statement
public Statement()
isKnowDeadCodePattern
protected static boolean isKnowDeadCodePattern(Expression expression)
- Answers true if the if is identified as a known coding pattern which
should be tolerated by dead code analysis.
e.g. if (DEBUG) print(); // no complaint
Only invoked when overall condition is known to be optimizeable into false/true.
analyseCode
public abstract FlowInfo analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo)
analyseArguments
protected void analyseArguments(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo,
MethodBinding methodBinding,
Expression[] arguments)
- Analysing arguments of MessageSend, ExplicitConstructorCall, AllocationExpression.
checkAssignmentAgainstNullAnnotation
protected int checkAssignmentAgainstNullAnnotation(BlockScope currentScope,
FlowContext flowContext,
LocalVariableBinding local,
int nullStatus,
Expression expression,
TypeBinding providedType)
- Check null-ness of 'local' against a possible null annotation
branchChainTo
public void branchChainTo(BranchLabel label)
- INTERNAL USE ONLY.
This is used to redirect inter-statements jumps.
complainIfUnreachable
public int complainIfUnreachable(FlowInfo flowInfo,
BlockScope scope,
int previousComplaintLevel,
boolean endOfBlock)
generateArguments
public void generateArguments(MethodBinding binding,
Expression[] arguments,
BlockScope currentScope,
CodeStream codeStream)
- Generate invocation arguments, considering varargs methods
generateCode
public abstract void generateCode(BlockScope currentScope,
CodeStream codeStream)
isBoxingCompatible
protected boolean isBoxingCompatible(TypeBinding expressionType,
TypeBinding targetType,
Expression expression,
Scope scope)
isEmptyBlock
public boolean isEmptyBlock()
isValidJavaStatement
public boolean isValidJavaStatement()
print
public java.lang.StringBuffer print(int indent,
java.lang.StringBuffer output)
- Specified by:
print in class ASTNode
printStatement
public abstract java.lang.StringBuffer printStatement(int indent,
java.lang.StringBuffer output)
resolve
public abstract void resolve(BlockScope scope)
resolveCase
public Constant resolveCase(BlockScope scope,
TypeBinding testType,
SwitchStatement switchStatement)
- Returns case constant associated to this statement (NotAConstant if none)
expectedType
public TypeBinding expectedType()
- Implementation of
InvocationSite.expectedType()
suitable at this level. Subclasses should override as necessary.
- See Also:
InvocationSite.expectedType()