Lines 20-27
Link Here
|
20 |
|
20 |
|
21 |
import org.eclipse.jdt.core.Flags; |
21 |
import org.eclipse.jdt.core.Flags; |
22 |
import org.eclipse.jdt.core.IJavaElement; |
22 |
import org.eclipse.jdt.core.IJavaElement; |
|
|
23 |
import org.eclipse.jdt.core.IJavaProject; |
23 |
import org.eclipse.jdt.core.IMethod; |
24 |
import org.eclipse.jdt.core.IMethod; |
24 |
import org.eclipse.jdt.core.IType; |
25 |
import org.eclipse.jdt.core.IType; |
|
|
26 |
import org.eclipse.jdt.core.JavaCore; |
25 |
import org.eclipse.jdt.core.JavaModelException; |
27 |
import org.eclipse.jdt.core.JavaModelException; |
26 |
import org.eclipse.jdt.core.dom.IAnnotationBinding; |
28 |
import org.eclipse.jdt.core.dom.IAnnotationBinding; |
27 |
import org.eclipse.jdt.core.dom.IBinding; |
29 |
import org.eclipse.jdt.core.dom.IBinding; |
Lines 101-107
Link Here
|
101 |
case IBinding.ANNOTATION: |
103 |
case IBinding.ANNOTATION: |
102 |
case IBinding.MEMBER_VALUE_PAIR: |
104 |
case IBinding.MEMBER_VALUE_PAIR: |
103 |
// not used for hovers |
105 |
// not used for hovers |
104 |
} |
106 |
} |
105 |
} |
107 |
} |
106 |
|
108 |
|
107 |
private void appendMethodBindingLabel(IMethodBinding method, long flags) { |
109 |
private void appendMethodBindingLabel(IMethodBinding method, long flags) { |
Lines 140-145
Link Here
|
140 |
|
142 |
|
141 |
// return type |
143 |
// return type |
142 |
if (getFlag(flags, JavaElementLabels.M_PRE_RETURNTYPE) && !method.isConstructor() && !isInitializer) { |
144 |
if (getFlag(flags, JavaElementLabels.M_PRE_RETURNTYPE) && !method.isConstructor() && !isInitializer) { |
|
|
145 |
if (getFlag(flags, JavaElementLabels.M_PARAMETER_ANNOTATIONS)) { // for consistency |
146 |
appendMethodDeclarationNullAnnotation(method.getAnnotations(), flags); |
147 |
} |
143 |
appendTypeBindingLabel(method.getReturnType(), flags); |
148 |
appendTypeBindingLabel(method.getReturnType(), flags); |
144 |
fBuffer.append(' '); |
149 |
fBuffer.append(' '); |
145 |
} |
150 |
} |
Lines 297-302
Link Here
|
297 |
} |
302 |
} |
298 |
} |
303 |
} |
299 |
|
304 |
|
|
|
305 |
private void appendMethodDeclarationNullAnnotation(IAnnotationBinding[] annotations, long flags) { |
306 |
IJavaProject javaProject= fEnclosingElement.getJavaProject(); |
307 |
if (javaProject != null && JavaCore.ENABLED.equals(javaProject.getOption(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, true))) { |
308 |
String nonNullName= javaProject.getOption(JavaCore.COMPILER_NONNULL_ANNOTATION_NAME, true); |
309 |
String nullableName= javaProject.getOption(JavaCore.COMPILER_NULLABLE_ANNOTATION_NAME, true); |
310 |
for (IAnnotationBinding annotation : annotations) { |
311 |
ITypeBinding annotationType= annotation.getAnnotationType(); |
312 |
if (annotationType != null) { |
313 |
String annotationName= annotationType.getQualifiedName(); |
314 |
if (annotationName.equals(nonNullName) || annotationName.equals(nullableName)) { |
315 |
appendAnnotationLabel(annotation, flags); |
316 |
fBuffer.append(' '); |
317 |
return; |
318 |
} |
319 |
} |
320 |
} |
321 |
} |
322 |
} |
323 |
|
300 |
private void appendVariableLabel(IVariableBinding variable, long flags) { |
324 |
private void appendVariableLabel(IVariableBinding variable, long flags) { |
301 |
long qualificationFlags = flags & (QUALIFIER_FLAGS | JavaElementLabels.ALL_FULLY_QUALIFIED | JavaElementLabels.T_CONTAINER_QUALIFIED); |
325 |
long qualificationFlags = flags & (QUALIFIER_FLAGS | JavaElementLabels.ALL_FULLY_QUALIFIED | JavaElementLabels.T_CONTAINER_QUALIFIED); |
302 |
if (fIsFromSource) { |
326 |
if (fIsFromSource) { |
Lines 391-397
Link Here
|
391 |
if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED)) |
415 |
if (getFlag(flags, JavaElementLabels.T_FULLY_QUALIFIED)) |
392 |
qualificationFlags |= JavaElementLabels.ALL_FULLY_QUALIFIED; |
416 |
qualificationFlags |= JavaElementLabels.ALL_FULLY_QUALIFIED; |
393 |
else if (getFlag(flags, JavaElementLabels.T_CONTAINER_QUALIFIED)) |
417 |
else if (getFlag(flags, JavaElementLabels.T_CONTAINER_QUALIFIED)) |
394 |
qualificationFlags |= (JavaElementLabels.F_FULLY_QUALIFIED | JavaElementLabels.M_FULLY_QUALIFIED); |
418 |
qualificationFlags |= (JavaElementLabels.F_FULLY_QUALIFIED | JavaElementLabels.M_FULLY_QUALIFIED); |
395 |
appendBindingLabel(declaringMember, qualificationFlags); |
419 |
appendBindingLabel(declaringMember, qualificationFlags); |
396 |
fBuffer.append('.'); |
420 |
fBuffer.append('.'); |
397 |
flags &= ~(JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.M_FULLY_QUALIFIED | JavaElementLabels.T_CONTAINER_QUALIFIED); // qualification is done |
421 |
flags &= ~(JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.M_FULLY_QUALIFIED | JavaElementLabels.T_CONTAINER_QUALIFIED); // qualification is done |
Lines 550-556
Link Here
|
550 |
appendTypeBindingLabel((ITypeBinding) value, flags); |
574 |
appendTypeBindingLabel((ITypeBinding) value, flags); |
551 |
fBuffer.append(".class"); //$NON-NLS-1$ |
575 |
fBuffer.append(".class"); //$NON-NLS-1$ |
552 |
} else if (value instanceof String) { |
576 |
} else if (value instanceof String) { |
553 |
fBuffer.append(htmlEscape(ASTNodes.getEscapedStringLiteral((String) value))); |
577 |
fBuffer.append(htmlEscape(ASTNodes.getEscapedStringLiteral((String) value))); |
554 |
} else if (value instanceof IVariableBinding) { |
578 |
} else if (value instanceof IVariableBinding) { |
555 |
appendVariableLabel((IVariableBinding) value, flags); |
579 |
appendVariableLabel((IVariableBinding) value, flags); |
556 |
} else if (value instanceof IAnnotationBinding) { |
580 |
} else if (value instanceof IAnnotationBinding) { |