Search in sources :

Example 1 with Stage

use of dyvil.annotation.Experimental.Stage in project Dyvil by Dyvil.

the class Deprecation method checkExperimental.

private static void checkExperimental(IMember member, SourcePosition position, MarkerList markers, Annotation annotation) {
    final ArgumentList arguments = annotation.getArguments();
    final MarkerLevel markerLevel = AnnotationUtil.getEnumValue(arguments, EXP_LEVEL_PARAM, MarkerLevel.class);
    if (markerLevel == null || markerLevel == MarkerLevel.IGNORE) {
        return;
    }
    String value = AnnotationUtil.getStringValue(arguments, EXP_VALUE_PARAM);
    final String description = AnnotationUtil.getStringValue(arguments, EXP_DESC_PARAM);
    final Stage stage = AnnotationUtil.getEnumValue(arguments, EXP_STAGE_PARAM, Stage.class);
    assert stage != null;
    final String stageName = Markers.getSemantic("experimental.stage." + stage.name());
    value = replaceMember(member, value).replace("{stage}", stageName);
    final Marker marker = Markers.withText(position, markerLevel, value);
    assert marker != null;
    // Description
    if (description != null && !description.isEmpty()) {
        marker.addInfo(Markers.getSemantic("experimental.description", description));
    }
    // Stage
    marker.addInfo(Markers.getSemantic("experimental.stage", stageName));
    markers.add(marker);
}
Also used : Stage(dyvil.annotation.Experimental.Stage) MarkerLevel(dyvil.util.MarkerLevel) Marker(dyvilx.tools.parsing.marker.Marker) ArgumentList(dyvilx.tools.compiler.ast.parameter.ArgumentList)

Aggregations

Stage (dyvil.annotation.Experimental.Stage)1 MarkerLevel (dyvil.util.MarkerLevel)1 ArgumentList (dyvilx.tools.compiler.ast.parameter.ArgumentList)1 Marker (dyvilx.tools.parsing.marker.Marker)1