import "go/typechecker"

このパッケージは未完成です。Go言語のASTの型チェックを実装しています。型チェックの結果として、各識別子のオブジェクトと型の情報によりASTのサイズが増加します。

パッケージファイル

scope.go typechecker.go universe.go

変数

Universeスコープには、すべての事前宣言済み識別子が含まれます。

var Universe *ast.Scope

CheckFile関数

func CheckFile(fset *token.FileSet, file *ast.File, importer Importer) os.Error

CheckFileは、ファイルひとつに対して型チェックを行いますが、場合によってはCheckPackageのような動作をします。パッケージが、そのファイルだけでなく複数のファイルから成るときは、そのファイルの型チェックがエラーとなる可能性があります。

CheckPackage関数

func CheckPackage(fset *token.FileSet, pkg *ast.Package, importer Importer) os.Error

CheckPackageは、パッケージの型チェックを行い、*ast.Object、*ast.Type、*ast.Scopeフィールドを設定することで、ASTのサイズを大きくします。Importerが与えられたときは、インポート処理に使用されます。与えないとインポートは無視されます。(たぶん、型チェックでエラーを引き起こします)

エラーが返されたときは、ASTは不完全な状態で増加される(フィールドがnilの可能性があります)ことがあり、また不完全なオブジェクト、型、スコープ情報を含む可能性があります。

Importer型

Importerは、与えられたインポートパスを使い、パッケージ内でエクスポートされている各インタフェースの情報を格納したデータを返します。このデータのフォーマットはTBDです。

type Importer func(path string) ([]byte, os.Error)