diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-07-23 19:57:22 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-07-23 19:57:22 +0000 |
commit | 0f2be732d964ef89eb268114e4dd8d00130aa29b (patch) | |
tree | 920912335e30f142ac01bae36115e40490d5f0bf | |
parent | 20886e7134bbf98b5cd087e296b581f8e1a42d95 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/parse.cc | 6 |
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; |