1. 30 8月, 2017 21 次提交
  2. 25 8月, 2017 5 次提交
    • V
      mark a test with [Fact] · a81f1da6
      vsadov 提交于
      a81f1da6
    • V
      fixup after merge · 64f940f4
      vsadov 提交于
      64f940f4
    • V
      merge from master · 1993d900
      vsadov 提交于
      1993d900
    • V
      merge from master · e763d1dc
      vsadov 提交于
      e763d1dc
    • A
      Add fields as members of synthesized structs (#21649) · 8dd264ba
      Andy Gocke 提交于
      In order for EnC and other mechanisms to work we have to add synthesized
      members to a list in the CommonPEModuleBuilder for a compilation (these
      synthesized members are then queried as part of compilation stages).
      If those members are struct fields, we don't add them to the struct
      definition, only to the list of synthesized members. This works for
      emit, since we explicitly emit everything in the synthesized list, but
      it doesn't work for any compiler pass that examines the members of the
      struct for semantically meaningful reasons.
      
      This is the case for the CaptureWalker for async and iterator
      expressions. The walker checks the members of structs when a field of a
      struct is assigned to see if the struct has been assigned piecewise
      (each of its members has been assigned individually). If so, it will
      mark the entire struct as assigned. By not including synthesized fields
      as proper members of the struct type, the assignment pass believes that
      many fields have been assigned that have not, and thus marks the full
      struct as assigned, leading to losing track of variables captured across
      await/yield statements.
      
      This PR fixes the problem by adding the fields to the
      SynthesizedContainer, but exlcuding them from emit, since we should
      continue to use the emit mechanism used for CommonPEModuleBuilder.
      
      Fixes #21409
      8dd264ba
  3. 24 8月, 2017 14 次提交