| Modifier and Type | Field and Description |
|---|---|
Expression[] |
AllocationExpression.arguments |
Expression[] |
ExplicitConstructorCall.arguments |
Expression[] |
MessageSend.arguments |
Expression |
AssertStatement.assertExpression |
Expression |
ForeachStatement.collection |
Expression |
WhileStatement.condition |
Expression |
IfStatement.condition |
Expression |
ForStatement.condition |
Expression |
DoStatement.condition |
Expression |
ConditionalExpression.condition |
Expression |
CaseStatement.constantExpression |
Expression |
AnnotationMethodDeclaration.defaultValue |
Expression[] |
ArrayAllocationExpression.dimensions |
Expression |
QualifiedAllocationExpression.enclosingInstance |
Expression |
ThrowStatement.exception |
Expression |
AssertStatement.exceptionArgument |
Expression |
Assignment.expression |
Expression |
SynchronizedStatement.expression |
Expression |
SwitchStatement.expression |
Expression |
ReturnStatement.expression |
Expression |
CastExpression.expression |
Expression |
InstanceOfExpression.expression |
Expression |
UnaryExpression.expression |
Expression[] |
ArrayInitializer.expressions |
Expression |
AbstractVariableDeclaration.initialization |
Expression |
BinaryExpression.left |
Expression |
Assignment.lhs |
Expression[] |
StringLiteralConcatenation.literals |
Expression |
SingleMemberAnnotation.memberValue |
Expression |
ArrayReference.position |
Expression |
ExplicitConstructorCall.qualification |
Expression |
ArrayReference.receiver |
Expression |
FieldReference.receiver |
Expression |
MessageSend.receiver |
Expression |
BinaryExpression.right |
Expression[] |
Javadoc.seeReferences |
Expression |
MemberValuePair.value |
Expression |
ConditionalExpression.valueIfFalse |
Expression |
ConditionalExpression.valueIfTrue |
| Modifier and Type | Method and Description |
|---|---|
Expression |
AllocationExpression.enclosingInstance() |
Expression |
QualifiedAllocationExpression.enclosingInstance() |
Expression |
CastExpression.innermostCastedExpression() |
Expression |
Expression.toTypeReference() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
Statement.analyseArguments(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo,
MethodBinding methodBinding,
Expression[] arguments)
Analysing arguments of MessageSend, ExplicitConstructorCall, AllocationExpression.
|
protected int |
Statement.checkAssignmentAgainstNullAnnotation(BlockScope currentScope,
FlowContext flowContext,
VariableBinding var,
int nullStatus,
Expression expression,
TypeBinding providedType)
Check null-ness of 'var' against a possible null annotation
|
boolean |
Expression.checkCastTypesCompatibility(Scope scope,
TypeBinding castType,
TypeBinding expressionType,
Expression expression)
Returns false if cast is not legal.
|
static boolean |
ASTNode.checkInvocationArguments(BlockScope scope,
Expression receiver,
TypeBinding receiverType,
MethodBinding method,
Expression[] arguments,
TypeBinding[] argumentTypes,
boolean argsContainCast,
InvocationSite invocationSite) |
static boolean |
ASTNode.checkInvocationArguments(BlockScope scope,
Expression receiver,
TypeBinding receiverType,
MethodBinding method,
Expression[] arguments,
TypeBinding[] argumentTypes,
boolean argsContainCast,
InvocationSite invocationSite) |
static void |
CastExpression.checkNeedForArgumentCast(BlockScope scope,
int operator,
int operatorSignature,
Expression expression,
int expressionTypeId)
Only complain for identity cast, since other type of casts may be useful: e.g.
|
static void |
CastExpression.checkNeedForArgumentCasts(BlockScope scope,
Expression receiver,
TypeBinding receiverType,
MethodBinding binding,
Expression[] arguments,
TypeBinding[] argumentTypes,
InvocationSite invocationSite)
Cast expressions will considered as useful if removing them all would actually bind to a different method
(no fine grain analysis on per casted argument basis, simply separate widening cast from narrowing ones)
|
static void |
CastExpression.checkNeedForArgumentCasts(BlockScope scope,
Expression receiver,
TypeBinding receiverType,
MethodBinding binding,
Expression[] arguments,
TypeBinding[] argumentTypes,
InvocationSite invocationSite)
Cast expressions will considered as useful if removing them all would actually bind to a different method
(no fine grain analysis on per casted argument basis, simply separate widening cast from narrowing ones)
|
static void |
CastExpression.checkNeedForArgumentCasts(BlockScope scope,
int operator,
int operatorSignature,
Expression left,
int leftTypeId,
boolean leftIsCast,
Expression right,
int rightTypeId,
boolean rightIsCast)
Check binary operator casted arguments
|
static void |
CastExpression.checkNeedForEnclosingInstanceCast(BlockScope scope,
Expression enclosingInstance,
TypeBinding enclosingInstanceType,
TypeBinding memberType)
Casting an enclosing instance will considered as useful if removing it would actually bind to a different type
|
static void |
FakedTrackingVariable.cleanUpAfterAssignment(BlockScope currentScope,
int lhsBits,
Expression expression) |
void |
Statement.generateArguments(MethodBinding binding,
Expression[] arguments,
BlockScope currentScope,
CodeStream codeStream)
Generate invocation arguments, considering varargs methods
|
void |
QualifiedNameReference.generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired) |
abstract void |
Reference.generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired) |
void |
ArrayReference.generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired) |
void |
ThisReference.generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired) |
void |
FieldReference.generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired) |
void |
SingleNameReference.generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired) |
void |
SingleNameReference.generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
MethodBinding writeAccessor,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired) |
static FakedTrackingVariable |
FakedTrackingVariable.getCloseTrackingVariable(Expression expression,
FlowInfo flowInfo,
FlowContext flowContext)
If expression resolves to a value of type AutoCloseable answer the variable that tracks closing of that local.
|
static Binding |
Expression.getDirectBinding(Expression someExpression) |
static void |
FakedTrackingVariable.handleResourceAssignment(BlockScope scope,
FlowInfo upstreamInfo,
FlowInfo flowInfo,
FlowContext flowContext,
ASTNode location,
Expression rhs,
LocalVariableBinding local)
Check if the rhs of an assignment or local declaration is an (Auto)Closeable.
|
protected boolean |
Statement.isBoxingCompatible(TypeBinding expressionType,
TypeBinding targetType,
Expression expression,
Scope scope) |
protected static boolean |
Statement.isKnowDeadCodePattern(Expression expression)
Answers true if the if is identified as a known coding pattern which
should be tolerated by dead code analysis.
|
static FlowInfo |
FakedTrackingVariable.markPassedToOutside(BlockScope scope,
Expression expression,
FlowInfo flowInfo,
FlowContext flowContext,
boolean owned)
Mark that this resource is passed to some outside code
(as argument to a method/ctor call or as a return value from the current method),
and thus should be considered as potentially closed.
|
static void |
FakedTrackingVariable.preConnectTrackerAcrossAssignment(ASTNode location,
LocalVariableBinding local,
Expression rhs,
FlowInfo flowInfo)
Before analyzing an assignment of this shape:
singleName = new Allocation()
connect any tracking variable of the LHS with the allocation on the RHS. |
| Constructor and Description |
|---|
AND_AND_Expression(Expression left,
Expression right,
int operator) |
ArrayReference(Expression rec,
Expression pos) |
AssertStatement(Expression exceptionArgument,
Expression assertExpression,
int startPosition) |
AssertStatement(Expression assertExpression,
int startPosition) |
Assignment(Expression lhs,
Expression expression,
int sourceEnd) |
BinaryExpression(Expression left,
Expression right,
int operator) |
CaseStatement(Expression constantExpression,
int sourceEnd,
int sourceStart) |
CastExpression(Expression expression,
TypeReference type) |
CombinedBinaryExpression(Expression left,
Expression right,
int operator,
int arity)
Make a new CombinedBinaryExpression.
|
CompoundAssignment(Expression lhs,
Expression expression,
int operator,
int sourceEnd) |
ConditionalExpression(Expression condition,
Expression valueIfTrue,
Expression valueIfFalse) |
DoStatement(Expression condition,
Statement action,
int sourceStart,
int sourceEnd) |
EqualExpression(Expression left,
Expression right,
int operator) |
ForStatement(Statement[] initializations,
Expression condition,
Statement[] increments,
Statement action,
boolean neededScope,
int s,
int e) |
IfStatement(Expression condition,
Statement thenStatement,
int sourceStart,
int sourceEnd) |
IfStatement(Expression condition,
Statement thenStatement,
Statement elseStatement,
int sourceStart,
int sourceEnd) |
InstanceOfExpression(Expression expression,
TypeReference type) |
MemberValuePair(char[] token,
int sourceStart,
int sourceEnd,
Expression value) |
OR_OR_Expression(Expression left,
Expression right,
int operator) |
PostfixExpression(Expression lhs,
Expression expression,
int operator,
int pos) |
PrefixExpression(Expression lhs,
Expression expression,
int operator,
int pos)
PrefixExpression constructor comment.
|
ReturnStatement(Expression expression,
int sourceStart,
int sourceEnd) |
SynchronizedStatement(Expression expression,
Block statement,
int s,
int e) |
ThrowStatement(Expression exception,
int sourceStart,
int sourceEnd) |
UnaryExpression(Expression expression,
int operator) |
WhileStatement(Expression condition,
Statement action,
int s,
int e) |
| Modifier and Type | Method and Description |
|---|---|
void |
CodeStream.generateReturnBytecode(Expression expression) |
void |
CodeStream.generateStringConcatenationAppend(BlockScope blockScope,
Expression oper1,
Expression oper2)
The equivalent code performs a string conversion:
|
void |
CodeStream.generateSyntheticEnclosingInstanceValues(BlockScope currentScope,
ReferenceBinding targetType,
Expression enclosingInstance,
ASTNode invocationSite)
Code responsible to generate the suitable code to supply values for the synthetic enclosing
instance arguments of a constructor invocation of a nested type.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
FlowContext.checkUnboxing(Scope scope,
Expression expression,
FlowInfo flowInfo)
During deferred checking re-visit a previously recording unboxing situation.
|
protected boolean |
LoopingFlowContext.internalRecordNullityMismatch(Expression expression,
TypeBinding providedType,
int nullStatus,
TypeBinding expectedType,
int checkType) |
protected boolean |
FlowContext.internalRecordNullityMismatch(Expression expression,
TypeBinding providedType,
int nullStatus,
TypeBinding expectedType,
int checkType) |
protected boolean |
FinallyFlowContext.internalRecordNullityMismatch(Expression expression,
TypeBinding providedType,
int nullStatus,
TypeBinding expectedType,
int checkType) |
void |
FlowContext.recordNullityMismatch(BlockScope currentScope,
Expression expression,
TypeBinding providedType,
TypeBinding expectedType,
int nullStatus)
Record that a nullity mismatch was detected against an annotated type reference.
|
void |
LoopingFlowContext.recordUnboxing(Scope scope,
Expression expression,
int nullStatus,
FlowInfo flowInfo) |
void |
FlowContext.recordUnboxing(Scope scope,
Expression expression,
int nullStatus,
FlowInfo flowInfo)
Either AST analysis or checking of a child flow context has encountered an unboxing situation.
|
void |
FinallyFlowContext.recordUnboxing(Scope scope,
Expression expression,
int nullStatus,
FlowInfo flowInfo) |
| Modifier and Type | Method and Description |
|---|---|
static Object |
ElementValuePair.getValue(Expression expression) |
| Constructor and Description |
|---|
ElementValuePair(char[] name,
Expression expression,
MethodBinding binding) |
| Modifier and Type | Field and Description |
|---|---|
protected Expression[] |
Parser.expressionStack |
| Modifier and Type | Method and Description |
|---|---|
protected Expression |
Parser.getTypeReference(Expression exp) |
Expression |
Parser.parseExpression(char[] source,
int offset,
int length,
CompilationUnitDeclaration unit) |
Expression |
Parser.parseMemberValue(char[] source,
int offset,
int length,
CompilationUnitDeclaration unit) |
| Modifier and Type | Method and Description |
|---|---|
protected Expression |
Parser.getTypeReference(Expression exp) |
protected void |
Parser.pushOnExpressionStack(Expression expr) |
protected void |
Parser.updateSourcePosition(Expression exp) |
| Modifier and Type | Method and Description |
|---|---|
void |
ProblemReporter.annotationValueMustBeAnnotation(TypeBinding annotationType,
char[] name,
Expression value,
TypeBinding expectedType) |
void |
ProblemReporter.annotationValueMustBeArrayInitializer(TypeBinding annotationType,
char[] name,
Expression value) |
void |
ProblemReporter.annotationValueMustBeClassLiteral(TypeBinding annotationType,
char[] name,
Expression value) |
void |
ProblemReporter.annotationValueMustBeConstant(TypeBinding annotationType,
char[] name,
Expression value,
boolean isEnum) |
void |
ProblemReporter.autoboxing(Expression expression,
TypeBinding originalType,
TypeBinding convertedType) |
void |
ProblemReporter.cannotAllocateVoidArray(Expression expression) |
void |
ProblemReporter.caseExpressionMustBeConstant(Expression expression) |
void |
ProblemReporter.comparingIdenticalExpressions(Expression comparison) |
void |
ProblemReporter.enumConstantsCannotBeSurroundedByParenthesis(Expression expression) |
boolean |
ProblemReporter.expressionNonNullComparison(Expression expr,
boolean checkForNull) |
void |
ProblemReporter.expressionShouldBeAVariable(Expression expression) |
void |
ProblemReporter.incorrectSwitchType(Expression expression,
TypeBinding testType) |
void |
ProblemReporter.invalidEnclosingType(Expression expression,
TypeBinding type,
ReferenceBinding enclosingType) |
void |
ProblemReporter.invalidExpressionAsStatement(Expression expression) |
void |
ProblemReporter.invalidNullToSynchronize(Expression expression) |
void |
ProblemReporter.invalidTypeForCollection(Expression expression) |
void |
ProblemReporter.invalidTypeForCollectionTarget14(Expression expression) |
void |
ProblemReporter.invalidTypeToSynchronize(Expression expression,
TypeBinding type) |
void |
ProblemReporter.invalidUnaryExpression(Expression expression) |
void |
ProblemReporter.invalidUsageOfForeachStatements(LocalDeclaration elementVariable,
Expression collection) |
void |
ProblemReporter.missingSemiColon(Expression expression) |
void |
ProblemReporter.notCompatibleTypesErrorInForeach(Expression expression,
TypeBinding leftType,
TypeBinding rightType) |
void |
ProblemReporter.nullityMismatch(Expression expression,
TypeBinding providedType,
TypeBinding requiredType,
int nullStatus,
char[][] annotationName) |
void |
ProblemReporter.nullityMismatchIsNull(Expression expression,
TypeBinding requiredType,
char[][] annotationName) |
void |
ProblemReporter.nullityMismatchIsUnknown(Expression expression,
TypeBinding providedType,
TypeBinding requiredType,
char[][] annotationName) |
void |
ProblemReporter.nullityMismatchPotentiallyNull(Expression expression,
TypeBinding requiredType,
char[][] annotationName) |
void |
ProblemReporter.nullityMismatchSpecdNullable(Expression expression,
TypeBinding requiredType,
char[][] annotationName) |
void |
ProblemReporter.signalNoImplicitStringConversionForCharArrayExpression(Expression expression) |
void |
ProblemReporter.unhandledWarningToken(Expression token) |
void |
ProblemReporter.unnecessaryEnclosingInstanceSpecification(Expression expression,
ReferenceBinding targetType) |
void |
ProblemReporter.unsafeElementTypeConversion(Expression expression,
TypeBinding expressionType,
TypeBinding expectedType) |
void |
ProblemReporter.unsafeTypeConversion(Expression expression,
TypeBinding expressionType,
TypeBinding expectedType) |
void |
ProblemReporter.unusedWarningToken(Expression token) |
Copyright © 2013. All rights reserved.