/// <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); }
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"); } }