1. 18 9月, 2019 1 次提交
  2. 17 9月, 2019 5 次提交
    • T
      Reuse previously resolved missing assembly metadata objects when identity doesn't match (#38550) · ec85a192
      Tomáš Matoušek 提交于
      * Misc cleanup
      
      * Reuse previously resolved missing assembly metadata objects when identity doesn't match
      
      Background
      When the compiler is resolving compilation references and encounters a reference whose assembly identity does not match any of the explicitly given references it falls back to a Reference Resolver. In regular compilation an error is reported since there is no Reference Resolver. Interactive compiler supplies a resolver that attempts to find the missing reference.
      
      Once the missing reference is found the compiler adds it to the list of implicitly resolved assemblies and if the same missing assembly identity is referenced later (by a subsequent submission) it reuses the assembly symbol from this list, so that we don't end up loading multiple instances of the same missing assembly. [1]
      
      The resolver may find an assembly that matches the name of the missing reference but doesn't match the version exactly. This is expected as a newer version of the assembly may be available than was referenced and the compiler correctly binds to the newer version.
      
      Issues
      The first submission added a reference to a netstandard20 library on .NET Core and the subsequent submission referenced a type from that library. The reference resolution in the compilation corresponding to the second submission ended up adding a new, distinct reference to the library, instead of reusing the one that was already resolved for the first submission compilation.
      
      This was caused by mismatch in versions of some of the facades transitively referenced by the library thru netstandard.dll reference and resolved thru the missing reference resolution mechanism. The facades ware referenced with different versions than the actual versions available in the set of references the Reference Resolver resolved missing references from. The compiler ended up using two distinct instances of the same facade assembly metadata. An assembly symbol is only reused if all its transitively referenced assemblies match. In this case the library assembly symbol wasn't reused because some of the facade assembly symbols did not match.
      
      The problem was that the mechanism [1] didn't reuse missing assembly metadata with a different version than what was requested. The fix is to check whether we have seen an assembly with the resolved identity in addition to the requested identity.
      
      Another issue found during testing is handing resolution failures. We did not remember that a resolution of a given assembly identity failed and attempted to resolve the assembly again in the next submission. This may lead to inconsistencies and the same "can't convert T to T" errors since first submission might have a missing assembly symbol and next might create a real assembly symbol for the same assembly identity. The fix is to capture both successful and failed resolution results.
      
      * Do not add resolved identity entry to implicit reference resolutions
      ec85a192
    • M
      Merge pull request #38703 from mavasani/BumpUpFlowAnalysisUtilitiesVersion · 42d4dd79
      Manish Vasani 提交于
      Bump up flow analysis utilities version
      42d4dd79
    • D
      Update dependencies from https://github.com/dotnet/arcade build 20190913.3 (#38696) · 619fd0e6
      dotnet-maestro[bot] 提交于
      - Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19463.3
      619fd0e6
    • J
      Merge pull request #37148 from lgolding/users/lgolding/sarif-v2.1.0 · f877c655
      Jared Parsons 提交于
      Issue #31417: Add SARIF v2.1.0 support
      f877c655
    • M
      Bump up flow analysis utilities version · bc0d12de
      Manish Vasani 提交于
      Use the latest flow analysis utilities package
      bc0d12de
  3. 15 9月, 2019 2 次提交
  4. 14 9月, 2019 4 次提交
  5. 13 9月, 2019 18 次提交
  6. 12 9月, 2019 10 次提交