");
}
func (P *Printer) DoImportDecl(d *ast.ImportDecl) {
- if d.Pos > 0 {
- P.Token(d.Pos, token.IMPORT);
+ if d.Loc.Pos > 0 {
+ P.Token(d.Loc, token.IMPORT);
P.separator = blank;
}
if d.Ident != nil {
P.Expr(d.Ident);
} else {
- P.String(d.Path.Pos(), ""); // flush pending ';' separator/newlines
+ P.String(d.Path.Loc(), ""); // flush pending ';' separator/newlines
}
P.separator = tab;
if lit, is_lit := d.Path.(*ast.BasicLit); is_lit && lit.Tok == token.STRING {
- P.HtmlPackageName(lit.Pos_, string(lit.Val));
+ P.HtmlPackageName(lit.Loc_, string(lit.Val));
} else {
// we should only reach here for strange imports
// import "foo" "bar"
@@ -966,8 +973,8 @@ func (P *Printer) DoImportDecl(d *ast.ImportDecl) {
func (P *Printer) DoConstDecl(d *ast.ConstDecl) {
- if d.Pos > 0 {
- P.Token(d.Pos, token.CONST);
+ if d.Loc.Pos > 0 {
+ P.Token(d.Loc, token.CONST);
P.separator = blank;
}
P.Idents(d.Idents);
@@ -977,7 +984,7 @@ func (P *Printer) DoConstDecl(d *ast.ConstDecl) {
}
if d.Vals != nil {
P.separator = tab;
- P.Token(0, token.ASSIGN);
+ P.Token(noloc, token.ASSIGN);
P.separator = blank;
P.Expr(d.Vals);
}
@@ -986,8 +993,8 @@ func (P *Printer) DoConstDecl(d *ast.ConstDecl) {
func (P *Printer) DoTypeDecl(d *ast.TypeDecl) {
- if d.Pos > 0 {
- P.Token(d.Pos, token.TYPE);
+ if d.Loc.Pos > 0 {
+ P.Token(d.Loc, token.TYPE);
P.separator = blank;
}
P.Expr(d.Ident);
@@ -998,8 +1005,8 @@ func (P *Printer) DoTypeDecl(d *ast.TypeDecl) {
func (P *Printer) DoVarDecl(d *ast.VarDecl) {
- if d.Pos > 0 {
- P.Token(d.Pos, token.VAR);
+ if d.Loc.Pos > 0 {
+ P.Token(d.Loc, token.VAR);
P.separator = blank;
}
P.Idents(d.Idents);
@@ -1010,7 +1017,7 @@ func (P *Printer) DoVarDecl(d *ast.VarDecl) {
}
if d.Vals != nil {
P.separator = tab;
- P.Token(0, token.ASSIGN);
+ P.Token(noloc, token.ASSIGN);
P.separator = blank;
P.Expr(d.Vals);
}
@@ -1019,17 +1026,17 @@ func (P *Printer) DoVarDecl(d *ast.VarDecl) {
func (P *Printer) funcDecl(d *ast.FuncDecl, with_body bool) {
- P.Token(d.Pos, token.FUNC);
+ P.Token(d.Loc, token.FUNC);
P.separator = blank;
if recv := d.Recv; recv != nil {
// method: print receiver
- P.Token(0, token.LPAREN);
+ P.Token(noloc, token.LPAREN);
if len(recv.Idents) > 0 {
P.Expr(recv.Idents[0]);
P.separator = blank;
}
P.Expr(recv.Typ);
- P.Token(0, token.RPAREN);
+ P.Token(noloc, token.RPAREN);
P.separator = blank;
}
P.Expr(d.Ident);
@@ -1049,15 +1056,15 @@ func (P *Printer) DoFuncDecl(d *ast.FuncDecl) {
func (P *Printer) DoDeclList(d *ast.DeclList) {
if !*def || d.Tok == token.IMPORT || d.Tok == token.VAR {
- P.Token(d.Pos, d.Tok);
+ P.Token(d.Loc, d.Tok);
} else {
- P.String(d.Pos, "def");
+ P.String(d.Loc, "def");
}
P.separator = blank;
// group of parenthesized declarations
P.state = opening_scope;
- P.Token(0, token.LPAREN);
+ P.Token(noloc, token.LPAREN);
if len(d.List) > 0 {
P.newlines = 1;
for i := 0; i < len(d.List); i++ {
@@ -1099,7 +1106,7 @@ func (P *Printer) Interface(p *ast.Program) {
/*
P.Printf("");
P.funcDecl(d, false);
- P.String(0, "");
+ P.String(noloc, "");
P.Printf("
");
*/
}
@@ -1112,7 +1119,7 @@ func (P *Printer) Interface(p *ast.Program) {
// Program
func (P *Printer) Program(p *ast.Program) {
- P.Token(p.Pos, token.PACKAGE);
+ P.Token(p.Loc, token.PACKAGE);
P.separator = blank;
P.Expr(p.Ident);
P.newlines = 1;
@@ -1160,7 +1167,7 @@ func Print(writer io.Write, html bool, prog *ast.Program) {
P.Program(prog);
}
- P.String(0, ""); // flush pending separator/newlines
+ P.String(noloc, ""); // flush pending separator/newlines
err := text.Flush();
if err != nil {
panic("print error - exiting");
diff --git a/usr/gri/pretty/typechecker.go b/usr/gri/pretty/typechecker.go
index 890bbe0405..8cc0d5975f 100644
--- a/usr/gri/pretty/typechecker.go
+++ b/usr/gri/pretty/typechecker.go
@@ -6,22 +6,18 @@ package TypeChecker
import (
"token";
- AST "ast";
+ "scanner";
+ "ast";
)
-type ErrorHandler interface {
- Error(pos int, msg string);
-}
-
-
type state struct {
// setup
- err ErrorHandler;
+ err scanner.ErrorHandler;
}
-func (s *state) Init(err ErrorHandler) {
+func (s *state) Init(err scanner.ErrorHandler) {
s.err = err;
}
@@ -46,8 +42,8 @@ func assert(pred bool) {
}
-func (s *state) Error(pos int, msg string) {
- s.err.Error(pos, msg);
+func (s *state) Error(loc scanner.Location, msg string) {
+ s.err.Error(loc, msg);
}
@@ -81,7 +77,7 @@ func (s *state) CheckDeclaration(d *AST.Decl) {
*/
-func (s *state) CheckProgram(p *AST.Program) {
+func (s *state) CheckProgram(p *ast.Program) {
for i := 0; i < len(p.Decls); i++ {
//s.CheckDeclaration(p.Decls[i].(*AST.Decl));
}
@@ -90,7 +86,7 @@ func (s *state) CheckProgram(p *AST.Program) {
// ----------------------------------------------------------------------------
-func CheckProgram(err ErrorHandler, p *AST.Program) {
+func CheckProgram(err scanner.ErrorHandler, p *ast.Program) {
var s state;
s.Init(err);
s.CheckProgram(p);