]> Cypherpunks repositories - gostls13.git/commitdiff
diagnose export of incomplete type
authorRuss Cox <rsc@golang.org>
Thu, 16 Oct 2008 00:51:23 +0000 (17:51 -0700)
committerRuss Cox <rsc@golang.org>
Thu, 16 Oct 2008 00:51:23 +0000 (17:51 -0700)
R=ken
OCL=17253
CL=17253

src/cmd/gc/export.c
test/export.go [new file with mode: 0644]

index 8a6d779be40a4fc0a91e3f22c1aec131e28945d0..c8b50a074ea1429a08ab50e51997d6341a2750f2 100644 (file)
@@ -125,6 +125,13 @@ dumpexporttype(Sym *s)
        Bprint(bout, "\t");
        if(s->export != 0)
                Bprint(bout, "export ");
+       switch (s->otype->etype) {
+       case TFORW:
+       case TFORWSTRUCT:
+       case TFORWINTER:
+               yyerror("export of incomplete type %T", s->otype);
+               return;
+       }
        Bprint(bout, "type %lS %l#T\n",  s, s->otype);
 }
 
diff --git a/test/export.go b/test/export.go
new file mode 100644 (file)
index 0000000..7ac0424
--- /dev/null
@@ -0,0 +1,16 @@
+// Copyright 2009 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// errchk $G $D/$F.go
+
+package main
+
+export type A struct           // ERROR "incomplete"
+export type B interface        // ERROR "incomplete"
+
+export type C struct
+export type D interface
+
+type C struct { }
+type D interface { }