void manageLocal(IVariableBinding local) { if (fLocals == null) { fLocals= new IVariableBinding[fLength]; } fLocals[local.getVariableId() - fStart]= local; }
void manageLocal(IVariableBinding local) { if (fLocals == null) fLocals= new IVariableBinding[fLength]; fLocals[local.getVariableId() - fStart]= local; }
void manageLocal(IVariableBinding local) { if (fLocals == null) fLocals= new IVariableBinding[fLength]; fLocals[local.getVariableId() - fStart]= local; }
void manageLocal(IVariableBinding local) { if (fLocals == null) fLocals= new IVariableBinding[fLength]; fLocals[local.getVariableId() - fStart]= local; }
private void handleVariableBinding(IVariableBinding binding) { if (binding == null) { return; } fTopIndex = Math.max(fTopIndex, binding.getVariableId()); } }
private void handleVariableBinding(IVariableBinding binding) { if (binding == null) return; fTopIndex= Math.max(fTopIndex, binding.getVariableId()); } }
private void handleVariableBinding(IVariableBinding binding) { if (binding == null) return; fTopIndex= Math.max(fTopIndex, binding.getVariableId()); } }
private void handleVariableBinding(IVariableBinding binding) { if (binding == null) return; fTopIndex= Math.max(fTopIndex, binding.getVariableId()); } }
protected void clearAccessMode(IVariableBinding binding, FlowContext context) { if (fAccessModes == null) // all are unused return; fAccessModes[binding.getVariableId() - context.getStartingIndex()]= UNUSED; }
protected void clearAccessMode(IVariableBinding binding, FlowContext context) { if (fAccessModes == null) { return; } fAccessModes[binding.getVariableId() - context.getStartingIndex()] = UNUSED; }
protected void clearAccessMode(IVariableBinding binding, FlowContext context) { if (fAccessModes == null) // all are unused return; fAccessModes[binding.getVariableId() - context.getStartingIndex()]= UNUSED; }
protected void clearAccessMode(IVariableBinding binding, FlowContext context) { if (fAccessModes == null) // all are unused return; fAccessModes[binding.getVariableId() - context.getStartingIndex()]= UNUSED; }
private void doEnumHiddenEntities(ITypeBinding typeBinding, List<CAstEntity> memberEntities, WalkContext context) { // PART I: create a $VALUES field // collect constants // ArrayList<String> constants = new ArrayList<String>(); // for ( ASTNode n: staticInits ) // if ( n instanceof EnumConstantDeclaration ) // constants.add(((EnumConstantDeclaration)n).getName().getIdentifier()); // figure out a suitable untaken name // String hiddenFieldName = "hidden values field"; // illegal name // // public static final MyEnum[] $VALUES; // memberEntities.add(new FieldEntity(hiddenFieldName, // typeBinding.createArrayType(1), enumQuals, // makePosition(-1,-1))); // // EnumConstantDeclaration fakeValuesDecl = ast.newEnumConstantDeclaration(); // // pass along values that we will use in createEnumConstantDeclarationInit() in creating static initializer // fakeValuesDecl.setProperty("com.ibm.wala.cast.java.translator.jdt.fakeValuesDeclName", hiddenFieldName); // fakeValuesDecl.setProperty("com.ibm.wala.cast.java.translator.jdt.fakeValuesDeclConstants", constants); // staticInits.add(fakeValuesDecl); ArrayList<IVariableBinding> constants = new ArrayList<>(); for (IVariableBinding var : typeBinding.getDeclaredFields()) if (var.isEnumConstant()) constants.add(var); // constants are unsorted by default Collections.sort(constants, (arg0, arg1) -> arg0.getVariableId() - arg1.getVariableId()); // PART II: create values() memberEntities.add(createEnumValuesMethod(typeBinding, constants, context)); // PART III: create valueOf() memberEntities.add(createEnumValueOfMethod(typeBinding, context)); }
public LocalFlowInfo(IVariableBinding binding, int localAccessMode, FlowContext context) { super(NO_RETURN); fVariableId = binding.getVariableId(); if (context.considerAccessMode()) { createAccessModeArray(context); fAccessModes[fVariableId - context.getStartingIndex()] = localAccessMode; context.manageLocal(binding); } }
public LocalFlowInfo(IVariableBinding binding, int localAccessMode, FlowContext context) { super(NO_RETURN); fVariableId= binding.getVariableId(); if (context.considerAccessMode()) { createAccessModeArray(context); fAccessModes[fVariableId - context.getStartingIndex()]= localAccessMode; context.manageLocal(binding); } }
public LocalFlowInfo(IVariableBinding binding, int localAccessMode, FlowContext context) { super(NO_RETURN); fVariableId= binding.getVariableId(); if (context.considerAccessMode()) { createAccessModeArray(context); fAccessModes[fVariableId - context.getStartingIndex()]= localAccessMode; context.manageLocal(binding); } }
public LocalFlowInfo(IVariableBinding binding, int localAccessMode, FlowContext context) { super(NO_RETURN); fVariableId= binding.getVariableId(); if (context.considerAccessMode()) { createAccessModeArray(context); fAccessModes[fVariableId - context.getStartingIndex()]= localAccessMode; context.manageLocal(binding); } }
/** * Called only from visitFieldInitNode(node,context) */ private CAstNode createEnumConstantDeclarationInit(EnumConstantDeclaration node, WalkContext context) { String hiddenVariableName = (String) node.getProperty("com.ibm.wala.cast.java.translator.jdt.fakeValuesDeclName"); if (hiddenVariableName == null) { FieldReference fieldRef = fIdentityMapper.getFieldRef(node.resolveVariable()); // We use null to indicate an OBJECT_REF to a static field CAstNode lhsNode = makeNode(context, fFactory, node, CAstNode.OBJECT_REF, makeNode(context, fFactory, null, CAstNode.VOID), fFactory.makeConstant(fieldRef)); // CONSTRUCT ARGUMENTS & "new MyEnum(...)" statement ArrayList<Object> arguments = new ArrayList<>(); arguments.add(fFactory.makeConstant(node.getName().getIdentifier())); // name of constant arguments.add(fFactory.makeConstant(node.resolveVariable().getVariableId())); // id arguments.addAll(node.arguments()); CAstNode rhsNode = createClassInstanceCreation(node, arguments, node.resolveConstructorBinding(), null, node .getAnonymousClassDeclaration(), context); CAstNode assNode = makeNode(context, fFactory, node, CAstNode.ASSIGN, lhsNode, rhsNode); return assNode; // their naming, not mine } else { // String[] x = (new Direction[] { // NORTH, EAST, SOUTH, WEST, $VALUES, $VALUES$ // }); return null; } }