override fun annotate()

in plugin-bazel/src/main/kotlin/org/jetbrains/bazel/languages/bazelrc/annotation/BazelrcFlagAnnotator.kt [38:106]


  override fun annotate(element: PsiElement, holder: AnnotationHolder) {
    if (!flagTokenPattern.accepts(element) || isLabel(element)) {
      return
    }

    val flag =
      (element.parent as? BazelrcFlag)
        ?.let(symbolReferenceService::getReferences)
        ?.flatMap(PsiSymbolReference::resolveReference)
        ?.firstOrNull()
        ?.let { it as? BazelFlagSymbol }
        ?.flag

    if (flag == null) {
      holder
        .newAnnotation(HighlightSeverity.WARNING, BazelPluginBundle.message("annotation.bazelrc.unknown.flag", element.text))
        .range(element.textRange)
        .textAttributes(BazelrcHighlightingColors.UNKNOWN_FLAG)
        .create()
      return
    }

    when {
      isHidden(flag) ->
        holder
          .newAnnotation(HighlightSeverity.INFORMATION, BazelPluginBundle.message("annotation.bazelrc.undocumented.flag", element.text))
          .range(element.textRange)
          .textAttributes(BazelrcHighlightingColors.UNKNOWN_FLAG)
          .create()

      isNoOp(flag) ->
        holder
          .newAnnotation(HighlightSeverity.INFORMATION, BazelPluginBundle.message("annotation.bazelrc.idle.flag", element.text))
          .range(element.textRange)
          .textAttributes(BazelrcHighlightingColors.NOOP_FLAG)
          .withFix(DeleteFlagUseFix(element, flag))
          .create()

      isDeprecated(flag, element) ->
        holder
          .newAnnotation(HighlightSeverity.WARNING, BazelPluginBundle.message("annotation.bazelrc.deprecated.flag", element.text))
          .range(element.textRange)
          .textAttributes(BazelrcHighlightingColors.DEPRECATED_FLAG)
          .create()

      isOld(flag, element.text) ->
        holder
          .newAnnotation(HighlightSeverity.INFORMATION, oldAnnotationMessage(flag, element.text))
          .range(element.textRange)
          .textAttributes(BazelrcHighlightingColors.DEPRECATED_FLAG)
          .withFix(RenameFlagNameFix(element, flag))
          .create()

      isNotApplicable(flag, element) ->
        holder
          .newAnnotation(
            HighlightSeverity.INFORMATION,
            BazelPluginBundle.message(
              "annotation.bazelrc.flag.not.applicable",
              element.text,
              element.parentOfType<BazelrcLine>(false)!!.command,
            ),
          ).range(element.textRange)
          .textAttributes(BazelrcHighlightingColors.DEPRECATED_FLAG)
          .create()

      else -> {}
    }
  }