Bug 571865 - [16] No quick assist available to rename record component
accessor method in workspace

Change-Id: I4d95cfa34254ade4ac776d09720e81c77ef6a819
Signed-off-by: Kalyan Prasad Tatavarthi <kalyan_prasad@in.ibm.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
index 76df03f..6e548ed 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
@@ -3144,7 +3144,7 @@
 		}
 
 		IJavaElement javaElement= binding.getJavaElement();
-		if (javaElement == null || !RefactoringAvailabilityTester.isRenameElementAvailable(javaElement)) {
+		if (javaElement == null ? !isRecordComponentAccessorMethod(binding) : !RefactoringAvailabilityTester.isRenameElementAvailable(javaElement)) {
 			return false;
 		}
 
@@ -3164,6 +3164,27 @@
 		return true;
 	}
 
+	private static boolean isRecordComponentAccessorMethod(IBinding binding) {
+		boolean isAccessor = false;
+		if (binding instanceof IMethodBinding && ((IMethodBinding)binding).isSyntheticRecordMethod()) {
+			IMethodBinding mBinding= (IMethodBinding) binding;
+			ITypeBinding tBinding= mBinding.getDeclaringClass();
+			if (tBinding.isRecord() && mBinding.getParameterTypes().length == 0) {
+				IVariableBinding[] bindings= tBinding.getDeclaredFields();
+				if (bindings != null && bindings.length > 0) {
+					for (IVariableBinding varBinding : bindings) {
+						int modifiers= varBinding.getModifiers();
+						if (!Flags.isStatic(modifiers) && varBinding.getName().equals(mBinding.getName())) {
+							isAccessor= true;
+							break;
+						}
+					}
+				}
+			}
+		}
+		return isAccessor;
+	}
+
 	private static boolean containsQuickFixableRenameLocal(IProblemLocation[] locations) {
 		if (locations != null) {
 			for (IProblemLocation location : locations) {