You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.165
Former-commit-id: d509131f71da404210981e7263b375675928eea7
This commit is contained in:
parent
b95516a3dd
commit
c911219690
@@ -45,18 +45,16 @@ namespace Mono.CSharp
|
||||
bool IsFriendAssemblyTo (IAssemblyDefinition assembly);
|
||||
}
|
||||
|
||||
public class AssemblyReferenceErrorInfo
|
||||
public class AssemblyReferenceMessageInfo
|
||||
{
|
||||
public AssemblyReferenceErrorInfo (AssemblyName dependencyName, string location, string message)
|
||||
public AssemblyReferenceMessageInfo (AssemblyName dependencyName, Action<Report> reportMessage)
|
||||
{
|
||||
this.DependencyName = dependencyName;
|
||||
this.RequestingAssemblyLocation = location;
|
||||
this.Message = message;
|
||||
this.ReportMessage = reportMessage;
|
||||
}
|
||||
|
||||
public AssemblyName DependencyName { get; private set; }
|
||||
public string RequestingAssemblyLocation { get; private set; }
|
||||
public string Message { get; private set; }
|
||||
public Action<Report> ReportMessage { get; private set; }
|
||||
}
|
||||
|
||||
public abstract class AssemblyDefinition : IAssemblyDefinition
|
||||
@@ -456,8 +454,7 @@ namespace Mono.CSharp
|
||||
// due to type-forwarding
|
||||
//
|
||||
if (references.Any (l => l.Name == r.DependencyName.Name)) {
|
||||
Report.SymbolRelatedToPreviousError (r.RequestingAssemblyLocation);
|
||||
Report.Error (1705, r.Message);
|
||||
r.ReportMessage (Report);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -592,7 +589,7 @@ namespace Mono.CSharp
|
||||
return public_key_token;
|
||||
}
|
||||
|
||||
protected virtual List<AssemblyReferenceErrorInfo> GetNotUnifiedReferences (AssemblyName assemblyName)
|
||||
protected virtual List<AssemblyReferenceMessageInfo> GetNotUnifiedReferences (AssemblyName assemblyName)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -2547,7 +2547,7 @@ namespace Mono.CSharp
|
||||
id_builder [pos] = (char)c;
|
||||
|
||||
if (c >= '0' && c <= '9') {
|
||||
if (pos == 6 && id_builder [0] == 'C' && id_builder [1] == 'S') {
|
||||
if (pos == 5 && id_builder [0] == 'C' && id_builder [1] == 'S') {
|
||||
// Recognize CSXXXX as C# XXXX warning
|
||||
number = 0;
|
||||
int pow = 1000;
|
||||
|
||||
@@ -220,7 +220,7 @@ namespace Mono.CSharp
|
||||
return Builder.__AddModule (moduleFile);
|
||||
}
|
||||
|
||||
protected override List<AssemblyReferenceErrorInfo> GetNotUnifiedReferences (AssemblyName assemblyName)
|
||||
protected override List<AssemblyReferenceMessageInfo> GetNotUnifiedReferences (AssemblyName assemblyName)
|
||||
{
|
||||
return loader.GetNotUnifiedReferences (assemblyName);
|
||||
}
|
||||
@@ -238,7 +238,7 @@ namespace Mono.CSharp
|
||||
Assembly corlib;
|
||||
readonly List<Tuple<AssemblyName, string, Assembly>> loaded_names;
|
||||
static readonly Dictionary<string, string[]> sdk_directory;
|
||||
Dictionary<AssemblyName, List<AssemblyReferenceErrorInfo>> resolved_version_mismatches;
|
||||
Dictionary<AssemblyName, List<AssemblyReferenceMessageInfo>> resolved_version_mismatches;
|
||||
|
||||
static StaticLoader ()
|
||||
{
|
||||
@@ -363,33 +363,30 @@ namespace Mono.CSharp
|
||||
var v2 = version_mismatch.GetName ().Version;
|
||||
|
||||
if (v1 > v2) {
|
||||
if (resolved_version_mismatches == null)
|
||||
resolved_version_mismatches = new Dictionary<AssemblyName, List<AssemblyReferenceErrorInfo>> ();
|
||||
|
||||
var an = args.RequestingAssembly.GetName ();
|
||||
List<AssemblyReferenceErrorInfo> names;
|
||||
if (!resolved_version_mismatches.TryGetValue (an, out names)) {
|
||||
names = new List<AssemblyReferenceErrorInfo> ();
|
||||
resolved_version_mismatches.Add (an, names);
|
||||
}
|
||||
|
||||
names.Add (new AssemblyReferenceErrorInfo (ref_an, args.RequestingAssembly.Location,
|
||||
string.Format ("Assembly `{0}' depends on `{1}' which has a higher version number than referenced assembly `{2}'",
|
||||
args.RequestingAssembly.FullName, refname, version_mismatch.GetName ().FullName)));
|
||||
var messageInfo = new AssemblyReferenceMessageInfo (ref_an, report => {
|
||||
report.SymbolRelatedToPreviousError (args.RequestingAssembly.Location);
|
||||
report.Error (1705, string.Format ("Assembly `{0}' depends on `{1}' which has a higher version number than referenced assembly `{2}'",
|
||||
args.RequestingAssembly.FullName, refname, version_mismatch.GetName ().FullName));
|
||||
});
|
||||
|
||||
AddReferenceVersionMismatch (args.RequestingAssembly.GetName (), messageInfo);
|
||||
return version_mismatch;
|
||||
}
|
||||
|
||||
if (!is_fx_assembly) {
|
||||
if (v1.Major != v2.Major || v1.Minor != v2.Minor) {
|
||||
compiler.Report.Warning (1701, 2,
|
||||
"Assuming assembly reference `{0}' matches assembly `{1}'. You may need to supply runtime policy",
|
||||
refname, version_mismatch.GetName ().FullName);
|
||||
} else {
|
||||
compiler.Report.Warning (1702, 3,
|
||||
"Assuming assembly reference `{0}' matches assembly `{1}'. You may need to supply runtime policy",
|
||||
refname, version_mismatch.GetName ().FullName);
|
||||
}
|
||||
var messageInfo = new AssemblyReferenceMessageInfo (ref_an, report => {
|
||||
if (v1.Major != v2.Major || v1.Minor != v2.Minor) {
|
||||
report.Warning (1701, 2,
|
||||
"Assuming assembly reference `{0}' matches assembly `{1}'. You may need to supply runtime policy",
|
||||
refname, version_mismatch.GetName ().FullName);
|
||||
} else {
|
||||
report.Warning (1702, 3,
|
||||
"Assuming assembly reference `{0}' matches assembly `{1}'. You may need to supply runtime policy",
|
||||
refname, version_mismatch.GetName ().FullName);
|
||||
}
|
||||
});
|
||||
|
||||
AddReferenceVersionMismatch (args.RequestingAssembly.GetName (), messageInfo);
|
||||
}
|
||||
|
||||
return version_mismatch;
|
||||
@@ -408,6 +405,20 @@ namespace Mono.CSharp
|
||||
return domain.CreateMissingAssembly (args.Name);
|
||||
}
|
||||
|
||||
void AddReferenceVersionMismatch (AssemblyName an, AssemblyReferenceMessageInfo errorInfo)
|
||||
{
|
||||
if (resolved_version_mismatches == null)
|
||||
resolved_version_mismatches = new Dictionary<AssemblyName, List<AssemblyReferenceMessageInfo>> ();
|
||||
|
||||
List<AssemblyReferenceMessageInfo> names;
|
||||
if (!resolved_version_mismatches.TryGetValue (an, out names)) {
|
||||
names = new List<AssemblyReferenceMessageInfo> ();
|
||||
resolved_version_mismatches.Add (an, names);
|
||||
}
|
||||
|
||||
names.Add (errorInfo);
|
||||
}
|
||||
|
||||
public void Dispose ()
|
||||
{
|
||||
domain.Dispose ();
|
||||
@@ -432,9 +443,9 @@ namespace Mono.CSharp
|
||||
return default_references.ToArray ();
|
||||
}
|
||||
|
||||
public List<AssemblyReferenceErrorInfo> GetNotUnifiedReferences (AssemblyName assemblyName)
|
||||
public List<AssemblyReferenceMessageInfo> GetNotUnifiedReferences (AssemblyName assemblyName)
|
||||
{
|
||||
List<AssemblyReferenceErrorInfo> list = null;
|
||||
List<AssemblyReferenceMessageInfo> list = null;
|
||||
if (resolved_version_mismatches != null)
|
||||
resolved_version_mismatches.TryGetValue (assemblyName, out list);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user