private void updateAnnotationValue(Object object) { // @see org.eclipse.jdt.internal.compiler.env.IBinaryElementValuePair.getValue() // @see org.eclipse.jdt.internal.compiler.classfmt.AnnotationInfo.decodeDefaultValue() if (object instanceof ClassSignature) { updateChars(((ClassSignature) object).getTypeName()); } else if (object instanceof Constant) { updateConstant((Constant) object); } else if (object instanceof EnumConstantSignature) { updateChars(((EnumConstantSignature) object).getTypeName()); updateChars(((EnumConstantSignature) object).getEnumConstantName()); } else if (object instanceof IBinaryAnnotation) { updateAnnotation((IBinaryAnnotation) object); } else { throw new IllegalArgumentException("Unsupported annotation value " + object.toString()); } }
private static Object unpackValue(NdConstant value) { if (value == null) { return null; } if (value instanceof NdConstantAnnotation) { NdConstantAnnotation annotation = (NdConstantAnnotation) value; return createBinaryAnnotation(annotation.getValue()); } if (value instanceof NdConstantArray) { NdConstantArray array = (NdConstantArray) value; List<NdConstant> arrayContents = array.getValue(); Object[] result = new Object[arrayContents.size()]; for (int idx = 0; idx < arrayContents.size(); idx++) { result[idx] = unpackValue(arrayContents.get(idx)); } return result; } if (value instanceof NdConstantEnum) { NdConstantEnum ndConstantEnum = (NdConstantEnum) value; NdTypeSignature signature = ndConstantEnum.getType(); return new EnumConstantSignature(signature.getRawType().getBinaryName(), ndConstantEnum.getValue()); } if (value instanceof NdConstantClass) { NdConstantClass constant = (NdConstantClass) value; return new ClassSignature(constant.getValue().getRawType().getBinaryName()); } return value.getConstant(); }
private static int evaluateElementTypeNullnessLocation(Object value) { char[] name = null; if (value instanceof FieldBinding) { name = ((FieldBinding) value).name; } else if (value instanceof EnumConstantSignature) { name = ((EnumConstantSignature) value).getEnumConstantName(); } else if (value instanceof ElementValuePair.UnresolvedEnumConstant) { name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName(); } if (name != null) { switch (name.length) { case 5: if (CharOperation.equals(name, TypeConstants.UPPER_FIELD)) return Binding.DefaultLocationField; break; case 6: if (CharOperation.equals(name, TypeConstants.UPPER_METHOD)) return Binding.DefaultLocationReturnType; break; case 9: if (CharOperation.equals(name, TypeConstants.UPPER_PARAMETER)) return Binding.DefaultLocationParameter; break; } } return 0; }
private static Object unpackValue(NdConstant value) { if (value == null) { return null; } if (value instanceof NdConstantAnnotation) { NdConstantAnnotation annotation = (NdConstantAnnotation) value; return createBinaryAnnotation(annotation.getValue()); } if (value instanceof NdConstantArray) { NdConstantArray array = (NdConstantArray) value; List<NdConstant> arrayContents = array.getValue(); Object[] result = new Object[arrayContents.size()]; for (int idx = 0; idx < arrayContents.size(); idx++) { result[idx] = unpackValue(arrayContents.get(idx)); } return result; } if (value instanceof NdConstantEnum) { NdConstantEnum ndConstantEnum = (NdConstantEnum) value; NdTypeSignature signature = ndConstantEnum.getType(); return new EnumConstantSignature(signature.getRawType().getBinaryName(), ndConstantEnum.getValue()); } if (value instanceof NdConstantClass) { NdConstantClass constant = (NdConstantClass) value; return new ClassSignature(constant.getValue().getRawType().getBinaryName()); } return value.getConstant(); }
name = ((FieldBinding) value).name; } else if (value instanceof EnumConstantSignature) { name = ((EnumConstantSignature) value).getEnumConstantName(); } else if (value instanceof ElementValuePair.UnresolvedEnumConstant) { name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();
private void updateAnnotationValue(Object object) { // @see org.eclipse.jdt.internal.compiler.env.IBinaryElementValuePair.getValue() // @see org.eclipse.jdt.internal.compiler.classfmt.AnnotationInfo.decodeDefaultValue() if (object instanceof ClassSignature) { updateChars(((ClassSignature) object).getTypeName()); } else if (object instanceof Constant) { updateConstant((Constant) object); } else if (object instanceof EnumConstantSignature) { updateChars(((EnumConstantSignature) object).getTypeName()); updateChars(((EnumConstantSignature) object).getEnumConstantName()); } else if (object instanceof IBinaryAnnotation) { updateAnnotation((IBinaryAnnotation) object); } else { throw new IllegalArgumentException("Unsupported annotation value " + object.toString()); } }
char[] constName = utf8At(constValueOffset + 3, u2At(constValueOffset + 1)); this.readOffset += 2; value = new EnumConstantSignature(typeName, constName); break; case 'c':
name = ((FieldBinding) value).name; } else if (value instanceof EnumConstantSignature) { name = ((EnumConstantSignature) value).getEnumConstantName(); } else if (value instanceof ElementValuePair.UnresolvedEnumConstant) { name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();
static Object convertMemberValue(Object binaryValue, LookupEnvironment env, char[][][] missingTypeNames, boolean resolveEnumConstants) { if (binaryValue == null) return null; if (binaryValue instanceof Constant) return binaryValue; if (binaryValue instanceof ClassSignature) return env.getTypeFromSignature(((ClassSignature) binaryValue).getTypeName(), 0, -1, false, null, missingTypeNames, TypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (binaryValue instanceof IBinaryAnnotation) return createAnnotation((IBinaryAnnotation) binaryValue, env, missingTypeNames); if (binaryValue instanceof EnumConstantSignature) { EnumConstantSignature ref = (EnumConstantSignature) binaryValue; ReferenceBinding enumType = (ReferenceBinding) env.getTypeFromSignature(ref.getTypeName(), 0, -1, false, null, missingTypeNames, TypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (enumType.isUnresolvedType() && !resolveEnumConstants) return new ElementValuePair.UnresolvedEnumConstant(enumType, env, ref.getEnumConstantName()); enumType = (ReferenceBinding) resolveType(enumType, env, false /* no raw conversion */); return enumType.getField(ref.getEnumConstantName(), false); } if (binaryValue instanceof Object[]) { Object[] objects = (Object[]) binaryValue; int length = objects.length; if (length == 0) return objects; Object[] values = new Object[length]; for (int i = 0; i < length; i++) values[i] = convertMemberValue(objects[i], env, missingTypeNames, resolveEnumConstants); return values; } // should never reach here. throw new IllegalStateException(); }
char[] constName = utf8At(constValueOffset + 3, u2At(constValueOffset + 1)); this.readOffset += 2; value = new EnumConstantSignature(typeName, constName); break; case 'c':
name = ((FieldBinding) value).name; } else if (value instanceof EnumConstantSignature) { name = ((EnumConstantSignature) value).getEnumConstantName(); } else if (value instanceof ElementValuePair.UnresolvedEnumConstant) { name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();
static Object convertMemberValue(Object binaryValue, LookupEnvironment env, char[][][] missingTypeNames, boolean resolveEnumConstants) { if (binaryValue == null) return null; if (binaryValue instanceof Constant) return binaryValue; if (binaryValue instanceof ClassSignature) return env.getTypeFromSignature(((ClassSignature) binaryValue).getTypeName(), 0, -1, false, null, missingTypeNames, ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (binaryValue instanceof IBinaryAnnotation) return createAnnotation((IBinaryAnnotation) binaryValue, env, missingTypeNames); if (binaryValue instanceof EnumConstantSignature) { EnumConstantSignature ref = (EnumConstantSignature) binaryValue; ReferenceBinding enumType = (ReferenceBinding) env.getTypeFromSignature(ref.getTypeName(), 0, -1, false, null, missingTypeNames, ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (enumType.isUnresolvedType() && !resolveEnumConstants) return new ElementValuePair.UnresolvedEnumConstant(enumType, env, ref.getEnumConstantName()); enumType = (ReferenceBinding) resolveType(enumType, env, false /* no raw conversion */); return enumType.getField(ref.getEnumConstantName(), false); } if (binaryValue instanceof Object[]) { Object[] objects = (Object[]) binaryValue; int length = objects.length; if (length == 0) return objects; Object[] values = new Object[length]; for (int i = 0; i < length; i++) values[i] = convertMemberValue(objects[i], env, missingTypeNames, resolveEnumConstants); return values; } // should never reach here. throw new IllegalStateException(); }
char[] constName = utf8At(constValueOffset + 3, u2At(constValueOffset + 1)); this.readOffset += 2; value = new EnumConstantSignature(typeName, constName); break; case 'c':
name = ((FieldBinding) value).name; } else if (value instanceof EnumConstantSignature) { name = ((EnumConstantSignature) value).getEnumConstantName(); } else if (value instanceof ElementValuePair.UnresolvedEnumConstant) { name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();
static Object convertMemberValue(Object binaryValue, LookupEnvironment env, char[][][] missingTypeNames, boolean resolveEnumConstants) { if (binaryValue == null) return null; if (binaryValue instanceof Constant) return binaryValue; if (binaryValue instanceof ClassSignature) return env.getTypeFromSignature(((ClassSignature) binaryValue).getTypeName(), 0, -1, false, null, missingTypeNames, ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (binaryValue instanceof IBinaryAnnotation) return createAnnotation((IBinaryAnnotation) binaryValue, env, missingTypeNames); if (binaryValue instanceof EnumConstantSignature) { EnumConstantSignature ref = (EnumConstantSignature) binaryValue; ReferenceBinding enumType = (ReferenceBinding) env.getTypeFromSignature(ref.getTypeName(), 0, -1, false, null, missingTypeNames, ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (enumType.isUnresolvedType() && !resolveEnumConstants) return new ElementValuePair.UnresolvedEnumConstant(enumType, env, ref.getEnumConstantName()); enumType = (ReferenceBinding) resolveType(enumType, env, false /* no raw conversion */); return enumType.getField(ref.getEnumConstantName(), false); } if (binaryValue instanceof Object[]) { Object[] objects = (Object[]) binaryValue; int length = objects.length; if (length == 0) return objects; Object[] values = new Object[length]; for (int i = 0; i < length; i++) values[i] = convertMemberValue(objects[i], env, missingTypeNames, resolveEnumConstants); return values; } // should never reach here. throw new IllegalStateException(); }
char[] constName = utf8At(constValueOffset + 3, u2At(constValueOffset + 1)); this.readOffset += 2; value = new EnumConstantSignature(typeName, constName); break; case 'c':
name = ((FieldBinding) value).name; } else if (value instanceof EnumConstantSignature) { name = ((EnumConstantSignature) value).getEnumConstantName(); } else if (value instanceof ElementValuePair.UnresolvedEnumConstant) { name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();
static Object convertMemberValue(Object binaryValue, LookupEnvironment env, char[][][] missingTypeNames, boolean resolveEnumConstants) { if (binaryValue == null) return null; if (binaryValue instanceof Constant) return binaryValue; if (binaryValue instanceof ClassSignature) return env.getTypeFromSignature(((ClassSignature) binaryValue).getTypeName(), 0, -1, false, null, missingTypeNames, ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (binaryValue instanceof IBinaryAnnotation) return createAnnotation((IBinaryAnnotation) binaryValue, env, missingTypeNames); if (binaryValue instanceof EnumConstantSignature) { EnumConstantSignature ref = (EnumConstantSignature) binaryValue; ReferenceBinding enumType = (ReferenceBinding) env.getTypeFromSignature(ref.getTypeName(), 0, -1, false, null, missingTypeNames, ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER); if (enumType.isUnresolvedType() && !resolveEnumConstants) return new ElementValuePair.UnresolvedEnumConstant(enumType, env, ref.getEnumConstantName()); enumType = (ReferenceBinding) resolveType(enumType, env, false /* no raw conversion */); return enumType.getField(ref.getEnumConstantName(), false); } if (binaryValue instanceof Object[]) { Object[] objects = (Object[]) binaryValue; int length = objects.length; if (length == 0) return objects; Object[] values = new Object[length]; for (int i = 0; i < length; i++) values[i] = convertMemberValue(objects[i], env, missingTypeNames, resolveEnumConstants); return values; } // should never reach here. throw new IllegalStateException(); }
char[] constName = utf8At(constValueOffset + 3, u2At(constValueOffset + 1)); this.readOffset += 2; value = new EnumConstantSignature(typeName, constName); break; case 'c':
name = ((FieldBinding) value).name; } else if (value instanceof EnumConstantSignature) { name = ((EnumConstantSignature) value).getEnumConstantName(); } else if (value instanceof ElementValuePair.UnresolvedEnumConstant) { name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();