remove uses of *T as an implicit forward declaration of T

R=gri,r
OCL=16648
CL=16652
This commit is contained in:
Russ Cox 2008-10-07 12:59:54 -07:00
parent 96da920f1a
commit e6cd1e445b
6 changed files with 70 additions and 5 deletions

View File

@ -98,6 +98,12 @@ func atob(str string) (value bool, ok bool) {
return false, false
}
type (
BoolValue struct;
IntValue struct;
StringValue struct;
)
// -- Bool Value
type BoolValue struct {
val bool;

View File

@ -6,6 +6,7 @@
package main
type T struct
type S struct {
p *T // BUG T never declared
}

View File

@ -6,6 +6,10 @@
package main
type (
Type struct;
Object struct;
)
type Scope struct {
entries *map[string] *Object;

View File

@ -9,6 +9,12 @@ package main
const nilchar = 0;
type (
Atom struct;
List struct;
Slist struct;
)
type Atom struct {
str string;
integer int;

View File

@ -13,6 +13,11 @@ package Globals
// ----------------------------------------------------------------------------
type Type struct
type Scope struct
type Elem struct
type Compilation struct
export type Object struct {
exported bool;
pos int; // source position (< 0 if unknown position)
@ -86,7 +91,7 @@ export type Compilation struct {
// environment
flags *Flags;
env *Environment;
// TODO use open arrays eventually
pkg_list [256] *Package; // pkg_list[0] is the current package
pkg_ref int;
@ -199,7 +204,7 @@ func (L *List) at(i int) *Elem {
for ; i > 0; i-- {
p = p.next;
}
return p;
}

View File

@ -8,11 +8,54 @@ package AST
// ----------------------------------------------------------------------------
// Visitor
type (
Nil struct;
Ident struct;
ArrayType struct;
StructType struct;
MapType struct;
ChannelType struct;
PointerType struct;
InterfaceType struct;
FunctionType struct;
VarDeclList struct;
ImportDecl struct;
ConstDecl struct;
TypeDecl struct;
VarDecl struct;
Declaration struct;
FuncDecl struct;
MethodDecl struct;
Selector struct;
Index struct;
Call struct;
Pair struct;
Binary struct;
Unary struct;
Literal struct;
CompositeLit struct;
FunctionLit struct;
Label struct;
Block struct;
ExprStat struct;
Assignment struct;
ControlClause struct;
IfStat struct;
ForStat struct;
CaseClause struct;
SwitchStat struct;
ReturnStat struct;
IncDecStat struct;
ControlFlowStat struct;
GoStat struct;
Program struct;
)
export type Visitor interface {
// Basics
DoNil(x *Nil);
DoIdent(x *Ident);
// Types
DoFunctionType(x *FunctionType);
DoArrayType(x *ArrayType);
@ -21,7 +64,7 @@ export type Visitor interface {
DoChannelType(x *ChannelType);
DoInterfaceType(x *InterfaceType);
DoPointerType(x *PointerType);
// Declarations
DoImportDecl(x *ImportDecl);
DoConstDecl(x *ConstDecl);
@ -31,7 +74,7 @@ export type Visitor interface {
DoFuncDecl(x *FuncDecl);
DoMethodDecl(x *MethodDecl);
DoDeclaration(x *Declaration);
// Expressions
DoBinary(x *Binary);
DoUnary(x *Unary);