public virtual void Initialize(CompilerContext context)
		{
			_context = context;
			_codeBuilder = new EnvironmentProvision<BooCodeBuilder>();
			_typeSystemServices = new EnvironmentProvision<TypeSystemServices>();
			_nameResolutionService = new EnvironmentProvision<NameResolutionService>();
		}
 public virtual void Initialize(CompilerContext context)
 {
     _context               = context;
     _codeBuilder           = new EnvironmentProvision <BooCodeBuilder>();
     _typeSystemServices    = new EnvironmentProvision <TypeSystemServices>();
     _nameResolutionService = new EnvironmentProvision <NameResolutionService>();
 }
예제 #3
0
 public virtual void Initialize(CompilerContext context)
 {
     if (null == context)
     {
         throw new ArgumentNullException("context");
     }
     _context               = context;
     _typeSystemServices    = new EnvironmentProvision <TypeSystemServices>();
     _nameResolutionService = new EnvironmentProvision <NameResolutionService>();
 }
예제 #4
0
		public override void Initialize(CompilerContext context)
		{
			base.Initialize(context);

			_currentModule = null;
			_currentMethod = null;
			_methodStack = new Stack<InternalMethod>();
			_memberStack = new Stack();
			_callableResolutionService = new EnvironmentProvision<CallableResolutionService>();
			_invocationTypeReferenceRules = new EnvironmentProvision<InvocationTypeInferenceRules>();
			_typeChecker = new EnvironmentProvision<TypeChecker>();
			_methodCache = new EnvironmentProvision<RuntimeMethodCache>();
		}
예제 #5
0
		public void ProvisioningHappensOnDemandAndOnlyOnce()
		{
			var mock = new Mock<IEnvironment>();
			mock.Setup(e => e.Provide<Foo>()).Returns(new Foo()).AtMostOnce();

			var foo = new EnvironmentProvision<Foo>();
			ActiveEnvironment.With(mock.Object, () =>
			{
				var first = foo.Instance;
				var second = foo.Instance;
				Assert.IsNotNull(first);
				Assert.AreSame(first, second);
			});

			mock.VerifyAll();
		}
예제 #6
0
        public void ProvisioningHappensOnDemandAndOnlyOnce()
        {
            var mock = new Mock <IEnvironment>();

            mock.Setup(e => e.Provide <Foo>()).Returns(new Foo()).AtMostOnce();

            var foo = new EnvironmentProvision <Foo>();

            ActiveEnvironment.With(mock.Object, () =>
            {
                var first  = foo.Instance;
                var second = foo.Instance;
                Assert.IsNotNull(first);
                Assert.AreSame(first, second);
            });

            mock.VerifyAll();
        }
예제 #7
0
 public override void Dispose()
 {
     _typeChecker = new EnvironmentProvision <TypeChecker>();
     base.Dispose();
 }
예제 #8
0
        public override void Run()
        {
            NameResolutionService.Reset();

            _currentModule = null;
            _currentMethod = null;
            _methodStack = new Stack();
            _memberStack = new Stack();
            _callableResolutionService = new EnvironmentProvision<CallableResolutionService>();

            InitializeMemberCache();

            Visit(CompileUnit);
        }
 public override void Dispose()
 {
     _methodCache = new EnvironmentProvision<RuntimeMethodCache>();
     base.Dispose();
 }
		public virtual void Initialize(CompilerContext context)
		{
			if (null == context)
				throw new ArgumentNullException("context");
			_context = context;
			_typeSystemServices = new EnvironmentProvision<TypeSystemServices>();
			_nameResolutionService = new EnvironmentProvision<NameResolutionService>();
		}
예제 #11
0
 public override void Initialize(CompilerContext context)
 {
     _methodCache = new EnvironmentProvision <RuntimeMethodCache>();
     base.Initialize(context);
 }
예제 #12
0
		public override void Dispose()
		{
			_typeChecker = new EnvironmentProvision<TypeChecker>();
			base.Dispose();
		}
 public override void Dispose()
 {
     _methodCache = new EnvironmentProvision <RuntimeMethodCache>();
     base.Dispose();
 }