• T
    In C# lowering of async method stored the state machine type on... · 65f24c70
    TomasMatousek 提交于
    In C# lowering of async method stored the state machine type on SourceMethodSymbol so it can later be used when emitting synthesized attributes of the method. This may cause issues when emitting the same compilation twice with different options that affect the state machine type.
         Instead we should store the state machine type to the current PEModuleBuilder. Rather then actually storing it there and adding a dependency on PEModuleBuilder to the attribute generation this change introduces ModuleCompilationState (similar to TypeCompilationState) and threads that one.
         This type is designed to be mutable during compilation (lowering) and immutable during emit. The idea is that all data currently stored in PEModuleBuilder that are produced during compilation and only read in emit could be moved there. Only emit specific data would remain on PEModuleBuilder.
    
         Also refactors Compilation.Compile to remove some duplication and make it cleaner.
     (changeset 1249664)
    65f24c70
CodeAnalysis.csproj 40.5 KB