public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
        {
            if (!(result is IWithInspectionResultProperties <(IParseTreeAnnotation Annotation, string AttributeName, IReadOnlyList <string> AttributeValues)> resultProperties))
            {
                return;
            }

            var declaration = result.Target;

            var(parseTreeAnnotation, attributeBaseName, attributeValues) = resultProperties.Properties;

            var attributeName = declaration.DeclarationType.HasFlag(DeclarationType.Module)
                ? attributeBaseName
                : Attributes.MemberAttributeName(attributeBaseName, declaration.IdentifierName);

            if (!(parseTreeAnnotation.Annotation is IAttributeAnnotation attributeAnnotation))
            {
                var message = $"Tried to adjust values of attribute {attributeName} to values of non-attribute annotation {parseTreeAnnotation.Annotation.Name} in component {declaration.QualifiedModuleName}.";
                Logger.Warn(message);
                Debug.Fail(message);
                return;
            }

            var attributeValuesFromAnnotation = attributeAnnotation.AttributeValues(parseTreeAnnotation);

            _attributesUpdater.UpdateAttribute(rewriteSession, declaration, attributeName, attributeValuesFromAnnotation, oldValues: attributeValues);
        }
Esempio n. 2
0
        public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
        {
            var declaration = result.Target;
            IAttributeAnnotation   annotation      = result.Properties.Annotation;
            IReadOnlyList <string> attributeValues = result.Properties.AttributeValues;

            var attributeName = declaration.DeclarationType.HasFlag(DeclarationType.Module)
                ? annotation.Attribute
                : $"{declaration.IdentifierName}.{annotation.Attribute}";

            _attributesUpdater.UpdateAttribute(rewriteSession, declaration, attributeName, annotation.AttributeValues, attributeValues);
        }
Esempio n. 3
0
        public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
        {
            var declaration = result.Target;
            IParseTreeAnnotation annotationInstance = result.Properties.Annotation;

            Debug.Assert(annotationInstance.Annotation is IAttributeAnnotation);
            IAttributeAnnotation   annotation      = (IAttributeAnnotation)annotationInstance.Annotation;
            IReadOnlyList <string> attributeValues = result.Properties.AttributeValues;

            var attribute     = annotation.Attribute(annotationInstance);
            var attributeName = declaration.DeclarationType.HasFlag(DeclarationType.Module)
                ? attribute
                : $"{declaration.IdentifierName}.{attribute}";

            _attributesUpdater.UpdateAttribute(rewriteSession, declaration, attributeName, annotation.AttributeValues(annotationInstance), oldValues: attributeValues);
        }