/// <summary> /// Initializes a new instance of the <see cref="MethodASTWalker"/> class. /// </summary> protected MethodASTWalker(CSharpSyntaxNode node) { var methodDeclarationSyntaxNode = node as MethodDeclarationSyntax; if (methodDeclarationSyntaxNode == null) { throw new ArgumentException( string.Format("Specified node is not of type {0}", typeof(MethodDeclarationSyntax).Name)); } this.node = node; MethodDeclaration methodHelper = new MethodDeclaration(methodDeclarationSyntaxNode); this.methodDeclaration = MethodDeclarationTranslationUnit.Create( methodHelper.Visibility, IdentifierTranslationUnit.Create(methodHelper.ReturnType), IdentifierTranslationUnit.Create(methodHelper.Name)); foreach (TypedIdentifier parameter in methodHelper.Parameters) { this.methodDeclaration.AddArgument(ArgumentDefinitionTranslationUnit.Create( IdentifierTranslationUnit.Create(parameter.TypeName), IdentifierTranslationUnit.Create(parameter.IdentifierName))); } }
/// <summary> /// /// </summary> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> public static ITranslationUnit BuildVariableDeclarationTranslationUnit(string type, string name, ITranslationUnit expression = null) { return(VariableDeclarationTranslationUnit.Create( type == null ? null : TypeIdentifierTranslationUnit.Create(type), IdentifierTranslationUnit.Create(name), expression)); }
public string InvokationExpressionParameterlessInvokation() { var translationUnit = TranslationUnitBuilder.BuildExpressionTranslationUnit( IdentifierTranslationUnit.Create("myMethod"), new ITranslationUnit[] { }); return(translationUnit.Translate()); }
public string ParameterlessCtor() { var translationUnit = TranslationUnitBuilder.BuildObjectCreationExpressionTranslationUnit( IdentifierTranslationUnit.Create("MyType"), new ITranslationUnit[] { }); return(translationUnit.Translate()); }
/// <summary> /// Creates a <see cref="ModuleTranslationUnitFactory"/>. /// </summary> /// <returns>A <see cref="ModuleTranslationUnitFactory"/>.</returns> public ITranslationUnit Create() { var helper = new NamespaceDeclaration(this.Node as NamespaceDeclarationSyntax, this.SemanticModel); var module = this.CreateTranslationUnit(IdentifierTranslationUnit.Create(helper.Name)); return(module); }
/// <summary> /// /// </summary> /// <param name="translationUnit"></param> /// <param name="className"></param> /// <returns></returns> public static ClassDeclarationTranslationUnit AddClass(this ModuleTranslationUnit translationUnit, string className) { var classTranslationUnit = ClassDeclarationTranslationUnit.Create( ModifierTokens.Public, IdentifierTranslationUnit.Create(className), null); translationUnit.AddClass(classTranslationUnit); return(classTranslationUnit); }
/// <summary> /// /// </summary> /// <param name="translationUnit"></param> /// <param name="method"></param> /// <returns></returns> public static MethodDeclarationTranslationUnit AddEmptyMethod(this ClassDeclarationTranslationUnit translationUnit, string method) { var methodDeclaration = MethodDeclarationTranslationUnit.Create( VisibilityToken.Public, IdentifierTranslationUnit.Void, IdentifierTranslationUnit.Create(method)); translationUnit.AddMethodDeclaration(methodDeclaration); return(methodDeclaration); }
/// <summary> /// /// </summary> /// <param name="translationUnit"></param> /// <param name="method"></param> /// <returns></returns> public static VariableDeclarationTranslationUnit AddVariable(this MethodDeclarationTranslationUnit translationUnit, string type, string name) { var variableDeclaration = VariableDeclarationTranslationUnit.Create( type != null ? IdentifierTranslationUnit.Create("int") : null, IdentifierTranslationUnit.Create(name)); translationUnit.AddStatement(variableDeclaration); return(variableDeclaration); }
/// <summary> /// /// </summary> /// <param name="translationUnit"></param> /// <param name="className"></param> /// <param name="baseClassName"></param> /// <returns></returns> public static ClassDeclarationTranslationUnit AddClass(this ModuleTranslationUnit translationUnit, string className, string baseClassName) { var classTranslationUnit = ClassDeclarationTranslationUnit.Create( VisibilityToken.Public, IdentifierTranslationUnit.Create(className), IdentifierTranslationUnit.Create(baseClassName)); translationUnit.AddClass(classTranslationUnit); return(classTranslationUnit); }
/// <summary> /// Creates a <see cref="EnumTranslationUnitFactory"/>. /// </summary> /// <returns>A <see cref="EnumTranslationUnitFactory"/>.</returns> public ITranslationUnit Create() { EnumDeclaration helper = new EnumDeclaration(this.Node as EnumDeclarationSyntax, this.SemanticModel); var enumDeclaration = this.CreateTranslationUnit(helper.Visibility, IdentifierTranslationUnit.Create(helper.Name)) as EnumTranslationUnit; return(enumDeclaration); }
/// <summary> /// /// </summary> /// <param name="visibility"></param> /// <returns></returns> public static ConstructorDefinitionTranslationUnit Create(VisibilityToken visibility) { return(new ConstructorDefinitionTranslationUnit() { Visibility = visibility, Name = IdentifierTranslationUnit.Create(Lexems.ConstructorKeyword), ReturnType = null }); }
/// <summary> /// /// </summary> /// <param name="translationUnit"></param> /// <param name="returnType"></param> /// <param name="name"></param> /// <returns></returns> public static MethodDeclarationTranslationUnit AddMethod(this ClassDeclarationTranslationUnit translationUnit, string returnType, string name) { var methodTranslationUnit = MethodDeclarationTranslationUnit.Create(VisibilityToken.Public, returnType != null ? IdentifierTranslationUnit.Create(returnType) : null, IdentifierTranslationUnit.Create(name)); translationUnit.AddMethodDeclaration(methodTranslationUnit); return(methodTranslationUnit); }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <returns></returns> public static ITranslationUnit BuildModuleTranslationUnit(string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } return(ModuleTranslationUnit.Create(IdentifierTranslationUnit.Create(name))); }
/// <summary> /// /// </summary> /// <param name="modifiers"></param> /// <returns></returns> public static ConstructorDefinitionTranslationUnit Create(ModifierTokens modifiers) { return(new ConstructorDefinitionTranslationUnit() { Modifiers = modifiers, Name = IdentifierTranslationUnit.Create(Lexems.ConstructorKeyword), ReturnType = null }); }
public string InvokationExpressionOneParameter() { var translationUnit = TranslationUnitBuilder.BuildExpressionTranslationUnit( IdentifierTranslationUnit.Create("myMethod"), new ITranslationUnit[] { TranslationUnitBuilder.BuildLiteralTranslationUnit("string1") }); return(translationUnit.Translate()); }
public string RenderEmptyMethod1Argument() { var translationUnit = TranslationUnitBuilder.BuildMethodSignatureTranslationUnit( ModifierTokens.Public, null, "MethodSignature1Argument") as MethodSignatureDeclarationTranslationUnit; translationUnit.AddArgument(ArgumentDefinitionTranslationUnit.Create( TypeIdentifierTranslationUnit.Number, IdentifierTranslationUnit.Create("param1"))); return(translationUnit.Translate()); }
/// <summary> /// Creates a <see cref="EnumMemberTranslationUnitFactory"/>. /// </summary> /// <returns>A <see cref="EnumMemberTranslationUnitFactory"/>.</returns> public ITranslationUnit Create() { var helper = new EnumMemberDeclaration(this.Node as EnumMemberDeclarationSyntax, this.SemanticModel); var enumMemberDeclaration = this.CreateTranslationUnit(IdentifierTranslationUnit.Create(helper.Name), helper.Value != null ? new ExpressionTranslationUnitBuilder(helper.Value, this.SemanticModel).Build() : null) as EnumMemberTranslationUnit; return(enumMemberDeclaration); }
/// <summary> /// /// </summary> /// <param name="visibility"></param> /// <param name="name"></param> /// <returns></returns> public static ITranslationUnit BuildInterfaceTranslationUnit(ModifierTokens visibility, string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } return(InterfaceDeclarationTranslationUnit.Create( visibility, IdentifierTranslationUnit.Create(name))); }
public string RenderEmptyConstructor1Argument() { var translationUnit = TranslationUnitBuilder.BuildConstructorTranslationUnit( VisibilityToken.Public) as MethodDeclarationTranslationUnit; translationUnit.AddArgument(ArgumentDefinitionTranslationUnit.Create( TypeIdentifierTranslationUnit.Number, IdentifierTranslationUnit.Create("param1"))); return(translationUnit.Translate()); }
/// <summary> /// /// </summary> /// <param name="modifiers"></param> /// <param name="returnType"></param> /// <param name="name"></param> /// <returns></returns> public static ITranslationUnit BuildMethodSignatureTranslationUnit(ModifierTokens modifiers, string returnType, string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } return(MethodSignatureDeclarationTranslationUnit.Create( modifiers, returnType == null ? null : TypeIdentifierTranslationUnit.Create(returnType), IdentifierTranslationUnit.Create(name))); }
/// <summary> /// /// </summary> /// <param name="visibility"></param> /// <param name="name"></param> /// <param name="baseClassName"></param> /// <returns></returns> public static ITranslationUnit BuildClassTranslationUnit(VisibilityToken visibility, string name, string baseClassName) { if (name == null) { throw new ArgumentNullException(nameof(name)); } return(ClassDeclarationTranslationUnit.Create( visibility, IdentifierTranslationUnit.Create(name), baseClassName == null ? null : IdentifierTranslationUnit.Create(baseClassName))); }
public string RenderEmptyMethod2Arguments() { var translationUnit = TranslationUnitBuilder.BuildMethodTranslationUnit( ModifierTokens.Public, null, "EmptyMethod2Arguments") as MethodDeclarationTranslationUnit; translationUnit.AddArgument(ArgumentDefinitionTranslationUnit.Create( TypeIdentifierTranslationUnit.Number, IdentifierTranslationUnit.Create("param1"))); translationUnit.AddArgument(ArgumentDefinitionTranslationUnit.Create( TypeIdentifierTranslationUnit.String, IdentifierTranslationUnit.Create("param2"))); return(translationUnit.Translate()); }
public void ModuleAddsClass() { var translationUnit = ModuleTranslationUnit.Create(IdentifierTranslationUnit.Create("Module1")); TestInitialNestingLevel(translationUnit); var nestedTranslationUnit = ClassDeclarationTranslationUnit.Create( VisibilityToken.None, IdentifierTranslationUnit.Create("Class1"), null); translationUnit.AddClass(nestedTranslationUnit); TestNestingLevels(translationUnit, nestedTranslationUnit); }
/// <summary> /// /// </summary> /// <param name="node"></param> public override void VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node) { base.VisitLocalDeclarationStatement(node); var variableDeclaration = new VariableDeclaration(node.Declaration); var variableDeclarationTranslationUnit = VariableDeclarationTranslationUnit.Create( IdentifierTranslationUnit.Create(variableDeclaration.Type), IdentifierTranslationUnit.Create(variableDeclaration.Name)); this.methodDeclaration.AddStatement(variableDeclarationTranslationUnit); this.VisitStatement(node); }
public void ClassAddsMethod() { var translationUnit = ClassDeclarationTranslationUnit.Create( VisibilityToken.None, IdentifierTranslationUnit.Create("Class1"), null); TestInitialNestingLevel(translationUnit); var nestedTranslationUnit = MethodDeclarationTranslationUnit.Create( VisibilityToken.None, null, IdentifierTranslationUnit.Create("Method1")); translationUnit.AddMethodDeclaration(nestedTranslationUnit); TestNestingLevels(translationUnit, nestedTranslationUnit); }
public void MethodAddsStatement() { var translationUnit = MethodDeclarationTranslationUnit.Create( VisibilityToken.None, null, IdentifierTranslationUnit.Create("Method1"));; TestInitialNestingLevel(translationUnit); var nestedTranslationUnit = VariableDeclarationTranslationUnit.Create( TypeIdentifierTranslationUnit.Create("int"), IdentifierTranslationUnit.Create("var1")); translationUnit.AddStatement(nestedTranslationUnit); TestNestingLevels(translationUnit, nestedTranslationUnit); }
/// <summary> /// /// </summary> /// <param name="visibility"></param> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> public static ITranslationUnit BuildMemberTranslationUnit(ModifierTokens modifiers, string type, string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (type == null) { throw new ArgumentNullException(nameof(type)); } return(FieldDeclarationTranslationUnit.Create( modifiers, TypeIdentifierTranslationUnit.Create(type), IdentifierTranslationUnit.Create(name))); }
public string RenderSimpleMethod() { ITranslationUnit translationUnit = TranslationUnitBuilder.BuildMethodTranslationUnit( VisibilityToken.Public, null, "SimpleMethod", new ITranslationUnit[] { VariableDeclarationTranslationUnit.Create(IdentifierTranslationUnit.Create("int"), IdentifierTranslationUnit.Create("variable1")), VariableDeclarationTranslationUnit.Create(IdentifierTranslationUnit.Create("string"), IdentifierTranslationUnit.Create("variable2")), VariableDeclarationTranslationUnit.Create(null, IdentifierTranslationUnit.Create("variable3")) }); return(translationUnit.Translate()); }
/// <summary> /// Creates a <see cref="InterfaceDeclarationTranslationUnit"/>. /// </summary> /// <returns>A <see cref="InterfaceDeclarationTranslationUnit"/>.</returns> public ITranslationUnit Create() { InterfaceDeclaration helper = new InterfaceDeclaration(this.Node as InterfaceDeclarationSyntax, this.SemanticModel); var interfaceDeclaration = this.CreateTranslationUnit(helper.Visibility, IdentifierTranslationUnit.Create(helper.Name)) as InterfaceDeclarationTranslationUnit; foreach (BaseTypeReference implementedInterface in helper.ExtendedInterfaces) { interfaceDeclaration.AddExtendedInterface(IdentifierTranslationUnit.Create(implementedInterface.FullName)); } return(interfaceDeclaration); }
/// <summary> /// /// </summary> /// <param name="visibility"></param> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> public static ITranslationUnit BuildMemberTranslationUnit(VisibilityToken visibility, string type, string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (type == null) { throw new ArgumentNullException(nameof(type)); } return(FieldDeclarationTranslationUnit.Create( visibility, IdentifierTranslationUnit.Create(type), IdentifierTranslationUnit.Create(name))); }