Пример #1
0
        void defineObject()
        {
            IType obj = Context.CreateType("Object");

            obj.DefineMethod("abort", obj, new string[] { }, new IType[] { });
            defineString();
            obj.DefineMethod("type_name", Context.GetType("String"), new string[] { }, new IType[] { });
            obj.DefineMethod("copy", obj, new string[] { }, new IType[] { });
        }
Пример #2
0
        public void Visit(Method node)
        {
            var retType = Context.GetType(node.ReturnType);

            if (retType == null)
            {
                errorLog.LogError(string.Format(TypeNotExist, node.Line, node.ReturnType));
            }
            var argTypes = node.Arguments.Select(t => Context.GetType(t.Type));

            foreach (var type in argTypes)
            {
                if (type == null)
                {
                    errorLog.LogError(string.Format(TypeNotExist, type));
                }
            }

            var argNames = node.Arguments.Select(t => t.Name);

            if (!currentType.DefineMethod(node.Name, retType, argNames.ToArray(), argTypes.ToArray()))
            {
                errorLog.LogError(string.Format(MethodRedefined, node.Name, currentType.Name));
            }
        }