From 5f6c88358173a14035c34918c8585f155f180e34 Mon Sep 17 00:00:00 2001 From: ian Date: Tue, 29 Nov 2011 07:03:49 +0000 Subject: [PATCH] Implement predefined error interface. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181798 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/gogo.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc index e20063b817f..45fb938f874 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -97,6 +97,18 @@ Gogo::Gogo(Backend* backend, int int_type_size, int pointer_size) this->add_named_type(Type::make_named_string_type()); + // "error" is interface { Error() string }. + { + Typed_identifier_list *methods = new Typed_identifier_list; + Typed_identifier_list *results = new Typed_identifier_list; + results->push_back(Typed_identifier("", Type::lookup_string_type(), loc)); + Type *method_type = Type::make_function_type(NULL, NULL, results, loc); + methods->push_back(Typed_identifier("Error", method_type, loc)); + Type *error_iface = Type::make_interface_type(methods, loc); + Named_type *error_type = Named_object::make_type("error", NULL, error_iface, loc)->type_value(); + this->add_named_type(error_type); + } + this->globals_->add_constant(Typed_identifier("true", Type::make_boolean_type(), loc), -- 2.11.0