/// <summary> /// Processes the given element. /// </summary> /// <param name="element">The element being visited.</param> /// <param name="settings">The settings.</param> private void CheckForRegionsInElement(Element element, Settings settings) { Param.AssertNotNull(element, "element"); Param.AssertNotNull(settings, "settings"); // If the DoNotUseRegions setting is enabled, then skip this check as the region // will be discovered during the overall regions rule check. if (settings.DoNotPlaceRegionsWithinElements && !settings.DoNotUseRegions && !element.Generated) { if (element.ElementType == ElementType.Method || element.ElementType == ElementType.Accessor || element.ElementType == ElementType.Constructor || element.ElementType == ElementType.Destructor || element.ElementType == ElementType.Field) { for (RegionDirective region = element.FindFirstDescendent <RegionDirective>(); region != null; region = region.FindNextDescendentOf <RegionDirective>(element)) { // If this token is an opening region directive, this is a violation. if (!region.Generated && !region.IsGeneratedCodeRegion) { this.AddViolation(element, region.LineNumber, Rules.DoNotPlaceRegionsWithinElements); } } } } }
/// <summary> /// Checks a region. /// </summary> /// <param name="region">The region to check.</param> /// <param name="parentElement">The parent element.</param> /// <param name="settings">The current settings.</param> private void CheckRegion(RegionDirective region, Element parentElement, Settings settings) { Param.AssertNotNull(region, "region"); Param.AssertNotNull(parentElement, "parentElement"); Param.AssertNotNull(settings, "settings"); if (settings.DoNotUseRegions) { if (!region.Generated && !region.IsGeneratedCodeRegion) { // There should not be any regions in the code. this.AddViolation(parentElement, region.LineNumber, Rules.DoNotUseRegions); } } }
private void RemoveParentRegionIfExists(LanguageElement element) { if (element.ParentRegion != null) { RegionDirective region = element.ParentRegion; if (deletedRegions.Contains(region.Name) == false) { //Add 10 to just make sure all whitespace is deleted int startEndPoint = region.StartOffset + region.Name.Length + 10; SourceRange startRange = new SourceRange(region.StartLine, 1, region.StartLine, startEndPoint); textDocument.QueueDelete(startRange); //Add 10 to just make sure all whitespace is deleted //Include name just in case name was a comment at the end int endEndPoint = region.EndOffset + region.Name.Length + 10; SourceRange endRange = new SourceRange(region.EndLine, 1, region.EndLine, endEndPoint); textDocument.QueueDelete(endRange); deletedRegions.Add(region.Name); } } }
internal static void regions(this TextWriter trapFile, RegionDirective start, EndRegionDirective end) { trapFile.WriteTuple("regions", start, end); }
internal static void directive_endregions(this TextWriter trapFile, EndRegionDirective directive, RegionDirective start) { trapFile.WriteTuple("directive_endregions", directive, start); }
internal static void directive_regions(this TextWriter trapFile, RegionDirective directive, string name) { trapFile.WriteTuple("directive_regions", directive, name); }