示例#1
0
        /// <summary>
        /// Adds an attribute to match given annotation.
        /// </summary>
        /// <param name="memberName"></param>
        /// <param name="context"></param>
        private void Fix(QualifiedMemberName memberName, VBAParser.AnnotationContext context)
        {
            Debug.Assert(context.AnnotationType.HasFlag(AnnotationType.MemberAnnotation));

            var annotationName = Identifier.GetName(context.annotationName().unrestrictedIdentifier());
            var annotationType = context.AnnotationType;
            var attributeName  = memberName.MemberName + "." + _attributeNames[annotationName];

            var attributeInstruction = GetAttributeInstruction(context, attributeName, annotationType);
            var insertPosition       = FindInsertPosition(context);

            var rewriter = _state.GetAttributeRewriter(memberName.QualifiedModuleName);

            rewriter.InsertBefore(insertPosition, attributeInstruction);
        }
示例#2
0
        private static void FixExposedAttribute(RubberduckParserState state, QualifiedModuleName moduleName)
        {
            var attributes = state.GetModuleAttributes(moduleName);
            var rewriter   = state.GetAttributeRewriter(moduleName);

            foreach (var attribute in attributes.Values)
            {
                var exposedAttribute = attribute.ExposedAttribute;
                if (exposedAttribute == null)
                {
                    continue;
                }

                var valueToken = exposedAttribute.Context.attributeValue().Single().Start;
                Debug.Assert(valueToken.Text == "False");

                rewriter.Replace(valueToken, "True");
            }
        }