Package soot.JastAddJ
Class DiamondAccess
- java.lang.Object
-
- beaver.Symbol
-
- soot.JastAddJ.ASTNode<ASTNode>
-
- soot.JastAddJ.Expr
-
- soot.JastAddJ.Access
-
- soot.JastAddJ.DiamondAccess
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
type_computed
protected TypeDecl
type_value
protected Map
typeArguments_MethodDecl_values
-
Fields inherited from class soot.JastAddJ.Access
hasPrevExpr_computed, hasPrevExpr_value, prevExpr_computed, prevExpr_value
-
Fields inherited from class soot.JastAddJ.Expr
false_label_computed, false_label_value, true_label_computed, true_label_value
-
Fields inherited from class soot.JastAddJ.ASTNode
children, generatedWithCacheCycle, generatedWithCircularEnabled, generatedWithComponentCheck, in$Circle, is$Final, numChildren, parent, PRIMITIVE_PACKAGE_NAME, state
-
-
Constructor Summary
Constructors Constructor Description DiamondAccess()
DiamondAccess(Access p0)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
applicableByMethodInvocationConversion(ClassInstanceExpr expr, MethodDecl method)
protected boolean
applicableBySubtyping(ClassInstanceExpr expr, MethodDecl method)
protected boolean
applicableByVariableArity(ClassInstanceExpr expr, MethodDecl method)
protected SimpleSet
chooseConstructor()
Choose a constructor for the diamond operator using placeholder methods.DiamondAccess
clone()
Collection<TypeDecl>
computeConstraints(GenericMethodDecl decl)
Diamond type inference.DiamondAccess
copy()
void
flushCache()
void
flushCollectionCache()
DiamondAccess
fullCopy()
Create a deep copy of the AST subtree at this node.ClassInstanceExpr
getClassInstanceExpr()
Access
getTypeAccess()
Retrieves the TypeAccess child.Access
getTypeAccessNoTransform()
Retrieves the TypeAccess child.void
init$Children()
Initializes the child array to the correct size.boolean
isAnonymousDecl()
boolean
isDiamond()
boolean
isExplicitGenericConstructorAccess()
boolean
mayHaveRewrite()
protected static SimpleSet
mostSpecific(SimpleSet maxSpecific, MethodDecl decl)
protected int
numChildren()
protected boolean
potentiallyApplicable(GenericMethodDecl candidate)
protected Collection<MethodDecl>
potentiallyApplicable(List<PlaceholderMethodDecl> candidates)
Select potentially applicable method declarations from a set of candidates.ASTNode
rewriteTo()
void
setTypeAccess(Access node)
Replaces the TypeAccess child.void
toString(StringBuffer sb)
Pretty printing of diamond access.TypeDecl
type()
If this DiamondAccess node constitutes a legal use of the diamond operator, the inferred generic type for the enclosing class instance expression is returned.List<TypeDecl>
typeArguments(MethodDecl decl)
Type inference for placeholder methods.void
typeCheck()
Checks if this diamond access is legal.TypeDecl
typeObject()
-
Methods inherited from class soot.JastAddJ.Access
addArrayDims, addArraySize, emitLoadLocalInNestedClass, emitThis, hasPrevExpr, inExplicitConstructorInvocation, isQualified, lastAccess, nestedScope, predNameType, prevExpr, qualifier, substituted, superConstructorQualifier, unknownField, unknownType, unqualifiedScope, withinDeprecatedAnnotation, withinSuppressWarnings
-
Methods inherited from class soot.JastAddJ.Expr
addDependencyIfNeeded, applicableAndAccessible, assignConvertedType, canBeFalse, canBeTrue, chooseConstructor, collectTypesToHierarchy, condition_false_label, condition_true_label, constant, emitBooleanCondition, emitEvalBranch, emitStore, enclosingBodyDecl, enclosingStmt, eval, false_label, hasNextAccess, hasPackage, hasParentDot, hasQualifiedPackage, hostPackage, hostType, inExtendsOrImplements, inStaticContext, isArrayAccess, isClassAccess, isConstant, isDAafter, isDAafterFalse, isDAafterTrue, isDAbefore, isDest, isDUafter, isDUafterFalse, isDUafterTrue, isDUbefore, isEnumConstant, isFalse, isFieldAccess, isIncOrDec, isLeftChildOfDot, isMethodAccess, isPackageAccess, isPositive, isRightChildOfDot, isSource, isSuperAccess, isSuperConstructorAccess, isThisAccess, isTrue, isTypeAccess, isUnknown, isVariable, isVariable, keepAccessibleFields, keepAccessibleTypes, lookupMethod, lookupType, lookupType, lookupVariable, mayAccess, methodHost, modifiedInScope, mostSpecific, mostSpecificConstructor, nameType, nextAccess, packageName, parentDot, qualifiedLookupType, qualifiedLookupVariable, qualifiesAccess, refined_BooleanExpressions_Expr_emitEvalBranch, representableIn, staticContextQualifier, throwTypes, true_label, typeBoolean, typeByte, typeChar, typeDouble, typeFloat, typeInt, typeLong, typeName, typeNull, typeShort, typeString, typeVoid, varDecl
-
Methods inherited from class soot.JastAddJ.ASTNode
accessControl, addAttributes, addChild, addsIndentationLevel, asImmediate, asLocal, asLocal, asRValue, beginExceptionRange, branchTarget, checkDUeverywhere, checkEnum, checkUncheckedConversion, checkWarnings, clearLocations, cloneSubtree, collectBranches, collectEnclosingVariables, collectErrors, collectExceptions, collectFinally, collectTypesToSignatures, compilationUnit, Define_Annotation_lookupAnnotation, Define_ArrayList_exceptionRanges, Define_ASTNode_enclosingBlock, Define_BodyDecl_enclosingBodyDecl, Define_boolean_enclosedByExceptionHandler, Define_boolean_handlesException, Define_boolean_hasPackage, Define_boolean_inExplicitConstructorInvocation, Define_boolean_inExtendsOrImplements, Define_boolean_inhModifiedInScope, Define_boolean_insideLoop, Define_boolean_insideSwitch, Define_boolean_inStaticContext, Define_boolean_isAnonymous, Define_boolean_isAnonymousDecl, Define_boolean_isCatchParam, Define_boolean_isConstructorParameter, Define_boolean_isDAbefore, Define_boolean_isDest, Define_boolean_isDUbefore, Define_boolean_isExceptionHandlerParameter, Define_boolean_isExplicitGenericConstructorAccess, Define_boolean_isIncOrDec, Define_boolean_isLocalClass, Define_boolean_isMemberType, Define_boolean_isMethodParameter, Define_boolean_isNestedType, Define_boolean_isSource, Define_boolean_mayBeAbstract, Define_boolean_mayBeFinal, Define_boolean_mayBeNative, Define_boolean_mayBePrivate, Define_boolean_mayBeProtected, Define_boolean_mayBePublic, Define_boolean_mayBeStatic, Define_boolean_mayBeStrictfp, Define_boolean_mayBeSynchronized, Define_boolean_mayBeTransient, Define_boolean_mayBeVolatile, Define_boolean_mayUseAnnotationTarget, Define_boolean_reachable, Define_boolean_reachableCatchClause, Define_boolean_reportUnreachable, Define_boolean_resourcePreviouslyDeclared, Define_boolean_variableArityValid, Define_boolean_withinDeprecatedAnnotation, Define_boolean_withinSuppressWarnings, Define_Case_bind, Define_CatchClause_catchClause, Define_ClassInstanceExpr_getClassInstanceExpr, Define_Collection_lookupConstructor, Define_Collection_lookupMethod, Define_Collection_lookupSuperConstructor, Define_Collection_TypeDecl__caughtExceptions, Define_CompilationUnit_compilationUnit, Define_ConstructorDecl_constructorDecl, Define_ConstructorDecl_unknownConstructor, Define_ElementValue_lookupElementTypeValue, Define_Expr_nestedScope, Define_GLBType_lookupGLBType, Define_int_localNum, Define_LabeledStmt_lookupLabel, Define_LUBType_lookupLUBType, Define_MethodDecl_unknownMethod, Define_NameType_nameType, Define_SimpleSet_allImportedTypes, Define_SimpleSet_lookupType, Define_SimpleSet_lookupVariable, Define_soot_jimple_Stmt_condition_false_label, Define_soot_jimple_Stmt_condition_true_label, Define_String_hostPackage, Define_String_methodHost, Define_String_packageName, Define_String_typeDeclIndent, Define_TypeDecl_assignConvertedType, Define_TypeDecl_componentType, Define_TypeDecl_declType, Define_TypeDecl_enclosingAnnotationDecl, Define_TypeDecl_enclosingInstance, Define_TypeDecl_enclosingType, Define_TypeDecl_expectedType, Define_TypeDecl_genericDecl, Define_TypeDecl_hostType, Define_TypeDecl_lookupType, Define_TypeDecl_lookupWildcardExtends, Define_TypeDecl_lookupWildcardSuper, Define_TypeDecl_returnType, Define_TypeDecl_superType, Define_TypeDecl_switchType, Define_TypeDecl_typeBoolean, Define_TypeDecl_typeByte, Define_TypeDecl_typeChar, Define_TypeDecl_typeCloneable, Define_TypeDecl_typeDouble, Define_TypeDecl_typeError, Define_TypeDecl_typeException, Define_TypeDecl_typeFloat, Define_TypeDecl_typeInt, Define_TypeDecl_typeLong, Define_TypeDecl_typeNull, Define_TypeDecl_typeNullPointerException, Define_TypeDecl_typeObject, Define_TypeDecl_typeRuntimeException, Define_TypeDecl_typeSerializable, Define_TypeDecl_typeShort, Define_TypeDecl_typeString, Define_TypeDecl_typeThrowable, Define_TypeDecl_typeVoid, Define_TypeDecl_typeWildcard, Define_TypeDecl_unknownType, Define_Variable_unknownField, Define_VariableScope_outerScope, definesLabel, definiteAssignment, dumpString, dumpTree, dumpTree, dumpTreeNoRewrite, dumpTreeNoRewrite, duringAnnotations, duringAnonymousClasses, duringBoundNames, duringDU, duringEnums, duringGenericTypeVariables, duringImplicitConstructor, duringLiterals, duringNameResolution, duringSyntacticClassification, duringVariableDeclarationTransformation, emitConstant, end, endExceptionRange, error, errorPrefix, exceptionHandling, extractIndent, extractSingleType, flushCaches, getChild, getChildNoTransform, getIndexOfChild, getNumChild, getNumChildNoTransform, getParent, in$Circle, in$Circle, indent, insertChild, is$Final, is$Final, isDescendantTo, isStringAdd, iterator, jimplify1phase1, jimplify1phase2, jimplify2, jimplify2, lineNumber, location, nameCheck, newLabel, options, putSimpleSetElement, reachedException, removeChild, removeInstanceMethods, removeInstanceVariables, replace, setChild, setEnd, setLocation, setParent, setStart, sourceFile, start, state, toString, transformation, transformEnumConstructors, unassignedEverywhere, usesTypeVariable, varChildIndex, varChildIndex, warning, warningPrefix, with
-
Methods inherited from class beaver.Symbol
getColumn, getEnd, getId, getLine, getStart, makePosition
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
DiamondAccess
public DiamondAccess()
-
DiamondAccess
public DiamondAccess(Access p0)
-
-
Method Detail
-
flushCache
public void flushCache()
- Overrides:
flushCache
in classAccess
-
flushCollectionCache
public void flushCollectionCache()
- Overrides:
flushCollectionCache
in classAccess
-
clone
public DiamondAccess clone() throws CloneNotSupportedException
- Overrides:
clone
in classAccess
- Throws:
CloneNotSupportedException
-
copy
public DiamondAccess copy()
-
fullCopy
public DiamondAccess fullCopy()
Create a deep copy of the AST subtree at this node. The copy is dangling, i.e. has no parent.
-
mostSpecific
protected static SimpleSet mostSpecific(SimpleSet maxSpecific, MethodDecl decl)
-
chooseConstructor
protected SimpleSet chooseConstructor()
Choose a constructor for the diamond operator using placeholder methods.
-
potentiallyApplicable
protected Collection<MethodDecl> potentiallyApplicable(List<PlaceholderMethodDecl> candidates)
Select potentially applicable method declarations from a set of candidates. Type inference is applied to the (potentially) applicable candidates.
-
potentiallyApplicable
protected boolean potentiallyApplicable(GenericMethodDecl candidate)
- Returns:
- false if the candidate method is not applicable.
-
computeConstraints
public Collection<TypeDecl> computeConstraints(GenericMethodDecl decl)
Diamond type inference.
-
applicableBySubtyping
protected boolean applicableBySubtyping(ClassInstanceExpr expr, MethodDecl method)
- Returns:
- true if the method is applicable by subtyping
-
applicableByMethodInvocationConversion
protected boolean applicableByMethodInvocationConversion(ClassInstanceExpr expr, MethodDecl method)
- Returns:
- true if the method is applicable by method invocation conversion
-
applicableByVariableArity
protected boolean applicableByVariableArity(ClassInstanceExpr expr, MethodDecl method)
- Returns:
- true if the method is applicable by variable arity
-
typeCheck
public void typeCheck()
Checks if this diamond access is legal. The diamond access is not legal if it either is part of an inner class declaration, if it is used to access a non-generic type, or if it is part of a call to a generic constructor with explicit type arguments.
-
toString
public void toString(StringBuffer sb)
Pretty printing of diamond access.
-
init$Children
public void init$Children()
Initializes the child array to the correct size. Initializes List and Opt nta children.- Overrides:
init$Children
in classAccess
-
numChildren
protected int numChildren()
- Overrides:
numChildren
in classAccess
-
mayHaveRewrite
public boolean mayHaveRewrite()
- Overrides:
mayHaveRewrite
in classAccess
-
setTypeAccess
public void setTypeAccess(Access node)
Replaces the TypeAccess child.- Parameters:
node
- The new node to replace the TypeAccess child.
-
getTypeAccess
public Access getTypeAccess()
Retrieves the TypeAccess child.- Returns:
- The current node used as the TypeAccess child.
-
getTypeAccessNoTransform
public Access getTypeAccessNoTransform()
Retrieves the TypeAccess child.This method does not invoke AST transformations.
- Returns:
- The current node used as the TypeAccess child.
-
type
public TypeDecl type()
If this DiamondAccess node constitutes a legal use of the diamond operator, the inferred generic type for the enclosing class instance expression is returned.
-
typeArguments
public List<TypeDecl> typeArguments(MethodDecl decl)
Type inference for placeholder methods.
-
getClassInstanceExpr
public ClassInstanceExpr getClassInstanceExpr()
-
typeObject
public TypeDecl typeObject()
-
isAnonymousDecl
public boolean isAnonymousDecl()
- Returns:
- true if this access is part of an anonymous class declaration
-
isExplicitGenericConstructorAccess
public boolean isExplicitGenericConstructorAccess()
- Returns:
- true if the Access is part of a generic constructor invocation with explicit type arguments
-
-