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())); }
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() ); }
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 ); }
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; }
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; }