@@ -810,9 +810,6 @@ func (p *exporter) typ(t *Type) {
810
810
}
811
811
812
812
func (p * exporter ) qualifiedName (sym * Sym ) {
813
- if strings .Contains (sym .Name , "." ) {
814
- Fatalf ("exporter: invalid symbol name: %s" , sym .Name )
815
- }
816
813
p .string (sym .Name )
817
814
p .pkg (sym .Pkg )
818
815
}
@@ -834,7 +831,7 @@ func (p *exporter) fieldList(t *Type) {
834
831
835
832
func (p * exporter ) field (f * Field ) {
836
833
p .pos (f .Nname )
837
- p .fieldName (f . Sym , f )
834
+ p .fieldName (f )
838
835
p .typ (f .Type )
839
836
p .string (f .Note )
840
837
}
@@ -856,37 +853,27 @@ func (p *exporter) methodList(t *Type) {
856
853
857
854
func (p * exporter ) method (m * Field ) {
858
855
p .pos (m .Nname )
859
- p .fieldName (m . Sym , m )
856
+ p .fieldName (m )
860
857
p .paramList (m .Type .Params (), false )
861
858
p .paramList (m .Type .Results (), false )
862
859
}
863
860
864
861
// fieldName is like qualifiedName but it doesn't record the package
865
862
// for blank (_) or exported names.
866
- func (p * exporter ) fieldName (sym * Sym , t * Field ) {
867
- if t != nil && sym != t .Sym {
868
- Fatalf ("exporter: invalid fieldName parameters" )
869
- }
870
-
871
- name := sym .Name
872
- if t != nil {
873
- if t .Embedded == 0 {
874
- name = sym .Name
875
- } else if bname := basetypeName (t .Type ); bname != "" && ! exportname (bname ) {
876
- // anonymous field with unexported base type name: use "?" as field name
877
- // (bname != "" per spec, but we are conservative in case of errors)
878
- name = "?"
879
- } else {
880
- name = ""
881
- }
882
- }
863
+ func (p * exporter ) fieldName (t * Field ) {
864
+ name := t .Sym .Name
883
865
884
- if strings .Contains (name , "." ) {
885
- Fatalf ("exporter: invalid symbol name: %s" , name )
866
+ if t .Embedded != 0 {
867
+ name = "" // anonymous field
868
+ if bname := basetypeName (t .Type ); bname != "" && ! exportname (bname ) {
869
+ // anonymous field with unexported base type name
870
+ name = "?" // unexported name to force export of package
871
+ }
886
872
}
887
873
p .string (name )
888
- if name == "?" || name != "_" && name != "" && ! exportname (name ) {
889
- p .pkg (sym .Pkg )
874
+
875
+ if name != "_" && name != "" && ! exportname (name ) {
876
+ p .pkg (t .Sym .Pkg )
890
877
}
891
878
}
892
879
@@ -895,10 +882,8 @@ func basetypeName(t *Type) string {
895
882
if s == nil && t .IsPtr () {
896
883
s = t .Elem ().Sym // deref
897
884
}
885
+ // s should exist, but be conservative
898
886
if s != nil {
899
- if strings .Contains (s .Name , "." ) {
900
- Fatalf ("exporter: invalid symbol name: %s" , s .Name )
901
- }
902
887
return s .Name
903
888
}
904
889
return ""
0 commit comments