-
Notifications
You must be signed in to change notification settings - Fork 123
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
When the assembly reference set for the compilation is incomplete, some nterfaces to types relevant to compilation may lie in assemblies outside the assembly reference set. This applies particularly to private ("internals visible to") interfaces found in .NET assemblies. This causes very substantial usability bugs in practice as various parts of type inference and other checking "give up" when you get this condition. The C# compiler doesn't give up in the same way. In most cases it is reasonable to simply skip interfaces-that-lie-outside-the- set-of-referenced-assemblies during F# compilation. Skipping unresolvable interfaces is pretty much harmless: any substantive analysis on the interface type (such as implementing it) will require the assembly holding the interface type. There are some exceptions: if an interface I1 lies outside the referenceable set and you try to implement I2 inheriting from I1 then we'd better not skip I1. Indeed if you even try to find the methods on I2 then we'd better not skip I1. These are covered by "FoldPrimaryHierarchyOfType" in the code. fixes #337 closes #356 commit dd5205c769828e2e16e736c126cb62d68e7beb87 Author: Don Syme <[email protected]> Date: Thu Apr 23 23:53:59 2015 +0100 add test case commit db28771c75d022247dee6dea60a89b8c29fab4b5 Author: Don Syme <[email protected]> Date: Fri Apr 10 12:18:50 2015 +0200 skip unloadable interfaces (2) commit 18a47124480efdf58a75ce2fa7273c6f7550c1c0 Author: Don Syme <[email protected]> Date: Fri Apr 10 11:53:39 2015 +0200 skip unloadable interfaces
- Loading branch information
Showing
8 changed files
with
86 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
namespace Library2 | ||
|
||
open System | ||
open System.Data | ||
|
||
module M = | ||
let dataset = new DataSet("test add reference") | ||
Console.WriteLine(dataset.DataSetName) | ||
Console.ReadKey(true) |