aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2015-07-23 19:57:22 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2015-07-23 19:57:22 +0000
commit0f2be732d964ef89eb268114e4dd8d00130aa29b (patch)
tree920912335e30f142ac01bae36115e40490d5f0bf /gcc
parent20886e7134bbf98b5cd087e296b581f8e1a42d95 (diff)
downloadgcc-0f2be732d964ef89eb268114e4dd8d00130aa29b.zip
gcc-0f2be732d964ef89eb268114e4dd8d00130aa29b.tar.gz
gcc-0f2be732d964ef89eb268114e4dd8d00130aa29b.tar.bz2
compiler: Make empty interface types for vars during parse time.
When making the type for a variable with an empty interface type, the parser makes an interface type with a NULL method set and relies on later passes to correct this. For sink variables, which are ignored in later passes, the interface method table is never finalized and a compile time assertion is issued. Instead, the initial type generated by the parser should be the empty interface type. Fixes golang/go#11579. Reviewed-on: https://go-review.googlesource.com/12049 From-SVN: r226123
Diffstat (limited to 'gcc')
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/parse.cc6
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index f189ed8..a7b5246 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-b4a932b4a51b612cadcec93a83f94d6ee7d7d190
+cbb27e8089e11094a20502e53ef69c9c36955f85
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/parse.cc b/gcc/go/gofrontend/parse.cc
index 970e6bd..113371c 100644
--- a/gcc/go/gofrontend/parse.cc
+++ b/gcc/go/gofrontend/parse.cc
@@ -1225,7 +1225,11 @@ Parse::interface_type(bool record)
methods = NULL;
}
- Interface_type* ret = Type::make_interface_type(methods, location);
+ Interface_type* ret;
+ if (methods == NULL)
+ ret = Type::make_empty_interface_type(location);
+ else
+ ret = Type::make_interface_type(methods, location);
if (record)
this->gogo_->record_interface_type(ret);
return ret;