1. 04 11月, 2014 5 次提交
  2. 03 11月, 2014 2 次提交
  3. 02 11月, 2014 2 次提交
  4. 01 11月, 2014 4 次提交
  5. 31 10月, 2014 5 次提交
    • D
      Bugfix 1068969 - ArgumentOutofRangeException after renaming the namespace in controllers · f29f84c9
      dpoeschl 提交于
      When using Rename Tracking to rename "Abc" to "Abcdef", the RenameTrackingCommitter first rolls back the locally changed identifier, in this case back to "Abc", before calling RenameSymbol. For linked files, the RenameTrackingCommitter was only updating this identifier in the current context document which caused an inconsistent solution to be passed into the Rename API. We now roll back the identifier changes in all linked documents before calling RenameSymbol.
      
      Additionally, the underlying LinkedFileReferenceFinder now defends against inconsistent APIs in the event one is passed in. (changeset 1364246)
      f29f84c9
    • N
    • T
    • N
      Revised(5) Nameof Spec (changeset 1364126) · 36bdd539
      nmgafter 提交于
      36bdd539
    • T
      Hoist all long-lived (user-defined and synthesized) variables to state machine... · 2bfa7040
      TomasMatousek 提交于
      Hoist all long-lived (user-defined and synthesized) variables to state machine fields in debug builds.
      
      In order to provide good debugging experience and enable EnC of async and iterator methods we need to lift locals whose lifetime may span state machine suspension points to fields of the state machine.
      
      For example,
      
      IEnumerable<int> Enumerate() { int x = 1; F(x); yield return 1; }
      
      might be changed to
      
      IEnumerable<int> Enumerate() { int x = 1; F(x); yield return 1; G(x); }
      
      during debugging (or G(x) might just be evaluated in EE while the program is broken on a breakpoint following the yield statement) and thus x has to be hoisted upfront even though it’s lifetime doesn’t cross suspension point in the initial compilation.
      
      In addition to lifting the locals we also need to generate an EnC map for them (syntax offset + debug id + type -> slot index), so that we can reuse the state of existing locals during EnC.
      
      The implementation is similar to unhoisted local variable mapping and exploits an existing notion of “slots” used by the EE to encode local scopes of hoisted variables.
      All hoisted variables are assigned slot indices in a syntax order (just to make it deterministic, the order doesn’t matter). The variables are hoisted to fields with names <>5__N (user-defined – this name pattern is already recognized by both Dev12 and Roslyn EEs) and <>s__N (synthesized). N is a slot number. For these locals we emit EnC custom debug information in the same format as we do for unhoisted locals. We attach this CDI to the iterator/async method.
       (changeset 1364072)
      2bfa7040
  6. 30 10月, 2014 2 次提交
  7. 29 10月, 2014 20 次提交