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 booleantype_computedprotected TypeDecltype_valueprotected MaptypeArguments_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 booleanapplicableByMethodInvocationConversion(ClassInstanceExpr expr, MethodDecl method)protected booleanapplicableBySubtyping(ClassInstanceExpr expr, MethodDecl method)protected booleanapplicableByVariableArity(ClassInstanceExpr expr, MethodDecl method)protected SimpleSetchooseConstructor()Choose a constructor for the diamond operator using placeholder methods.DiamondAccessclone()Collection<TypeDecl>computeConstraints(GenericMethodDecl decl)Diamond type inference.DiamondAccesscopy()voidflushCache()voidflushCollectionCache()DiamondAccessfullCopy()Create a deep copy of the AST subtree at this node.ClassInstanceExprgetClassInstanceExpr()AccessgetTypeAccess()Retrieves the TypeAccess child.AccessgetTypeAccessNoTransform()Retrieves the TypeAccess child.voidinit$Children()Initializes the child array to the correct size.booleanisAnonymousDecl()booleanisDiamond()booleanisExplicitGenericConstructorAccess()booleanmayHaveRewrite()protected static SimpleSetmostSpecific(SimpleSet maxSpecific, MethodDecl decl)protected intnumChildren()protected booleanpotentiallyApplicable(GenericMethodDecl candidate)protected Collection<MethodDecl>potentiallyApplicable(List<PlaceholderMethodDecl> candidates)Select potentially applicable method declarations from a set of candidates.ASTNoderewriteTo()voidsetTypeAccess(Access node)Replaces the TypeAccess child.voidtoString(StringBuffer sb)Pretty printing of diamond access.TypeDecltype()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.voidtypeCheck()Checks if this diamond access is legal.TypeDecltypeObject()-
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:
flushCachein classAccess
-
flushCollectionCache
public void flushCollectionCache()
- Overrides:
flushCollectionCachein classAccess
-
clone
public DiamondAccess clone() throws CloneNotSupportedException
- Overrides:
clonein 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$Childrenin classAccess
-
numChildren
protected int numChildren()
- Overrides:
numChildrenin classAccess
-
mayHaveRewrite
public boolean mayHaveRewrite()
- Overrides:
mayHaveRewritein 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
-
-