Support @param and @sparam annotations

This commit is contained in:
Yan Zhulanow
2015-07-16 19:05:05 +03:00
parent 00cfb3054a
commit 2f1def6832
6 changed files with 25 additions and 2 deletions
@@ -138,6 +138,7 @@ public interface Errors {
DiagnosticFactory0<PsiElement> INAPPLICABLE_SET_TARGET = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<PsiElement> INAPPLICABLE_TARGET_PROPERTY_IMMUTABLE = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<PsiElement> INAPPLICABLE_RECEIVER_TARGET = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<PsiElement> INAPPLICABLE_SPARAM_TARGET = DiagnosticFactory0.create(ERROR);
// Classes and traits
@@ -131,6 +131,7 @@ public class DefaultErrorMessages {
MAP.put(INAPPLICABLE_SET_TARGET, "''@set:'' annotations could be applied only to property declarations");
MAP.put(INAPPLICABLE_TARGET_PROPERTY_IMMUTABLE, "Property must be mutable");
MAP.put(INAPPLICABLE_RECEIVER_TARGET, "''@receiver:'' annotations could be applied only to extension function or extension property declarations");
MAP.put(INAPPLICABLE_SPARAM_TARGET, "''@sparam:'' annotations could be applied only to property declarations");
MAP.put(REDUNDANT_MODIFIER, "Modifier ''{0}'' is redundant because ''{1}'' is present", TO_STRING, TO_STRING);
MAP.put(ABSTRACT_MODIFIER_IN_TRAIT, "Modifier ''abstract'' is redundant in interface");
@@ -42,6 +42,8 @@ public class JetAnnotationUseSiteTarget : JetElementImplStub<KotlinPlaceHolderSt
JetTokens.GET_KEYWORD -> AnnotationUseSiteTarget.PROPERTY_GETTER
JetTokens.SET_KEYWORD -> AnnotationUseSiteTarget.PROPERTY_SETTER
JetTokens.RECEIVER_KEYWORD -> AnnotationUseSiteTarget.RECEIVER
JetTokens.PARAM_KEYWORD -> AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER
JetTokens.SPARAM_KEYWORD -> AnnotationUseSiteTarget.SETTER_PARAMETER
else -> throw IllegalStateException("Unknown annotation target " + node.getText())
}
}
@@ -255,6 +255,10 @@ public class ModifiersChecker {
}
break;
}
case SETTER_PARAMETER: {
reportIfNotMutableProperty(descriptor, annotation, INAPPLICABLE_SPARAM_TARGET);
break;
}
}
}
}