public override object Visit(AST.ConstructorDeclaration constructorDeclaration, object data) { DefaultRegion region = GetRegion(constructorDeclaration.StartLocation, constructorDeclaration.EndLocation); DefaultRegion bodyRegion = GetRegion(constructorDeclaration.EndLocation, constructorDeclaration.Body != null ? constructorDeclaration.Body.EndLocation : new Point(-1, -1)); Class c = (Class)currentClass.Peek(); Constructor constructor = new Constructor(constructorDeclaration.Modifier, region, bodyRegion); ParameterCollection parameters = new ParameterCollection(); if (constructorDeclaration.Parameters != null) { foreach (AST.ParameterDeclarationExpression par in constructorDeclaration.Parameters) { ReturnType parType = new ReturnType(par.TypeReference); Parameter p = new Parameter(par.ParameterName, parType); parameters.Add(p); } } constructor.Parameters = parameters; c.Methods.Add(constructor); return null; }
public override object Visit(AST.MethodDeclaration methodDeclaration, object data) { DefaultRegion region = GetRegion(methodDeclaration.StartLocation, methodDeclaration.EndLocation); DefaultRegion bodyRegion = GetRegion(methodDeclaration.EndLocation, methodDeclaration.Body != null ? methodDeclaration.Body.EndLocation : new Point(-1, -1)); ReturnType type = methodDeclaration.TypeReference == null ? new ReturnType("System.Void") : new ReturnType(methodDeclaration.TypeReference); Class c = (Class)currentClass.Peek(); Method method = new Method(String.Concat(methodDeclaration.Name), type, methodDeclaration.Modifier, region, bodyRegion); ParameterCollection parameters = new ParameterCollection(); if (methodDeclaration.Parameters != null) { foreach (AST.ParameterDeclarationExpression par in methodDeclaration.Parameters) { ReturnType parType = new ReturnType(par.TypeReference); Parameter p = new Parameter(par.ParameterName, parType); parameters.Add(p); } } method.Parameters = parameters; c.Methods.Add(method); return null; }