This patch from Rémy Oudompheng avoids a Go frontend crash on the valid Go code
package p var v struct{ I } type I interface{} Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline and 4.7 branch. Ian
diff -r 652c8036e264 go/gogo.cc --- a/go/gogo.cc Wed Mar 28 14:32:28 2012 -0700 +++ b/go/gogo.cc Wed Mar 28 15:12:54 2012 -0700 @@ -1653,8 +1653,12 @@ } case Type::TYPE_STRUCT: + // Traverse the field types first in case there is an embedded + // field with methods that the struct should inherit. + if (t->struct_type()->traverse_field_types(this) == TRAVERSE_EXIT) + return TRAVERSE_EXIT; t->struct_type()->finalize_methods(this->gogo_); - break; + return TRAVERSE_SKIP_COMPONENTS; default: break;