Пример #1
0
        internal IteratorConstructor(IteratorStateMachine container)
            : base(container)
        {
            var intType = container.DeclaringCompilation.GetSpecialType(SpecialType.System_Int32);

            _parameters = ImmutableArray.Create <ParameterSymbol>(
                SynthesizedParameterSymbol.Create(this, intType, 0, RefKind.None, GeneratedNames.MakeStateMachineStateFieldName()));
        }
Пример #2
0
        protected override void GenerateControlFields()
        {
            this.stateField = F.StateMachineField(
                F.SpecialType(SpecialType.System_Int32),
                GeneratedNames.MakeStateMachineStateFieldName()
                );

            // Add a field: T current
            _currentField = F.StateMachineField(
                _elementType,
                GeneratedNames.MakeIteratorCurrentFieldName()
                );
        }
Пример #3
0
        protected override void GenerateControlFields()
        {
            // the fields are initialized from async method, so they need to be public:

            this.stateField = F.StateMachineField(
                F.SpecialType(SpecialType.System_Int32),
                GeneratedNames.MakeStateMachineStateFieldName(),
                isPublic: true
                );
            _builderField = F.StateMachineField(
                _asyncMethodBuilderMemberCollection.BuilderType,
                GeneratedNames.AsyncBuilderFieldName(),
                isPublic: true
                );
        }
Пример #4
0
        protected override void GenerateControlFields()
        {
            this.stateField = F.StateMachineField(F.SpecialType(SpecialType.System_Int32), GeneratedNames.MakeStateMachineStateFieldName());

            // Add a field: T current
            _currentField = F.StateMachineField(_elementType, GeneratedNames.MakeIteratorCurrentFieldName());

            // if it is an enumerable, and either Environment.CurrentManagedThreadId or System.Thread are available
            // add a field: int initialThreadId
            bool addInitialThreadId =
                _isEnumerable &&
                ((object)F.WellKnownMember(WellKnownMember.System_Threading_Thread__ManagedThreadId, isOptional: true) != null ||
                 (object)F.WellKnownMember(WellKnownMember.System_Environment__CurrentManagedThreadId, isOptional: true) != null);

            _initialThreadIdField = addInitialThreadId
                ? F.StateMachineField(F.SpecialType(SpecialType.System_Int32), GeneratedNames.MakeIteratorCurrentThreadIdFieldName())
                : null;
        }
Пример #5
0
        protected override void GenerateControlFields()
        {
            this.stateField = F.StateMachineField(F.SpecialType(SpecialType.System_Int32), GeneratedNames.MakeStateMachineStateFieldName());

            // Add a field: T current
            _currentField = F.StateMachineField(_elementType, GeneratedNames.MakeIteratorCurrentFieldName());

            // if it is an enumerable, and either Environment.CurrentManagedThreadId or Thread.ManagedThreadId are available
            // add a field: int initialThreadId
            bool addInitialThreadId = _isEnumerable && CanGetThreadId();

            _initialThreadIdField = addInitialThreadId
                ? F.StateMachineField(F.SpecialType(SpecialType.System_Int32), GeneratedNames.MakeIteratorCurrentThreadIdFieldName())
                : null;
        }