Skip to content

Commit

Permalink
compiler: Make empty interface types for vars during parse time.
Browse files Browse the repository at this point in the history
    
    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


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226123 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
ian committed Jul 23, 2015
1 parent 7661d70 commit bf65976
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
2 changes: 1 addition & 1 deletion gcc/go/gofrontend/MERGE
Original file line number Diff line number Diff line change
@@ -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.
6 changes: 5 additions & 1 deletion gcc/go/gofrontend/parse.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit bf65976

Please sign in to comment.