compiler: Tweak untyped nil error message.
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 12 Dec 2013 20:42:24 +0000 (20:42 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 12 Dec 2013 20:42:24 +0000 (20:42 +0000)
From-SVN: r205941

gcc/go/gofrontend/expressions.cc

index 4f9368e..a5a056b 100644 (file)
@@ -7310,7 +7310,11 @@ Builtin_call_expression::do_lower(Gogo* gogo, Named_object* function,
        Type* slice_type = args->front()->type();
        if (!slice_type->is_slice_type())
          {
-           error_at(args->front()->location(), "argument 1 must be a slice");
+           if (slice_type->is_nil_type())
+             error_at(args->front()->location(), "use of untyped nil");
+           else
+             error_at(args->front()->location(),
+                      "argument 1 must be a slice");
            this->set_is_error();
            return this;
          }
@@ -8008,7 +8012,10 @@ Builtin_call_expression::do_type()
        const Expression_list* args = this->args();
        if (args == NULL || args->empty())
          return Type::make_error_type();
-       return args->front()->type();
+       Type *ret = args->front()->type();
+       if (!ret->is_slice_type())
+         return Type::make_error_type();
+       return ret;
       }
 
     case BUILTIN_REAL: