operatorType = operatorFromCompoundAssignment(operatorType);
Expression leftHandSide = node.getLeftHandSide();
if (leftHandSide != null) {
String methodName = operatorType.getLexeme();
Type staticType = getStaticType(leftHandSide);
MethodElement staticMethod = lookUpMethod(leftHandSide, staticType, methodName);
node.setStaticElement(staticMethod);
Type propagatedType = getPropagatedType(leftHandSide);
MethodElement propagatedMethod = lookUpMethod(leftHandSide, propagatedType, methodName);
node.setPropagatedElement(propagatedMethod);
if (shouldReportMissingMember(staticType, staticMethod)) {
if (doesntHaveProxy(staticType.getElement())) {
resolver.reportErrorForToken(
StaticTypeWarningCode.UNDEFINED_METHOD,
operator,
methodName,
staticType.getDisplayName());
}
} else if (enableHints && shouldReportMissingMember(propagatedType, propagatedMethod)
&& !memberFoundInSubclass(propagatedType.getElement(), methodName, true, false)) {
if (doesntHaveProxy(propagatedType.getElement())) {
resolver.reportErrorForToken(
HintCode.UNDEFINED_METHOD,
operator,
methodName,
propagatedType.getDisplayName());
}
}
}
}
return null;