public static Core.Name Resolve(Grammar.ASTNodeName nameNode) { var identifiers = new List <string>(); foreach (var ident in nameNode.path.identifiers) { identifiers.Add(ident.GetExcerpt()); } return(Core.Name.FromPath(identifiers.ToArray())); }
public static Core.Type ResolveStruct( Core.Session session, Grammar.ASTNodeName nameNode, IList <Core.UseDirective> useDirectives, bool mustBeResolved) { var name = NameResolver.Resolve(nameNode); var foundDecls = session.GetDeclsWithUseDirectives(name, nameNode.path.isRooted, useDirectives); if (!session.ValidateSingleDecl(foundDecls, name, nameNode.GetSpan())) { return(new Core.TypeError()); } if (!session.ValidateAsType(foundDecls[0], name, nameNode.GetSpan())) { return(new Core.TypeError()); } return(Core.TypeStruct.Of(foundDecls[0].index)); }