Redeclarations now report the redeclared name

This commit is contained in:
Andrey Breslav
2011-10-28 23:11:14 +04:00
parent d0b0d5f265
commit 473779befa
4 changed files with 7 additions and 7 deletions
@@ -15,8 +15,8 @@ import static org.jetbrains.jet.lang.diagnostics.Severity.ERROR;
public interface RedeclarationDiagnostic extends DiagnosticWithPsiElement<PsiElement> {
public class SimpleRedeclarationDiagnostic extends DiagnosticWithPsiElementImpl<PsiElement> implements RedeclarationDiagnostic {
public SimpleRedeclarationDiagnostic(@NotNull PsiElement psiElement) {
super(RedeclarationDiagnosticFactory.INSTANCE, ERROR, "Redeclaration", psiElement);
public SimpleRedeclarationDiagnostic(@NotNull PsiElement psiElement, @NotNull String name) {
super(RedeclarationDiagnosticFactory.INSTANCE, ERROR, "Redeclaration: " + name, psiElement);
}
}
@@ -66,7 +66,7 @@ public interface RedeclarationDiagnostic extends DiagnosticWithPsiElement<PsiEle
@NotNull
@Override
public String getMessage() {
return "Redeclaration";
return "Redeclaration: " + duplicatingDescriptor.getName();
}
@NotNull
@@ -16,8 +16,8 @@ public class RedeclarationDiagnosticFactory extends AbstractDiagnosticFactory {
public RedeclarationDiagnosticFactory() {}
public RedeclarationDiagnostic on(@NotNull PsiElement duplicatingElement) {
return new RedeclarationDiagnostic.SimpleRedeclarationDiagnostic(duplicatingElement);
public RedeclarationDiagnostic on(@NotNull PsiElement duplicatingElement, @NotNull String name) {
return new RedeclarationDiagnostic.SimpleRedeclarationDiagnostic(duplicatingElement, name);
}
public Diagnostic on(DeclarationDescriptor duplicatingDescriptor, BindingContext contextToResolveToDeclaration) {
@@ -26,7 +26,7 @@ public class TraceBasedRedeclarationHandler implements RedeclarationHandler {
private void report(DeclarationDescriptor first) {
PsiElement firstElement = trace.get(BindingContext.DESCRIPTOR_TO_DECLARATION, first);
if (firstElement != null) {
trace.report(REDECLARATION.on(firstElement));
trace.report(REDECLARATION.on(firstElement, first.getName()));
}
else {
trace.report(REDECLARATION.on(first, trace.getBindingContext()));
@@ -60,7 +60,7 @@ public class JetPsiChecker implements Annotator {
Collection<Diagnostic> diagnostics = Sets.newLinkedHashSet(bindingContext.getDiagnostics());
Set<PsiElement> redeclarations = Sets.newHashSet();
for (Diagnostic diagnostic : diagnostics) {
if (diagnostic.getFactory().getPsiFile(diagnostic) != file) continue;
if (diagnostic.getFactory().getPsiFile(diagnostic) != file) continue; // This is needed because we have the same context for all files
Annotation annotation = null;
if (diagnostic.getSeverity() == Severity.ERROR) {
if (diagnostic instanceof UnresolvedReferenceDiagnostic) {