Imported Upstream version 4.6.1.3

Former-commit-id: a3e5816ec0030ec68ca623935b6704cc0369f223
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2016-09-28 13:11:46 +00:00
parent a306c5803a
commit b7d1d80bf3
38 changed files with 3749 additions and 245 deletions

View File

@@ -109,7 +109,6 @@ namespace Mono.CSharp
var imported = MemberDefinition as ImportedTypeDefinition;
if (imported != null && Kind != MemberKind.MissingType)
imported.DefineInterfaces (this);
}
return ifaces;
@@ -1603,6 +1602,12 @@ namespace Mono.CSharp
public TypeSpec Element { get; private set; }
public override IList<TypeSpec> Interfaces {
set {
throw new NotSupportedException ();
}
}
bool ITypeDefinition.IsComImport {
get {
return false;
@@ -1777,13 +1782,19 @@ namespace Mono.CSharp
readonly int rank;
readonly ModuleContainer module;
private ArrayContainer (ModuleContainer module, TypeSpec element, int rank)
ArrayContainer (ModuleContainer module, TypeSpec element, int rank)
: base (MemberKind.ArrayType, element, null)
{
this.module = module;
this.rank = rank;
}
public override IList<TypeSpec> Interfaces {
get {
return BaseType.Interfaces;
}
}
public int Rank {
get {
return rank;
@@ -1926,7 +1937,6 @@ namespace Mono.CSharp
if (!module.ArrayTypesCache.TryGetValue (key, out ac)) {
ac = new ArrayContainer (module, element, rank);
ac.BaseType = module.Compiler.BuiltinTypes.Array;
ac.Interfaces = ac.BaseType.Interfaces;
module.ArrayTypesCache.Add (key, ac);
}
@@ -1942,11 +1952,17 @@ namespace Mono.CSharp
class ReferenceContainer : ElementTypeSpec
{
private ReferenceContainer (TypeSpec element)
ReferenceContainer (TypeSpec element)
: base (MemberKind.Class, element, null) // TODO: Kind.Class is most likely wrong
{
}
public override IList<TypeSpec> Interfaces {
get {
return null;
}
}
public override MetaType GetMetaInfo ()
{
if (info == null) {
@@ -1977,6 +1993,12 @@ namespace Mono.CSharp
state &= ~StateFlags.CLSCompliant_Undetected;
}
public override IList<TypeSpec> Interfaces {
get {
return null;
}
}
public override MetaType GetMetaInfo ()
{
if (info == null) {