if x != nil && x.tok == Scanner.TYPE || y != nil && y.tok == Scanner.TYPE {
panic("no type expression allowed");
}
- e := new(*Expr);
+ e := new(Expr);
e.pos, e.tok, e.x, e.y = pos, tok, x, y;
return e;
}
export func NewLit(pos, tok int, s string) *Expr {
- e := new(*Expr);
+ e := new(Expr);
e.pos, e.tok, e.s = pos, tok, s;
return e;
}
export func NewType(pos, tok int) *Type {
- t := new(*Type);
+ t := new(Type);
t.pos, t.tok = pos, tok;
return t;
}
// requires complete Type type
export func NewTypeExpr(t *Type) *Expr {
- e := new(*Expr);
+ e := new(Expr);
e.pos, e.tok, e.t = t.pos, Scanner.TYPE, t;
return e;
}
export func NewStat(pos, tok int) *Stat {
- s := new(*Stat);
+ s := new(Stat);
s.pos, s.tok = pos, tok;
return s;
}
export func NewDecl(pos, tok int, exported bool) *Decl {
- d := new(*Decl);
+ d := new(Decl);
d.pos, d.tok, d.exported = pos, tok, exported;
return d;
}
export func NewComment(pos int, text string) *Comment {
- c := new(*Comment);
+ c := new(Comment);
c.pos, c.text = pos, text;
return c;
}
export func NewProgram(pos int) *Program {
- p := new(*Program);
+ p := new(Program);
p.pos = pos;
return p;
}
if nimports > 0 {
print(src_file, ".6:\t");
- localset := new(map [string] bool);
+ localset := make(map [string] bool);
for i := 0; i < nimports; i++ {
decl := prog.decls.At(i).(*AST.Decl);
assert(decl.tok == Scanner.IMPORT && decl.val.tok == Scanner.STRING);
export func ComputeDeps(src_file string, flags *Flags) {
- globalset := new(map [string] bool);
+ globalset := make(map [string] bool);
wset := array.New(0);
wset.Push(src_file);
for wset.Len() > 0 {
export var Universe_void_typ *Type // initialized by Universe to Universe.void_typ
export func NewObject(pos, kind int, ident string) *Object {
- obj := new(*Object);
+ obj := new(Object);
obj.exported = false;
obj.pos = pos;
obj.kind = kind;
export func NewType(form int) *Type {
- typ := new(*Type);
+ typ := new(Type);
typ.ref = -1; // not yet exported
typ.form = form;
return typ;
export func NewPackage(file_name string, obj *Object, scope *Scope) *Package {
- pkg := new(*Package);
+ pkg := new(Package);
pkg.ref = -1; // not yet exported
pkg.file_name = file_name;
pkg.key = "<the package key>"; // empty key means package forward declaration
export func NewScope(parent *Scope) *Scope {
- scope := new(*Scope);
+ scope := new(Scope);
scope.parent = parent;
- scope.entries = new(map[string]*Object, 8);
+ scope.entries = make(map[string]*Object, 8);
return scope;
}
// Object methods
func (obj *Object) Copy() *Object {
- copy := new(*Object);
+ copy := new(Object);
copy.exported = obj.exported;
copy.pos = obj.pos;
copy.kind = obj.kind;
func init() {
- Keywords = new(map [string] int);
+ Keywords = make(map [string] int);
for i := KEYWORDS_BEG + 1; i < KEYWORDS_END; i++ {
Keywords[TokenString(i)] = i;
}
func (S *Scanner) TokenStream() <-chan *Token {
- ch := new(chan *Token, 100);
+ ch := make(chan *Token, 100);
go func(S *Scanner, ch chan <- *Token) {
for {
- t := new(*Token);
+ t := new(Token);
t.pos, t.tok, t.val = S.Scan();
ch <- t;
if t.tok == EOF {