// Windows API 系(Declare) public override void VisitDeclareStatement(DeclareStatementSyntax statementNode) { var isSubMethod = statementNode.ChildTokens().Any(x => x.Kind() == SyntaxKind.SubKeyword); var defineName = statementNode.ChildTokens().FirstOrDefault(x => x.Kind() == SyntaxKind.IdentifierToken).ToString(); var methodArguments = new List <MethodArgument>(); if (statementNode.ChildNodes().OfType <ParameterListSyntax>().FirstOrDefault().ChildNodes().Any()) { var listNode = statementNode.ChildNodes().OfType <ParameterListSyntax>().FirstOrDefault(); methodArguments = GetMethodArguments(listNode); } var returnType = string.Empty; if (!isSubMethod) { var asNode = statementNode.ChildNodes().FirstOrDefault(x => x is SimpleAsClauseSyntax); returnType = asNode.ChildNodes().FirstOrDefault().ToString(); } var startLength = statementNode.Span.Start; var endLength = statementNode.Span.End; var parentNamespace = GetNamespace(DefineKinds.WindowsAPI, startLength, endLength); UserDefinitions.Add(new UserDefinition { DefineKinds = DefineKinds.WindowsAPI, Namespace = parentNamespace, DefineName = defineName, DefineFullName = $"{parentNamespace}.{defineName}", MethodArguments = methodArguments, ReturnType = ConvertCSharpType(returnType), SourceFile = SourceFile, StartLength = startLength, EndLength = endLength, }); base.VisitDeclareStatement(statementNode); }
public override void VisitDeclareStatement(DeclareStatementSyntax node) { LogicalLineCount++; base.VisitDeclareStatement(node); }