Exemple #1
0
        public override void VisitInstantiateClass(InstantiateClass n)
        {
            n.Actuals.Visit(this);
            var info = _typeManager.GetBuilderInfo(n.ClassName);

            _gen.Emit(OpCodes.Newobj, info.ConstructorBuilder.Builder);
            _lastWalkedType = info.Builder;
        }
Exemple #2
0
        private void SetupInternalClass(DeclarationClass n, string name)
        {
            _typeManager.AddClass(n);

            if (name.Equals(ENTRY_POINT, StringComparison.OrdinalIgnoreCase))
            {
                var methodInfo = CreateEntryPointMethod(n, name);
                _gen = methodInfo.Builder.GetILGenerator();

                foreach (var item in Enum.GetNames(typeof(InternalTrancheTypes)))
                {
                    var ident       = new Identifier(n.Location, item);
                    var instantiate = new InstantiateClass(item, new ExpressionList());
                    var assign      = new Assign(ident, instantiate)
                    {
                        InternalType = new TypeClass(item)
                    };

                    VisitAssign(assign);
                }

                _assemblyBuilder.SetEntryPoint(methodInfo.Builder);
            }
            else
            {
                var ctorInfo = CreateInternalClassCtor(n, name);
                _gen = ctorInfo.Builder.GetILGenerator();

                var baseCtor = typeof(object).GetConstructor(Type.EmptyTypes);
                _gen.Emit(OpCodes.Ldarg_0); //this.
                if (baseCtor != null)
                {
                    _gen.Emit(OpCodes.Call, baseCtor);
                }
            }
        }
 public virtual void VisitInstantiateClass(InstantiateClass n)
 {
 }
Exemple #4
0
 public virtual void VisitInstantiateClass(InstantiateClass n)
 {
 }