Example #1
0
 public UsePackage(PtUseUri source, string?alias, string name, Package package)
 {
     Source  = source;
     Alias   = alias;
     Name    = name;
     Package = package;
 }
Example #2
0
        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();
        }
Example #3
0
 protected virtual void DoVisit(PtUseUri node) => VisitChildren(node);
Example #4
0
 public UseLib(PtUseUri source, string path)
 {
     Source = source;
     Path   = path;
 }
Example #5
0
 protected override void DoVisit(PtUseUri node)
 {
     Ffis.Add($"use {node.Uri}");
 }