private static void Assert(AstName uot, string ns, string symbol, AstNameKind kind, int partCount, string postfix = "", string prefix = "", int paramCount = 0) { uot.Should().NotBeNull(); uot.Kind.Should().Be(kind); uot.Namespace.Should().Be(ns); uot.Symbol.Should().Be(symbol); uot.Parts.Count().Should().Be(partCount); uot.Postfix.Should().Be(postfix); uot.Prefix.Should().Be(prefix); uot.ParameterCount.Should().Be(paramCount); }
private AstName(NamePart[] parts, AstNameKind nameKind, bool unparsed = false) { Prefix = String.Empty; Postfix = String.Empty; Kind = nameKind; _parts = parts; if (!unparsed) { ParseParts(); } }
/// <summary>For external names</summary> private AstName(string @namespace, string name, AstNameKind nameKind) { Ast.Guard(!String.IsNullOrEmpty(name), "Name cannot be empty or null."); Prefix = String.Empty; Postfix = String.Empty; Kind = nameKind; _parts = @namespace.Replace("`", "%") .Split(Separator, StringSplitOptions.RemoveEmptyEntries) .Append(name.Replace("`", "%")) .Select(p => new NamePart(p)) .ToArray(); ParseParts(); }
/// <summary>Parse a local source code or external symbol name.</summary> public static AstSymbolName Parse(string symbolName, AstNameKind nameKind = AstNameKind.Local) { var native = AstName.ParseFullName(symbolName, nameKind); return(new AstSymbolName(native)); }