public UsePackage(PtUseUri source, string?alias, string name, Package package) { Source = source; Alias = alias; Name = name; Package = package; }
private IUse DecodeUseUri(PtUseUri use) { var uri = use.Uri.Value; var parts = uri.Split(':'); Debug.Assert(parts.Length == 1 || parts.Length == 2); var schema = parts.Length == 1 ? "package" : parts[0]; var value = parts.Length == 1 ? parts[0] : parts[1]; Debug.Assert(schema.Length > 0 && value.Length > 0); var alias = use.Name?.Value; switch (schema) { case "package": var package = UsePackage(uri); return(new UsePackage(use, alias, value, package)); case "lib": if (alias != null) { Errors.Help.Add( use.Span, ErrNo.Err003, $"nonsense alias in ``use \"lib:{value}\"´´"); } return(new UseLib(use, value)); } throw new System.InvalidOperationException(); }
protected virtual void DoVisit(PtUseUri node) => VisitChildren(node);
public UseLib(PtUseUri source, string path) { Source = source; Path = path; }
protected override void DoVisit(PtUseUri node) { Ffis.Add($"use {node.Uri}"); }