1
0
mirror of https://github.com/golang/go synced 2024-11-22 21:20:03 -07:00

- moved package code into globals.go, adjusted deps

SVN=127887
This commit is contained in:
Robert Griesemer 2008-07-17 14:53:13 -07:00
parent 6426659db9
commit d88c759e87
4 changed files with 29 additions and 36 deletions

View File

@ -8,7 +8,6 @@ import Globals "globals"
import Object "object" import Object "object"
import Type "type" import Type "type"
import Universe "universe" import Universe "universe"
import Package "package"
import Scanner "scanner" import Scanner "scanner"
import Parser "parser" import Parser "parser"
import Export "export" import Export "export"
@ -18,12 +17,12 @@ export Compilation
type Compilation struct { type Compilation struct {
src_name string; src_name string;
pkg *Globals.Object; pkg *Globals.Object;
imports [256] *Package.Package; // TODO need open arrays imports [256] *Globals.Package; // TODO need open arrays
nimports int; nimports int;
} }
func (C *Compilation) Lookup(file_name string) *Package.Package { func (C *Compilation) Lookup(file_name string) *Globals.Package {
for i := 0; i < C.nimports; i++ { for i := 0; i < C.nimports; i++ {
pkg := C.imports[i]; pkg := C.imports[i];
if pkg.file_name == file_name { if pkg.file_name == file_name {
@ -34,7 +33,7 @@ func (C *Compilation) Lookup(file_name string) *Package.Package {
} }
func (C *Compilation) Insert(pkg *Package.Package) { func (C *Compilation) Insert(pkg *Globals.Package) {
if C.Lookup(pkg.file_name) != nil { if C.Lookup(pkg.file_name) != nil {
panic "package already inserted"; panic "package already inserted";
} }
@ -44,7 +43,7 @@ func (C *Compilation) Insert(pkg *Package.Package) {
} }
func (C *Compilation) InsertImport(pkg *Package.Package) *Package.Package { func (C *Compilation) InsertImport(pkg *Globals.Package) *Globals.Package {
p := C.Lookup(pkg.file_name); p := C.Lookup(pkg.file_name);
if (p == nil) { if (p == nil) {
// no primary package found // no primary package found
@ -111,4 +110,5 @@ func Compile(src_name string, verbose int) {
print "parsing ", src_name, "\n"; print "parsing ", src_name, "\n";
P.ParseProgram(); P.ParseProgram();
//comp.Export();
} }

View File

@ -7,7 +7,6 @@ package Exporter
import Globals "globals" import Globals "globals"
import Object "object" import Object "object"
import Type "type" import Type "type"
import Package "package"
//import Compilation "compilation" //import Compilation "compilation"
@ -25,7 +24,7 @@ type Exporter struct {
func (E *Exporter) WriteType(typ *Globals.Type); func (E *Exporter) WriteType(typ *Globals.Type);
func (E *Exporter) WriteObject(obj *Globals.Object); func (E *Exporter) WriteObject(obj *Globals.Object);
func (E *Exporter) WritePackage(pkg *Package.Package) ; func (E *Exporter) WritePackage(pkg *Globals.Package) ;
func (E *Exporter) WriteByte(x byte) { func (E *Exporter) WriteByte(x byte) {
@ -240,7 +239,7 @@ func (E *Exporter) WriteType(typ *Globals.Type) {
} }
func (E *Exporter) WritePackage(pkg *Package.Package) { func (E *Exporter) WritePackage(pkg *Globals.Package) {
if pkg.ref >= 0 { if pkg.ref >= 0 {
E.WritePackageTag(-pkg.ref); // package already exported E.WritePackageTag(-pkg.ref); // package already exported
return; return;
@ -279,7 +278,7 @@ func (E *Exporter) Export(/*Compilation* comp, BBuffer* buf*/) {
E.type_ref = Universe.types.len(); E.type_ref = Universe.types.len();
*/ */
var pkg *Package.Package = nil; // comp.packages[0]; var pkg *Globals.Package = nil; // comp.packages[0];
E.WritePackage(pkg); E.WritePackage(pkg);
for p := pkg.scope.entries.first; p != nil; p = p.next { for p := pkg.scope.entries.first; p != nil; p = p.next {
if p.obj.mark { if p.obj.mark {

View File

@ -6,9 +6,9 @@ package Globals
// The following types should really be in their respective files // The following types should really be in their respective files
// object.go, type.go, and scope.go but they refer to each other // (object.go, type.go, scope.go, package.go) but they refer to each
// and we don't know how to handle forward-declared pointers across // other and we don't know how to handle forward-declared pointers
// packages yet. // across packages yet.
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -64,6 +64,17 @@ type Scope struct {
} }
export Package
type Package struct {
ref int; // for exporting only: >= 0 means already exported
file_name string;
ident string;
key string;
scope *Scope;
pno int;
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Creation // Creation
@ -103,6 +114,13 @@ func NewScope(parent *Scope) *Scope {
} }
export NewPackage;
func NewPackage() *Package {
pkg := new(Package);
return pkg;
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// List methods // List methods

View File

@ -1,24 +0,0 @@
// 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.
package Package
import Globals "globals"
export Package
type Package struct {
ref int;
file_name string;
ident string;
key string;
scope *Globals.Scope;
pno int;
}
export NewPackage;
func NewPackage() *Package {
pkg := new(Package);
return pkg;
}