package glslplugin.annotation.impl;
import com.intellij.lang.annotation.AnnotationHolder;
import glslplugin.annotation.Annotator;
import glslplugin.lang.elements.declarations.GLSLParameterDeclaration;
import glslplugin.lang.elements.declarations.GLSLQualifier;
import glslplugin.lang.elements.types.GLSLType;
import glslplugin.lang.elements.types.GLSLTypeQualifier;
import org.jetbrains.annotations.NotNull;
/**
* Created by abigail on 10/07/15.
*/
public class ParameterQualifierAnnotation extends Annotator<GLSLParameterDeclaration> {
@Override
public void annotate(GLSLParameterDeclaration parameter, AnnotationHolder holder) {
for (GLSLQualifier qualifier : parameter.getQualifiers()) {
GLSLTypeQualifier qualifierType = qualifier.getQualifierType();
if (qualifierType == GLSLTypeQualifier.PRECISION_QUALIFIER
|| qualifierType == GLSLTypeQualifier.MEMORY_QUALIFIER
|| qualifier.getQualifier() == GLSLQualifier.Qualifier.CONST
|| qualifier.getQualifier() == GLSLQualifier.Qualifier.IN
|| qualifier.getQualifier() == GLSLQualifier.Qualifier.OUT
|| qualifier.getQualifier() == GLSLQualifier.Qualifier.INOUT) continue;
holder.createErrorAnnotation(parameter, "'" + qualifier.getQualifier().toString() + "' qualifier not allowed. " +
"Expected precision qualifier, memory qualifier, 'const', 'in', 'out', or 'inout'.");
}
}
@NotNull
@Override
public Class<GLSLParameterDeclaration> getElementType() {
return GLSLParameterDeclaration.class;
}
}