Commit d88c759e authored by Robert Griesemer's avatar Robert Griesemer

- moved package code into globals.go, adjusted deps

SVN=127887
parent 6426659d
......@@ -8,7 +8,6 @@ import Globals "globals"
import Object "object"
import Type "type"
import Universe "universe"
import Package "package"
import Scanner "scanner"
import Parser "parser"
import Export "export"
......@@ -18,12 +17,12 @@ export Compilation
type Compilation struct {
src_name string;
pkg *Globals.Object;
imports [256] *Package.Package; // TODO need open arrays
imports [256] *Globals.Package; // TODO need open arrays
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++ {
pkg := C.imports[i];
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 {
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);
if (p == nil) {
// no primary package found
......@@ -111,4 +110,5 @@ func Compile(src_name string, verbose int) {
print "parsing ", src_name, "\n";
P.ParseProgram();
//comp.Export();
}
......@@ -7,7 +7,6 @@ package Exporter
import Globals "globals"
import Object "object"
import Type "type"
import Package "package"
//import Compilation "compilation"
......@@ -25,7 +24,7 @@ type Exporter struct {
func (E *Exporter) WriteType(typ *Globals.Type);
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) {
......@@ -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 {
E.WritePackageTag(-pkg.ref); // package already exported
return;
......@@ -279,7 +278,7 @@ func (E *Exporter) Export(/*Compilation* comp, BBuffer* buf*/) {
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);
for p := pkg.scope.entries.first; p != nil; p = p.next {
if p.obj.mark {
......
......@@ -6,9 +6,9 @@ package Globals
// The following types should really be in their respective files
// object.go, type.go, and scope.go but they refer to each other
// and we don't know how to handle forward-declared pointers across
// packages yet.
// (object.go, type.go, scope.go, package.go) but they refer to each
// other and we don't know how to handle forward-declared pointers
// 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
......@@ -103,6 +114,13 @@ func NewScope(parent *Scope) *Scope {
}
export NewPackage;
func NewPackage() *Package {
pkg := new(Package);
return pkg;
}
// ----------------------------------------------------------------------------
// List methods
......
// 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment