예제 #1
0
        private void ResolveFnName(Lexeme nameToken, IList <FnDecl> list)
        {
            if (Fns.ContainsKey(nameToken.Value))
            {
                foreach (var fn in Fns[nameToken.Value])
                {
                    list.Add(fn);
                }
            }

            Parent?.ResolveFnName(nameToken, list);
        }
예제 #2
0
        public void AddFn(Lexeme nameToken, FnDecl node, ErrorHandler errorHandler)
        {
            string fnName = nameToken.Value;

            if (!Fns.ContainsKey(fnName))
            {
                Fns.Add(fnName, new List <FnDecl>());
            }

            if (Fns[fnName].Any(fn => fn.Signature == node.Signature))
            {
                errorHandler.AddMessage(Severity.Error, $"A function overload with the same signature already exists",
                                        nameToken);
            }
            Fns[fnName].Add(node);
        }