public abstract class Expression extends Statement
TypeConstants.BoundCheckStatus, TypeConstants.CloseMethodRecord, TypeConstants.DangerousMethod| Modifier and Type | Field and Description |
|---|---|
Constant |
constant |
int |
implicitConversion |
static Expression[] |
NO_EXPRESSIONS |
TypeBinding |
resolvedType |
int |
statementEnd |
COMPLAINED_FAKE_REACHABLE, COMPLAINED_UNREACHABLE, NOT_COMPLAINEDBit1, 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, HasFunctionalInterfaceTypes, HasLocalType, HasSyntaxErrors, HasTypeAnnotations, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, inModule, InsideExpressionStatement, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, INVOCATION_ARGUMENT_WILDCARD, IsAdditionalDeclarator, IsAnnotationDefaultValue, IsAnonymousType, IsAnySubRoutineEscaping, IsArgument, IsCanonicalConstructor, IsCapturedOuterLocal, IsCompoundAssigned, IsDefaultConstructor, IsDiamond, IsElseIfStatement, IsElseStatementUnreachable, IsForeachElementVariable, IsImplicit, IsImplicitThis, IsImplicitUnit, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsRecordComponent, IsRecovered, IsReturnedValue, IsSecondaryType, IsSecretYieldValueUsage, IsStrictlyAssigned, IsSubRoutineEscaping, IsSuperType, IsSynchronized, IsSynthetic, IsThenStatementUnreachable, IsTryBlockExiting, IsTypeElided, IsUnionType, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, NeededScope, NeedFreeReturn, NeedReceiverGenericCast, NO_ARGUMENTS, OnDemand, OperatorMASK, OperatorSHIFT, OverridingMethodWithSupercall, ParenthesizedMASK, ParenthesizedSHIFT, ResolveJavadoc, RestrictiveFlagMASK, ReturnTypeIDMASK, ShadowsOuterLocal, sourceEnd, sourceStart, SuperAccess, ThenExit, Unchecked, UndocumentedEmptyBlock, UnnecessaryCast, UnsafeCast, UsedANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, ANONYMOUS_METHOD, APACHE, APACHE_DBUTILS, APACHE_IOUTILS, ASSERT_CLASS, ASSERT_FALSE, ASSERT_NOTNULL, ASSERT_NULL, ASSERT_TRUE, AUTOMATIC_MODULE_NAME, AUTOWIRED, BEANS, BOOLEAN, BYTE, CAPTURE18, CHANNELS, 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, CharArray_JAVA_LANG_RECORD, CharArray_JAVA_LANG_RECORD_SLASH, CHECK_ARGUMENT, CHECK_NOT_NULL, CHECK_STATE, CLINIT, CLONE, CLOSE, CLOSE_QUIETLY, closeMethods, COM, COM_GOOGLE_COMMON_BASE_PRECONDITIONS, COM_GOOGLE_INJECT_INJECT, COMMONS, COMPILER, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, CONTAINS, CONTAINS_ALL, CONTAINS_KEY, CONTAINS_VALUE, CORE, DEFAULT_LOCATION__ARRAY_CONTENTS, DEFAULT_LOCATION__FIELD, DEFAULT_LOCATION__PARAMETER, DEFAULT_LOCATION__RETURN_TYPE, DEFAULT_LOCATION__TYPE_ARGUMENT, DEFAULT_LOCATION__TYPE_BOUND, DEFAULT_LOCATION__TYPE_PARAMETER, DESERIALIZE_LAMBDA, DOM, DOUBLE, ECLIPSE, EQUALS, FACTORY, FLOAT, FLUENT_RESOURCE_CLASSES, FOR_REMOVAL, FRAMEWORK, GET, GETCLASS, GOOGLE, GUAVA_CLOSEABLES, HASHCODE, INDEX_OF, INIT, INJECT_PACKAGE, INJECT_TYPE, INT, INTERNAL, INVOKE, IO, IS_INSTANCE, IS_NOTNULL, IS_NULL, IS_TRUE, ITYPEBINDING, JAVA, JAVA_BASE, 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, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_REPEATABLE, 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_FUNCTIONAL_INTERFACE, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INCOMPATIBLECLASSCHANGEERROR, JAVA_LANG_INTEGER, JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLES, JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFERROR, JAVA_LANG_NOSUCHFIELDERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_RECORD, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIME_OBJECTMETHODS, 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_NIO_FILE_FILES, JAVA_UTIL_ARRAYS, JAVA_UTIL_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_LIST, JAVA_UTIL_MAP, JAVA_UTIL_OBJECTS, JAVA_UTIL_STREAM, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAX, JAVAX_ANNOTATION_INJECT_INJECT, JAVAX_RMI_CORBA_STUB, JDT, JUNIT, JUNIT_FRAMEWORK_ASSERT, JUPITER, LAMBDA_TYPE, LANG, LANG3, LAST_INDEX_OF, LENGTH, LONG, LOOKUP, MAIN, META_INF_MANIFEST_MF, METHOD_SOURCE, MODULE_INFO_CLASS_NAME, MODULE_INFO_CLASS_NAME_STRING, MODULE_INFO_FILE_NAME, MODULE_INFO_FILE_NAME_STRING, MODULE_INFO_NAME, MODULE_INFO_NAME_STRING, NIO, NON_NULL, NOT_NULL, NULL, OBJECT, OPTIONAL, ORG, ORG_APACHE_COMMONS_LANG_VALIDATE, ORG_APACHE_COMMONS_LANG3_VALIDATE, ORG_ECLIPSE_CORE_RUNTIME_ASSERT, ORG_ECLIPSE_JDT_CORE_DOM_ITYPEBINDING, ORG_ECLIPSE_JDT_INTERNAL_COMPILER_LOOKUP_TYPEBINDING, ORG_JUNIT_ASSERT, ORG_JUNIT_METHOD_SOURCE, ORG_SPRING_AUTOWIRED, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, PARAMS, PROVIDER, READOBJECT, READRESOLVE, RECORD_CLASS, RECORD_RESTRICTED_IDENTIFIER, REFLECT, REMOVE, REMOVE_ALL, REQUIRE_NON_NULL, REQUIRED, RESOURCE_FREE_CLOSEABLE_J_U_STREAMS, RETAIN_ALL, RUNTIME, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SINCE, SPRING, 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, TOSTRING, TYPE, TYPE_PARAMETER_TARGET, TYPE_USE_TARGET, TYPEBINDING, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_MODULE, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RECORD_COMPONENT, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALIDATE_CLASS, VALUE, VALUEOF, VALUES, VAR, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_CAPTURE_SIGNABLE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE, ZIPBitAnyNullAnnotation, BitAutoCloseable, BitCloseable, BitCollection, BitList, BitMap, BitNonNullAnnotation, BitNonNullByDefaultAnnotation, BitNullableAnnotation, BitResourceFreeCloseable, BitUninitialized, BitUninternedType, 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_ComGoogleCommonBasePreconditions, T_ComGoogleInjectInject, 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_JavaLangAnnotationRepeatable, 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_JavaLangFunctionalInterface, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangInvokeMethodHandlePolymorphicSignature, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangRecord, 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_JavaUtilList, T_JavaUtilMap, T_JavaUtilObjects, T_JavaxInjectInject, T_JunitFrameworkAssert, T_LastWellKnownTypeId, T_long, T_null, T_OrgApacheCommonsLang3Validate, T_OrgApacheCommonsLangValidate, T_OrgEclipseCoreRuntimeAssert, T_OrgJunitAssert, T_OrgJunitJupiterParamsProviderMethodSource, T_OrgSpringframeworkBeansFactoryAnnotationAutowired, T_short, T_undefined, T_void, UNBOXING| Constructor and Description |
|---|
Expression() |
| Modifier and Type | Method and Description |
|---|---|
FlowInfo |
analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo) |
FlowInfo |
analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo,
boolean valueRequired)
More sophisticated for of the flow analysis used for analyzing expressions, and be able to optimize out
portions of expressions where no actual value is required.
|
boolean |
checkCastTypesCompatibility(Scope scope,
TypeBinding castType,
TypeBinding expressionType,
Expression expression,
boolean useAutoBoxing)
Returns false if cast is not legal.
|
boolean |
checkNPE(BlockScope scope,
FlowContext flowContext,
FlowInfo flowInfo) |
boolean |
checkNPE(BlockScope scope,
FlowContext flowContext,
FlowInfo flowInfo,
int ttlForFieldCheck)
Check this expression against potential NPEs, which may occur:
if the expression is the receiver in a field access, qualified allocation, array reference or message send
incl.
|
protected void |
checkNPEbyUnboxing(BlockScope scope,
FlowContext flowContext,
FlowInfo flowInfo)
If this expression requires unboxing check if that operation can throw NPE.
|
boolean |
checkUnsafeCast(Scope scope,
TypeBinding castType,
TypeBinding expressionType,
TypeBinding match,
boolean isNarrowing) |
void |
computeConversion(Scope scope,
TypeBinding runtimeType,
TypeBinding compileTimeType)
Base types need that the widening is explicitly done by the compiler using some bytecode like i2f.
|
static int |
computeNullStatus(int status,
int combinedStatus) |
boolean |
containsPatternVariable() |
boolean |
forcedToBeRaw(ReferenceContext referenceContext)
Returns true if the receiver is forced to be of raw type either to satisfy the contract imposed
by a super type or because it *is* raw and the current type has no control over it (i.e the rawness
originates from some other file.)
|
void |
generateCode(BlockScope currentScope,
CodeStream codeStream)
Expression statements are plain expressions, however they generate like
normal expressions with no value required.
|
void |
generateCode(BlockScope currentScope,
CodeStream codeStream,
boolean valueRequired)
Every expression is responsible for generating its implicit conversion when necessary.
|
void |
generateOptimizedBoolean(BlockScope currentScope,
CodeStream codeStream,
BranchLabel trueLabel,
BranchLabel falseLabel,
boolean valueRequired)
Default generation of a boolean value
|
void |
generateOptimizedStringConcatenation(BlockScope blockScope,
CodeStream codeStream,
int typeID) |
void |
generateOptimizedStringConcatenationCreation(BlockScope blockScope,
CodeStream codeStream,
int typeID) |
static Binding |
getDirectBinding(Expression someExpression) |
Expression[] |
getPolyExpressions()
Returns contained poly expressions, result could be 0, 1 or more (for conditional expression)
|
void |
initializePatternVariables(BlockScope scope,
CodeStream codeStream) |
boolean |
isBoxingCompatibleWith(TypeBinding left,
Scope scope) |
boolean |
isCompactableOperation() |
boolean |
isCompatibleWith(TypeBinding left,
Scope scope) |
boolean |
isConstantValueOfTypeAssignableToType(TypeBinding constantType,
TypeBinding targetType) |
static boolean |
isConstantValueRepresentable(Constant constant,
int constantTypeID,
int targetTypeID) |
boolean |
isExactMethodReference() |
boolean |
isFunctionalType() |
boolean |
isPertinentToApplicability(TypeBinding targetType,
MethodBinding method) |
boolean |
isPolyExpression() |
boolean |
isPolyExpression(MethodBinding method)
Variant of isPolyExpression() to be used during type inference, when a resolution candidate exists.
|
boolean |
isPotentiallyCompatibleWith(TypeBinding targetType,
Scope scope) |
boolean |
isTrulyExpression() |
boolean |
isTypeReference() |
LocalVariableBinding |
localVariableBinding()
Returns the local variable referenced by this node.
|
void |
markAsNonNull()
Mark this expression as being non null, per a specific tag in the
source code.
|
VariableBinding |
nullAnnotatedVariableBinding(boolean supportTypeAnnotations)
Used on the lhs of an assignment for detecting null spec violation.
|
int |
nullStatus(FlowInfo flowInfo,
FlowContext flowContext) |
Constant |
optimizedBooleanConstant()
Constant usable for bytecode pattern optimizations, but cannot be inlined
since it is not strictly equivalent to the definition of constant expressions.
|
protected Constant |
optimizedNullComparisonConstant() |
TypeBinding |
postConversionType(Scope scope)
Returns the type of the expression after required implicit conversions.
|
java.lang.StringBuffer |
print(int indent,
java.lang.StringBuffer output) |
abstract java.lang.StringBuffer |
printExpression(int indent,
java.lang.StringBuffer output) |
java.lang.StringBuffer |
printStatement(int indent,
java.lang.StringBuffer output) |
void |
resolve(BlockScope scope) |
Expression |
resolveExpressionExpecting(TypeBinding targetType,
Scope scope,
InferenceContext18 context) |
TypeBinding |
resolveExpressionType(BlockScope scope)
Returns the resolved expression if any associated to this statement - used
parameter statement has to be either a SwitchStatement or a SwitchExpression
|
TypeBinding |
resolveType(BlockScope scope)
Resolve the type of this expression in the context of a blockScope
|
TypeBinding |
resolveType(ClassScope scope)
Resolve the type of this expression in the context of a classScope
|
TypeBinding |
resolveTypeExpecting(BlockScope scope,
TypeBinding expectedType) |
java.lang.Object |
reusableJSRTarget()
Returns an object which can be used to identify identical JSR sequence targets
(see TryStatement subroutine codegen)
or
null if not reusable |
void |
setExpectedType(TypeBinding expectedType)
Record the type expectation before this expression is typechecked.
|
void |
setExpressionContext(ExpressionContext context) |
boolean |
sIsMoreSpecific(TypeBinding s,
TypeBinding t,
Scope scope) |
boolean |
statementExpression() |
void |
tagAsNeedCheckCast() |
void |
tagAsUnnecessaryCast(Scope scope,
TypeBinding castType)
Record the fact a cast expression got detected as being unnecessary.
|
Expression |
toTypeReference() |
void |
traverse(ASTVisitor visitor,
BlockScope scope)
Traverse an expression in the context of a blockScope
|
void |
traverse(ASTVisitor visitor,
ClassScope scope)
Traverse an expression in the context of a classScope
|
protected void |
updateFlowOnBooleanResult(FlowInfo flowInfo,
boolean result)
Back-propagation of flow info: before analysing a branch where a given condition is known to hold true/false respectively,
ask the condition to contribute its information to the given flowInfo.
|
analyseArguments, branchChainTo, breaksOut, checkAgainstNullTypeAnnotation, complainIfUnreachable, completesByContinue, continuesAtOuterLabel, doesNotCompleteNormally, expectedType, findConstructorBinding, generateArguments, getExpressionContext, invocationTargetType, isBoxingCompatible, isEmptyBlock, isKnowDeadCodePattern, isValidJavaStatement, resolveCaseacceptPotentiallyCompatibleMethods, checkingPotentialCompatibility, checkInvocationArguments, concreteStatement, copySE8AnnotationsToType, handleNonNullByDefault, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isQualifiedSuper, isSuper, isThis, isTypeUseDeprecated, isUnqualifiedSuper, printAnnotations, printIndent, printModifiers, receiverIsImplicitThis, resolveAnnotations, resolveAnnotations, resolveAnnotations, resolveDeprecatedAnnotations, resolvePolyExpressionArguments, sourceEnd, sourceStart, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetCategorypublic Constant constant
public int statementEnd
public int implicitConversion
public TypeBinding resolvedType
public static Expression[] NO_EXPRESSIONS
public static final boolean isConstantValueRepresentable(Constant constant, int constantTypeID, int targetTypeID)
public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo)
analyseCode in class Statementpublic FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired)
currentScope - flowContext - flowInfo - valueRequired - protected void updateFlowOnBooleanResult(FlowInfo flowInfo, boolean result)
flowInfo - the info to be used for analysing the branchresult - condition result that would cause entering the branchpublic final boolean checkCastTypesCompatibility(Scope scope, TypeBinding castType, TypeBinding expressionType, Expression expression, boolean useAutoBoxing)
public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck)
scope - the scope of the analysisflowContext - the current flow contextflowInfo - the upstream flow info; caveat: may get modifiedttlForFieldCheck - if this is a reference to a field we will mark that field as nonnull for the specified timeToLivepublic boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo)
protected void checkNPEbyUnboxing(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo)
public boolean checkUnsafeCast(Scope scope, TypeBinding castType, TypeBinding expressionType, TypeBinding match, boolean isNarrowing)
public void computeConversion(Scope scope, TypeBinding runtimeType, TypeBinding compileTimeType)
public static int computeNullStatus(int status,
int combinedStatus)
public void generateCode(BlockScope currentScope, CodeStream codeStream)
generateCode in class StatementcurrentScope - org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScopecodeStream - org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStreampublic void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired)
currentScope - org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScopecodeStream - org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStreamvalueRequired - booleanpublic void initializePatternVariables(BlockScope scope, CodeStream codeStream)
public boolean containsPatternVariable()
public void generateOptimizedBoolean(BlockScope currentScope, CodeStream codeStream, BranchLabel trueLabel, BranchLabel falseLabel, boolean valueRequired)
currentScope - codeStream - trueLabel - falseLabel - valueRequired - public void generateOptimizedStringConcatenation(BlockScope blockScope, CodeStream codeStream, int typeID)
public void generateOptimizedStringConcatenationCreation(BlockScope blockScope, CodeStream codeStream, int typeID)
public static Binding getDirectBinding(Expression someExpression)
public boolean isCompactableOperation()
public boolean isConstantValueOfTypeAssignableToType(TypeBinding constantType, TypeBinding targetType)
public boolean isTypeReference()
public LocalVariableBinding localVariableBinding()
public void markAsNonNull()
public int nullStatus(FlowInfo flowInfo, FlowContext flowContext)
public Constant optimizedBooleanConstant()
public boolean isPertinentToApplicability(TypeBinding targetType, MethodBinding method)
public TypeBinding postConversionType(Scope scope)
public java.lang.StringBuffer print(int indent,
java.lang.StringBuffer output)
public abstract java.lang.StringBuffer printExpression(int indent,
java.lang.StringBuffer output)
public java.lang.StringBuffer printStatement(int indent,
java.lang.StringBuffer output)
printStatement in class Statementpublic void resolve(BlockScope scope)
public TypeBinding resolveExpressionType(BlockScope scope)
StatementresolveExpressionType in class Statementpublic TypeBinding resolveType(BlockScope scope)
scope - public TypeBinding resolveType(ClassScope scope)
scope - public TypeBinding resolveTypeExpecting(BlockScope scope, TypeBinding expectedType)
public Expression resolveExpressionExpecting(TypeBinding targetType, Scope scope, InferenceContext18 context)
public boolean forcedToBeRaw(ReferenceContext referenceContext)
public java.lang.Object reusableJSRTarget()
null if not reusablepublic void setExpectedType(TypeBinding expectedType)
expectedType - The type denoting an expectation in the context of an assignment conversionpublic void setExpressionContext(ExpressionContext context)
public boolean isCompatibleWith(TypeBinding left, Scope scope)
public boolean isBoxingCompatibleWith(TypeBinding left, Scope scope)
public boolean sIsMoreSpecific(TypeBinding s, TypeBinding t, Scope scope)
public boolean isExactMethodReference()
public boolean isPolyExpression()
throws java.lang.UnsupportedOperationException
java.lang.UnsupportedOperationExceptionpublic boolean isPolyExpression(MethodBinding method)
public void tagAsNeedCheckCast()
public void tagAsUnnecessaryCast(Scope scope, TypeBinding castType)
scope - castType - public Expression toTypeReference()
public void traverse(ASTVisitor visitor, BlockScope scope)
public void traverse(ASTVisitor visitor, ClassScope scope)
visitor - scope - public boolean statementExpression()
public boolean isTrulyExpression()
public VariableBinding nullAnnotatedVariableBinding(boolean supportTypeAnnotations)
supportTypeAnnotations - if true this causes any variable binding to be used
independent of declaration annotations (for in-depth analysis of type annotations)public boolean isFunctionalType()
public Expression[] getPolyExpressions()
public boolean isPotentiallyCompatibleWith(TypeBinding targetType, Scope scope)
protected Constant optimizedNullComparisonConstant()