}
private FieldBinding checkAndResolveFieldRef(SourceInfo errorInfo, ReferenceBinding clazz,
JsniRef jsniRef, boolean hasQualifier, boolean isLvalue) {
assert jsniRef.isField();
FieldBinding target = getField(clazz, jsniRef);
if (target == null) {
emitError(ERR_UNABLE_TO_RESOLVE_FIELD, errorInfo, jsniRef);
return null;
}
resolveJsniRef(jsniRef, target);
if (target.isDeprecated() &&
!isEnclosingClass(method.binding.declaringClass, target.declaringClass)) {
emitWarning("deprecation", WARN_DEPRECATED_FIELD, errorInfo, jsniRef);
}
if (isLvalue && target.constant() != Constant.NotAConstant) {
emitError(ERR_ILLEGAL_ASSIGNMENT_TO_COMPILE_TIME_CONSTANT, errorInfo, jsniRef);
}
if (target.isStatic() && hasQualifier) {
emitError(ERR_UNNECESSARY_QUALIFIER_STATIC_FIELD, errorInfo, jsniRef);
} else if (!target.isStatic() && !hasQualifier) {
emitError(ERR_MISSING_QUALIFIER_INSTANCE_FIELD, errorInfo, jsniRef);
}
if (hasUnsafeLongsAnnotation) {
return target;