public override SyntaxNode VisitGlobalVarSection(GlobalVarSectionSyntax node) { if ((this.NodeInSpan(node)) && (!node.ContainsDiagnostics)) { node = node.WithVariables(this.SortVariables(node.Variables)); } return(base.VisitGlobalVarSection(node)); }
public void TestAnalyzeGlobalVariables() { CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; GlobalVarSectionSyntax globalVarSectionSyntax = null; IEnumerable <SyntaxNode> objectNodes = (SyntaxTree.ParseObjectText(GenerateFakeObjectWithVarForCodeLines("test: Integer;", "test += 1;")).GetRoot(token) as ObjectCompilationUnitSyntax).Objects.FirstOrDefault().DescendantNodes(); foreach (SyntaxNode syntax in objectNodes) { if (syntax.Kind == SyntaxKind.GlobalVarSection) { globalVarSectionSyntax = syntax as GlobalVarSectionSyntax; } } SyntaxNodeAnalysisContext context = new SyntaxNodeAnalysisContext(); GlobalVariablesPlacement.AnalyzeGlobalVariables(context); if (globalVarSectionSyntax != null) { GlobalVariablesPlacement.AnalyzeGlobalVariablesPlacement(context, globalVarSectionSyntax); } }
public static void AnalyzeGlobalVariablesPlacement(SyntaxNodeAnalysisContext context, GlobalVarSectionSyntax syntax) { if (syntax != null) { int globalVarSectionPosition = 0; int triggersSectionPosition = 0; int MethodSectionPosition = 0; SyntaxNode parent = syntax.Parent; SyntaxKind kind = parent.Kind; dynamic parentSyntax = parent; if (parentSyntax != null) { foreach (MemberSyntax member in parentSyntax.Members) { if (member.Kind == SyntaxKind.GlobalVarSection) { globalVarSectionPosition = member.Position; } if (member.Kind == SyntaxKind.TriggerDeclaration && triggersSectionPosition == 0) { triggersSectionPosition = member.Position; } if (member.Kind == SyntaxKind.MethodDeclaration && MethodSectionPosition == 0) { MethodSectionPosition = member.Position; } } } if ((globalVarSectionPosition > triggersSectionPosition) || globalVarSectionPosition > MethodSectionPosition) { if (context.Node != null) { ReportGlobalVariablesShouldbeBeforeTriggersProcedures(context, context.Node.GetLocation(), syntax.Kind); } } } }
public static void AnalyzeGlobalVariables(SyntaxNodeAnalysisContext context) { GlobalVarSectionSyntax syntax = context.Node as GlobalVarSectionSyntax; AnalyzeGlobalVariablesPlacement(context, syntax); }