/// <summary> /// Initializes a new instance of the <see cref="LocalDeclarationStatementASTWalker"/> class. /// </summary> /// <param name="node"></param> /// <param name="statement"></param> /// <param name="semanticModel">The semantic model.</param> protected LocalDeclarationStatementASTWalker(CSharpSyntaxNode node, LocalDeclarationStatementTranslationUnit localDeclarationStatement, SemanticModel semanticModel) : base(node, semanticModel) { var declarationSyntaxNode = node as LocalDeclarationStatementSyntax; if (declarationSyntaxNode == null) { throw new ArgumentException( string.Format("Specified node is not of type {0}", typeof(LocalDeclarationStatementSyntax).Name)); } if (localDeclarationStatement == null) { throw new ArgumentNullException(nameof(localDeclarationStatement)); } // Node assigned in base, no need to assign it here this.statement = localDeclarationStatement; }
/// <summary> /// Factory method for class <see cref="LocalDeclarationStatementASTWalker"/>. /// </summary> /// <param name="node"><see cref="CSharpSyntaxNode"/> Used to initialize the walker.</param> /// <param name="semanticModel">The semantic model.</param> /// <returns></returns> public static LocalDeclarationStatementASTWalker Create(CSharpSyntaxNode node, SemanticModel semanticModel = null) { // TODO: Use TranslationUnitFactory in order to have AST walkers decoupled from helpers // via factories (which will be using helpers) var variableDeclaration = new VariableDeclaration((node as LocalDeclarationStatementSyntax).Declaration, semanticModel); ExpressionSyntax expression = variableDeclaration.Expressions[0]; // This can contain null, so need to act accordingly ITranslationUnit expressionTranslationUnit = expression == null ? null : new ExpressionTranslationUnitBuilder(expression, semanticModel).Build(); var variableDeclarationTranslationUnit = VariableDeclarationTranslationUnit.Create( TypeIdentifierTranslationUnit.Create(variableDeclaration.Type.Name), IdentifierTranslationUnit.Create(variableDeclaration.Names[0]), expressionTranslationUnit); var statement = LocalDeclarationStatementTranslationUnit.Create(variableDeclarationTranslationUnit); return(new LocalDeclarationStatementASTWalker(node, statement, semanticModel)); }
public static MockedLocalDeclarationStatementTranslationUnit Create(LocalDeclarationStatementTranslationUnit statementTranslationUnit) { return(new MockedLocalDeclarationStatementTranslationUnit(statementTranslationUnit)); }
protected MockedLocalDeclarationStatementTranslationUnit(LocalDeclarationStatementTranslationUnit original) : base(original) { // Reassigning since base class operated on it this.variableDeclaration = MockedVariableDeclarationTranslationUnit.Create(this.variableDeclaration); }