Example #1
0
        /// <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);
                        }
                    }
                }
            }
        }
Example #2
0
        /// <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);
                }
            }
        }
Example #4
0
 internal static void regions(this TextWriter trapFile, RegionDirective start, EndRegionDirective end)
 {
     trapFile.WriteTuple("regions", start, end);
 }
Example #5
0
 internal static void directive_endregions(this TextWriter trapFile, EndRegionDirective directive, RegionDirective start)
 {
     trapFile.WriteTuple("directive_endregions", directive, start);
 }
Example #6
0
 internal static void directive_regions(this TextWriter trapFile, RegionDirective directive, string name)
 {
     trapFile.WriteTuple("directive_regions", directive, name);
 }