Bug 579612 - Regression: Fix for 578788 causes regression in NLS hover
- fix NLSStringHover.internalGetHoverInfo() logic to determine super
class name of String field so it is fully qualified
Change-Id: I83e5bc17919e613c04890d1caf6d2f4035bd78b0
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.ui/+/192549
Tested-by: JDT Bot <jdt-bot@eclipse.org>
Tested-by: Jeff Johnston <jjohnstn@redhat.com>
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
index 0740ccf..1e03e61 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
@@ -40,8 +40,6 @@
import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.jdt.core.IField;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.ITypeRoot;
import org.eclipse.jdt.core.JavaModelException;
@@ -49,6 +47,8 @@
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.dom.IVariableBinding;
import org.eclipse.jdt.core.dom.NodeFinder;
import org.eclipse.jdt.core.dom.QualifiedName;
import org.eclipse.jdt.core.dom.SimpleName;
@@ -171,22 +171,20 @@
identifier= ((StringLiteral)node).getLiteralValue();
} else if (!usedFullyQualifiedName && node.getLocationInParent() == QualifiedName.NAME_PROPERTY) {
identifier= ((SimpleName)node).getIdentifier();
- try {
- IBinding nodeBinding= ((SimpleName)node).resolveBinding();
- if (nodeBinding != null) {
- IJavaElement nodeElement= nodeBinding.getJavaElement();
- if (nodeElement instanceof IMember) {
- IType nodeDeclaringType= ((IMember)nodeElement).getDeclaringType();
- if (nodeDeclaringType != null) {
- String nodeParentTypeName= nodeDeclaringType.getSuperclassName();
- if (!"org.eclipse.osgi.util.NLS".equals(nodeParentTypeName)) { //$NON-NLS-1$
+ IBinding nodeBinding= ((SimpleName)node).resolveBinding();
+ if (nodeBinding != null) {
+ if (nodeBinding instanceof IVariableBinding && ((IVariableBinding)nodeBinding).isField()) {
+ ITypeBinding nodeDeclaringType= ((IVariableBinding)nodeBinding).getDeclaringClass();
+ if (nodeDeclaringType != null) {
+ ITypeBinding superClass= nodeDeclaringType.getSuperclass();
+ if (superClass != null) {
+ String superClassName= superClass.getQualifiedName();
+ if (!"org.eclipse.osgi.util.NLS".equals(superClassName)) { //$NON-NLS-1$
identifier= null;
}
}
}
}
- } catch (JavaModelException e1) {
- // ignore
}
}
if (identifier == null) {