Improve error about indirecting an unsafe.Pointer type.
authorIan Lance Taylor <ian@gcc.gnu.org>
Sun, 27 Mar 2011 16:40:24 +0000 (16:40 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Sun, 27 Mar 2011 16:40:24 +0000 (16:40 +0000)
From-SVN: r171574

gcc/go/gofrontend/expressions.cc

index f1a2ec7cb5537dd7f0af58eb8cb05f64424693a9..3a6005138cdb3e72acb5febd44ffc7046c233325 100644 (file)
@@ -3669,6 +3669,14 @@ Unary_expression::do_lower(Gogo*, Named_object*, int)
        }
     }
 
+  // Catching an invalid indirection of unsafe.Pointer here avoid
+  // having to deal with TYPE_VOID in other places.
+  if (op == OPERATOR_MULT && expr->type()->is_unsafe_pointer_type())
+    {
+      error_at(this->location(), "invalid indirect of %<unsafe.Pointer%>");
+      return Expression::make_error(this->location());
+    }
+
   if (op == OPERATOR_PLUS || op == OPERATOR_MINUS
       || op == OPERATOR_NOT || op == OPERATOR_XOR)
     {