Esempio n. 1
0
                public override void Visit(ModulePatternNode node)
                {
                    // Only try to load the module if the entire path is syntactically correct.
                    var path = CreateCorrectPath(node.Path);

                    if (path != null)
                    {
                        if (path.Components.Length == 1 && _aliases.TryGetValue(path.Components[0], out var actual))
                        {
                            path = actual;
                        }

                        if (path == _path || LoadModule(node, node.Path.ComponentTokens.Tokens[0].Location, path) != null)
                        {
                            node.SetAnnotation("Path", path);
                        }
                    }

                    base.Visit(node);

                    var alias = node.Alias;

                    if (alias != null && !alias.NameToken.IsMissing)
                    {
                        _scope.Define(alias.MutKeywordToken != null ? SyntaxSymbolKind.Mutable :
                                      SyntaxSymbolKind.Immutable, null, alias, alias.NameToken.Text);
                    }
                }
Esempio n. 2
0
 public override TreePattern Visit(ModulePatternNode node, TreePattern state)
 {
     return(new TreeModulePattern(CreateAlias(node), _parent._loader.GetModule(
                                      node.GetAnnotation <ModulePath>("Path")) !));
 }