[mcs] Better error reporting for missing types during conversion
authorMarek Safar <masafa@microsoft.com>
Thu, 4 Aug 2016 10:57:12 +0000 (12:57 +0200)
committerMarek Safar <masafa@microsoft.com>
Thu, 4 Aug 2016 10:57:42 +0000 (12:57 +0200)
mcs/mcs/ecore.cs

index 4386f93115a197fe081f0e882270c59d29b42df2..fd5732f7598dd20feea9bb715a99f508dce247ab 100644 (file)
@@ -126,11 +126,12 @@ namespace Mono.CSharp {
        /// <remarks>
        ///   Base class for expressions
        /// </remarks>
-       public abstract class Expression {
+       public abstract class Expression
+       {
                public ExprClass eclass;
                protected TypeSpec type;
                protected Location loc;
-               
+
                public TypeSpec Type {
                        get { return type; }
                        set { type = value; }
@@ -258,7 +259,7 @@ namespace Mono.CSharp {
                {
                        report.Error (201, loc, "Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement");
                }
-               
+
                public void Error_InvalidExpressionStatement (BlockContext bc)
                {
                        Error_InvalidExpressionStatement (bc.Report, loc);
@@ -288,6 +289,10 @@ namespace Mono.CSharp {
                        if (type == InternalType.ErrorType || target == InternalType.ErrorType)
                                return;
 
+                       if (type.MemberDefinition.DeclaringAssembly.IsMissing ||
+                               target.MemberDefinition.DeclaringAssembly.IsMissing)
+                               return;
+
                        string from_type = type.GetSignatureForError ();
                        string to_type = target.GetSignatureForError ();
                        if (from_type == to_type) {