using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using System; namespace CapnpC.CSharp.Generator.CodeGen { class Name { readonly string _name; public Name(string name) { _name = name ?? throw new ArgumentNullException(nameof(name)); IdentifierName = SyntaxFactory.IdentifierName(_name); Identifier = SyntaxFactory.Identifier(_name); VariableDeclarator = SyntaxFactory.VariableDeclarator(_name); } public IdentifierNameSyntax IdentifierName { get; } public SyntaxToken Identifier { get; } public VariableDeclaratorSyntax VariableDeclarator { get; } public override string ToString() => _name; public override bool Equals(object obj) { return obj is Name other && _name == other._name; } public override int GetHashCode() => _name.GetHashCode(); } }