- switch to new export syntax
- deprecate old syntax in this front-end (use -6g for compatibility)
R=r
OCL=13831
CL=13833
diff --git a/usr/gri/gosrc/ast.go b/usr/gri/gosrc/ast.go
index 70c1ecb..8b565e5 100644
--- a/usr/gri/gosrc/ast.go
+++ b/usr/gri/gosrc/ast.go
@@ -11,8 +11,7 @@
// ----------------------------------------------------------------------------
// Expressions
-export BinaryExpr
-type BinaryExpr struct {
+export type BinaryExpr struct {
typ_ *Globals.Type;
op int;
x, y Globals.Expr;
@@ -28,14 +27,12 @@
// ----------------------------------------------------------------------------
// Statements
-export Block
-type Block struct {
+export type Block struct {
// TODO fill in
}
-export IfStat
-type IfStat struct {
+export type IfStat struct {
cond Globals.Expr;
then_ Globals.Stat;
else_ Globals.Stat;
diff --git a/usr/gri/gosrc/base.go b/usr/gri/gosrc/base.go
index 0fb95a7..e7a14c8 100755
--- a/usr/gri/gosrc/base.go
+++ b/usr/gri/gosrc/base.go
@@ -6,14 +6,12 @@
package base
-type Foo int
+export type Foo int
-type Bar *float;
+export type Bar *float;
-type Node struct {
+export type Node struct {
left, right *Node;
val bool;
f Foo
}
-
-export Foo, Bar, Node
diff --git a/usr/gri/gosrc/compilation.go b/usr/gri/gosrc/compilation.go
index ec404de..dd10471 100644
--- a/usr/gri/gosrc/compilation.go
+++ b/usr/gri/gosrc/compilation.go
@@ -17,8 +17,7 @@
import Verifier "verifier"
-export Compile
-func Compile(comp *Globals.Compilation, file_name string) {
+export func Compile(comp *Globals.Compilation, file_name string) {
src, ok := sys.readfile(file_name);
if !ok {
print "cannot open ", file_name, "\n"
diff --git a/usr/gri/gosrc/decls.go b/usr/gri/gosrc/decls.go
index cf95537..01895e9 100755
--- a/usr/gri/gosrc/decls.go
+++ b/usr/gri/gosrc/decls.go
@@ -9,28 +9,32 @@
import "base"
import base2 "base"
-const c0 int = 0
-const c1 float = 1.
+export const c0 int = 0
+export const c1 float = 1.
const (
- c2 byte = 2;
- c3 int = 3;
- c4 float = 4.;
+ c2 byte = 2;
+ c3 int = 3;
+ c4 float = 4.;
)
-type Node0 base.Node
-type Node1 *base2.Node
+export type (
+ Node0 base.Node
+ Node1 *base2.Node
+)
-type T0 byte
-type T1 T0
+export type T0 byte
+export type T1 T0
type (
- T2 [10]T0;
- T3 map [string] int;
- T4 struct {
- f1, f2, f3 int;
- f4 [] float;
- };
- T5 *T4;
+ T2 [10]T0;
+ T3 map [string] int;
+)
+export type T4 struct {
+ f1, f2, f3 int;
+ f4 [] float;
+};
+type (
+ T5 *T4;
)
type F0 func ()
@@ -42,67 +46,67 @@
type F6 func (a int, b float) bool
type F7 func (a int, b float, c, d *bool) bool
+export type M0 func (p T5) . ();
type (
- M0 func (p T5) . ();
- M1 func (p T5) . (a int);
- M2 func (p T5) . (a, b int, c float);
- M3 func (p T5) . () bool;
- M4 func (p T5) . (a int) (z T5, ok bool);
- M5 func (p T5) . (a, b int, c float) (z T5, ok bool);
+ M1 func (p T5) . (a int);
+ M2 func (p T5) . (a, b int, c float);
+ M3 func (p T5) . () bool;
+ M4 func (p T5) . (a int) (z T5, ok bool);
)
+export type M5 func (p T5) . (a, b int, c float) (z T5, ok bool);
type T6 chan int
type T7 chan<- *T6
type T8 chan-< *T6
type T9 struct {
- p *T9;
- q [] *map [int] *T9;
- f *func(x, y *T9) *T9;
+ p *T9;
+ q [] *map [int] *T9;
+ f *func(x, y *T9) *T9;
}
type T10;
type T11 struct {
- p *T10;
+ p *T10;
}
type T10 struct {
- p *T11;
+ p *T11;
}
type T12 struct {
- p *T12
+ p *T12
}
type I0 interface {}
type I1 interface {
- Do0(q *I0);
- Do1(p *I1) bool;
+ Do0(q *I0);
+ Do1(p *I1) bool;
}
-type I2 interface {
- M0();
- M1(a int);
- M2(a, b int, c float);
- M3() bool;
- M4(a int) (z T5, ok bool);
- M5(a, b int, c float) (z T5, ok bool);
+export type I2 interface {
+ M0();
+ M1(a int);
+ M2(a, b int, c float);
+ M3() bool;
+ M4(a int) (z T5, ok bool);
+ M5(a, b int, c float) (z T5, ok bool);
}
var v0 int
var v1 float = c1
-var (
- v2 T2;
- v3 struct {
- f1, f2, f3 *M0;
- }
+export var (
+ v2 T2;
+ v3 struct {
+ f1, f2, f3 *M0;
+ }
)
-func f0() {}
-func f1(a int) {}
+export func f0() {}
+export func f1(a int) {}
func f2(a, b int, c float) {}
func f3() bool { return false; }
func f4(a int) (z T5, ok bool) {}
@@ -118,9 +122,5 @@
func (p *T4) m3() bool { return false; }
func (p *T4) m4(a int) (z T5, ok bool) { return; }
func (p *T4) m5(a, b int, c float) (z T5, ok bool) {
- L: var x = a;
+ L: var x = a;
}
-
-export c0, c1, v2, v3
-export T0, T1, T4, T4, T4, M0, M5, I2, f0, f1
-export Node0, Node1
diff --git a/usr/gri/gosrc/export.go b/usr/gri/gosrc/export.go
index 6d6767b..3a0a6bf 100755
--- a/usr/gri/gosrc/export.go
+++ b/usr/gri/gosrc/export.go
@@ -282,8 +282,7 @@
}
-export Export
-func Export(comp* Globals.Compilation, pkg_name string) {
+export func Export(comp* Globals.Compilation, pkg_name string) {
var E Exporter;
(&E).Export(comp, Utils.FixExt(Utils.BaseName(pkg_name)));
}
diff --git a/usr/gri/gosrc/globals.go b/usr/gri/gosrc/globals.go
index 6c01660..81e24aa 100644
--- a/usr/gri/gosrc/globals.go
+++ b/usr/gri/gosrc/globals.go
@@ -103,8 +103,7 @@
export var Universe_undef_t *Type // initialized by Universe to Universe.undef_t
-export NewObject
-func NewObject(pos, kind int, ident string) *Object {
+export func NewObject(pos, kind int, ident string) *Object {
obj := new(Object);
obj.exported = false;
obj.pos = pos;
@@ -116,8 +115,7 @@
}
-export NewType
-func NewType(form int) *Type {
+export func NewType(form int) *Type {
typ := new(Type);
typ.ref = -1; // not yet exported
typ.form = form;
@@ -125,8 +123,7 @@
}
-export NewPackage;
-func NewPackage(file_name string, obj *Object, scope *Scope) *Package {
+export func NewPackage(file_name string, obj *Object, scope *Scope) *Package {
pkg := new(Package);
pkg.ref = -1; // not yet exported
pkg.file_name = file_name;
@@ -137,14 +134,12 @@
}
-export NewList
-func NewList() *List {
+export func NewList() *List {
return new(List);
}
-export NewScope
-func NewScope(parent *Scope) *Scope {
+export func NewScope(parent *Scope) *Scope {
scope := new(Scope);
scope.parent = parent;
scope.entries = NewList();
@@ -152,8 +147,7 @@
}
-export NewCompilation;
-func NewCompilation(flags *Flags) *Compilation {
+export func NewCompilation(flags *Flags) *Compilation {
comp := new(Compilation);
comp.flags = flags;
return comp;
diff --git a/usr/gri/gosrc/import.go b/usr/gri/gosrc/import.go
index a2cfa21..920b98b 100755
--- a/usr/gri/gosrc/import.go
+++ b/usr/gri/gosrc/import.go
@@ -306,8 +306,7 @@
}
-export Import
-func Import(comp* Globals.Compilation, pkg_name string) *Globals.Package {
+export func Import(comp* Globals.Compilation, pkg_name string) *Globals.Package {
var I Importer;
return (&I).Import(comp, Utils.FixExt(pkg_name));
}
diff --git a/usr/gri/gosrc/object.go b/usr/gri/gosrc/object.go
index 54ccb12..5bd2a6b 100755
--- a/usr/gri/gosrc/object.go
+++ b/usr/gri/gosrc/object.go
@@ -19,8 +19,7 @@
// globals.go.
-export KindStr
-func KindStr(kind int) string {
+export func KindStr(kind int) string {
switch kind {
case BAD: return "BAD";
case CONST: return "CONST";
diff --git a/usr/gri/gosrc/parser.go b/usr/gri/gosrc/parser.go
index a19bd14..10a0563 100644
--- a/usr/gri/gosrc/parser.go
+++ b/usr/gri/gosrc/parser.go
@@ -14,8 +14,7 @@
import AST "ast"
-export Parser
-type Parser struct {
+export type Parser struct {
comp *Globals.Compilation;
semantic_checks bool;
verbose, indent int;
@@ -1796,9 +1795,14 @@
func (P *Parser) ParseExportDecl() {
P.Trace("ExportDecl");
- // TODO this needs to be clarified - the current syntax is
- // "everything goes" - sigh...
+ // TODO This is deprecated syntax and should go away eventually.
+ // (Also at the moment the syntax is everything goes...)
//P.Expect(Scanner.EXPORT);
+
+ if !P.comp.flags.sixg {
+ P.Error(P.pos, "deprecated export syntax (use -6g to enable)");
+ }
+
has_paren := false;
if P.tok == Scanner.LPAREN {
P.Next();
diff --git a/usr/gri/gosrc/printer.go b/usr/gri/gosrc/printer.go
index 7fd2ab9..d4b3779 100755
--- a/usr/gri/gosrc/printer.go
+++ b/usr/gri/gosrc/printer.go
@@ -259,8 +259,7 @@
}
-export PrintObject
-func PrintObject(comp *Globals.Compilation, obj *Globals.Object, print_all bool) {
+export func PrintObject(comp *Globals.Compilation, obj *Globals.Object, print_all bool) {
var P Printer;
(&P).Init(comp, print_all);
(&P).PrintObjectStruct(obj);
diff --git a/usr/gri/gosrc/scanner.go b/usr/gri/gosrc/scanner.go
index d8a15af..8298b8b 100644
--- a/usr/gri/gosrc/scanner.go
+++ b/usr/gri/gosrc/scanner.go
@@ -111,8 +111,7 @@
var VerboseMsgs bool; // error message customization
-export TokenName
-func TokenName(tok int) string {
+export func TokenName(tok int) string {
switch (tok) {
case ILLEGAL: return "illegal";
case EOF: return "eof";
diff --git a/usr/gri/gosrc/type.go b/usr/gri/gosrc/type.go
index 27801a0..1f8a0b1 100644
--- a/usr/gri/gosrc/type.go
+++ b/usr/gri/gosrc/type.go
@@ -27,8 +27,7 @@
// globals.go.
-export FormStr
-func FormStr(form int) string {
+export func FormStr(form int) string {
switch form {
case UNDEF: return "UNDEF";
case BAD: return "BAD";
diff --git a/usr/gri/gosrc/universe.go b/usr/gri/gosrc/universe.go
index 101c42a..0de2c69 100755
--- a/usr/gri/gosrc/universe.go
+++ b/usr/gri/gosrc/universe.go
@@ -9,24 +9,7 @@
import Type "type"
-export
- scope,
- types,
- undef_t, bad_t, nil_t,
- bool_t,
- uint8_t, uint16_t, uint32_t, uint64_t,
- int8_t, int16_t, int32_t, int64_t,
- float32_t, float64_t, float80_t,
- string_t, any_t,
- byte_t,
- ushort_t, uint_t, ulong_t,
- short_t, int_t, long_t,
- float_t, double_t,
- ptrint_t,
- true_, false_
-
-
-var (
+export var (
scope *Globals.Scope;
types *Globals.List;
diff --git a/usr/gri/gosrc/utils.go b/usr/gri/gosrc/utils.go
index bbf5039..2dcd84a 100644
--- a/usr/gri/gosrc/utils.go
+++ b/usr/gri/gosrc/utils.go
@@ -5,8 +5,7 @@
package Utils
-export BaseName
-func BaseName(s string) string {
+export func BaseName(s string) string {
// TODO this is not correct for non-ASCII strings!
i := len(s) - 1;
for i >= 0 && s[i] != '/' {
@@ -19,8 +18,7 @@
}
-export FixExt
-func FixExt(s string) string {
+export func FixExt(s string) string {
i := len(s) - 3; // 3 == len(".go");
if i >= 0 && s[i : len(s)] == ".go" {
s = s[0 : i];
@@ -29,8 +27,7 @@
}
-export GetEnv
-func GetEnv(key string) string {
+export func GetEnv(key string) string {
n := len(key);
for i := 0; i < sys.envc(); i++ {
v := sys.envv(i);
diff --git a/usr/gri/gosrc/verifier.go b/usr/gri/gosrc/verifier.go
index 9aef517..af4eca1 100644
--- a/usr/gri/gosrc/verifier.go
+++ b/usr/gri/gosrc/verifier.go
@@ -104,8 +104,7 @@
}
-export Verify
-func Verify(comp *Globals.Compilation) {
+export func Verify(comp *Globals.Compilation) {
for i := 0; i < comp.pkg_ref; i++ {
VerifyPackage(comp.pkg_list[i], i);
}