compiler

package
v0.0.0-...-94ae2f2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 4, 2025 License: Apache-2.0 Imports: 39 Imported by: 0

Documentation

Overview

Package compiler implements the TypeScript compiler.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FilterNoEmitSemanticDiagnostics

func FilterNoEmitSemanticDiagnostics(diagnostics []*ast.Diagnostic, options *core.CompilerOptions) []*ast.Diagnostic

func GetDiagnosticsOfAnyProgram

func GetDiagnosticsOfAnyProgram(
	ctx context.Context,
	program ProgramLike,
	file *ast.SourceFile,
	skipNoEmitCheckForDtsDiagnostics bool,
	getBindDiagnostics func(context.Context, *ast.SourceFile) []*ast.Diagnostic,
	getSemanticDiagnostics func(context.Context, *ast.SourceFile) []*ast.Diagnostic,
) []*ast.Diagnostic

func SortAndDeduplicateDiagnostics

func SortAndDeduplicateDiagnostics(diagnostics []*ast.Diagnostic) []*ast.Diagnostic

Types

type CheckerPool

type CheckerPool interface {
	GetChecker(ctx context.Context) (*checker.Checker, func())
	GetCheckerForFile(ctx context.Context, file *ast.SourceFile) (*checker.Checker, func())
	GetAllCheckers(ctx context.Context) ([]*checker.Checker, func())
	Files(checker *checker.Checker) iter.Seq[*ast.SourceFile]
}

type CompilerHost

type CompilerHost interface {
	FS() vfs.FS
	DefaultLibraryPath() string
	GetCurrentDirectory() string
	Trace(msg string)
	GetSourceFile(opts ast.SourceFileParseOptions) *ast.SourceFile
	GetResolvedProjectReference(fileName string, path tspath.Path) *tsoptions.ParsedCommandLine
}

func NewCachedFSCompilerHost

func NewCachedFSCompilerHost(
	currentDirectory string,
	fs vfs.FS,
	defaultLibraryPath string,
	extendedConfigCache tsoptions.ExtendedConfigCache,
	trace func(msg string),
) CompilerHost

func NewCompilerHost

func NewCompilerHost(
	currentDirectory string,
	fs vfs.FS,
	defaultLibraryPath string,
	extendedConfigCache tsoptions.ExtendedConfigCache,
	trace func(msg string),
) CompilerHost

type EmitHost

type EmitHost interface {
	printer.EmitHost
	declarations.DeclarationEmitHost
	Options() *core.CompilerOptions
	SourceFiles() []*ast.SourceFile
	UseCaseSensitiveFileNames() bool
	GetCurrentDirectory() string
	CommonSourceDirectory() string
	IsEmitBlocked(file string) bool
}

NOTE: EmitHost operations must be thread-safe

type EmitOnly

type EmitOnly byte
const (
	EmitAll EmitOnly = iota
	EmitOnlyJs
	EmitOnlyDts
	EmitOnlyForcedDts
)

type EmitOptions

type EmitOptions struct {
	TargetSourceFile *ast.SourceFile // Single file to emit. If `nil`, emits all files
	EmitOnly         EmitOnly
	WriteFile        WriteFile
}

type EmitResult

type EmitResult struct {
	EmitSkipped  bool
	Diagnostics  []*ast.Diagnostic      // Contains declaration emit diagnostics
	EmittedFiles []string               // Array of files the compiler wrote to disk
	SourceMaps   []*SourceMapEmitResult // Array of sourceMapData if compiler emitted sourcemaps
}

func CombineEmitResults

func CombineEmitResults(results []*EmitResult) *EmitResult

func HandleNoEmitOnError

func HandleNoEmitOnError(ctx context.Context, program ProgramLike, file *ast.SourceFile) *EmitResult

type LibFile

type LibFile struct {
	Name string

	Replaced bool
	// contains filtered or unexported fields
}

type Program

type Program struct {
	// contains filtered or unexported fields
}

func NewProgram

func NewProgram(opts ProgramOptions) *Program

func (*Program) BindSourceFiles

func (p *Program) BindSourceFiles()

func (*Program) CheckSourceFiles

func (p *Program) CheckSourceFiles(ctx context.Context, files []*ast.SourceFile)

func (*Program) CommandLine

func (p *Program) CommandLine() *tsoptions.ParsedCommandLine

func (*Program) CommonSourceDirectory

func (p *Program) CommonSourceDirectory() string

func (*Program) Emit

func (p *Program) Emit(ctx context.Context, options EmitOptions) *EmitResult

func (*Program) ExplainFiles

func (p *Program) ExplainFiles(w io.Writer)

func (*Program) FileExists

func (p *Program) FileExists(path string) bool

FileExists implements checker.Program.

func (*Program) ForEachResolvedProjectReference

func (p *Program) ForEachResolvedProjectReference(
	fn func(path tspath.Path, config *tsoptions.ParsedCommandLine, parent *tsoptions.ParsedCommandLine, index int),
)

func (*Program) GetBindDiagnostics

func (p *Program) GetBindDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetConfigFileParsingDiagnostics

func (p *Program) GetConfigFileParsingDiagnostics() []*ast.Diagnostic

func (*Program) GetCurrentDirectory

func (p *Program) GetCurrentDirectory() string

GetCurrentDirectory implements checker.Program.

func (*Program) GetDeclarationDiagnostics

func (p *Program) GetDeclarationDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetDefaultLibFile

func (p *Program) GetDefaultLibFile(path tspath.Path) *LibFile

func (*Program) GetDefaultResolutionModeForFile

func (p *Program) GetDefaultResolutionModeForFile(sourceFile ast.HasFileName) core.ResolutionMode

func (*Program) GetEmitModuleFormatOfFile

func (p *Program) GetEmitModuleFormatOfFile(sourceFile ast.HasFileName) core.ModuleKind

func (*Program) GetEmitSyntaxForUsageLocation

func (p *Program) GetEmitSyntaxForUsageLocation(sourceFile ast.HasFileName, location *ast.StringLiteralLike) core.ResolutionMode

func (*Program) GetGlobalDiagnostics

func (p *Program) GetGlobalDiagnostics(ctx context.Context) []*ast.Diagnostic

func (*Program) GetGlobalTypingsCacheLocation

func (p *Program) GetGlobalTypingsCacheLocation() string

GetGlobalTypingsCacheLocation implements checker.Program.

func (*Program) GetImpliedNodeFormatForEmit

func (p *Program) GetImpliedNodeFormatForEmit(sourceFile ast.HasFileName) core.ResolutionMode

func (*Program) GetImportHelpersImportSpecifier

func (p *Program) GetImportHelpersImportSpecifier(path tspath.Path) *ast.Node

func (*Program) GetIncludeProcessorDiagnostics

func (p *Program) GetIncludeProcessorDiagnostics(sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetIncludeReasons

func (p *Program) GetIncludeReasons() map[tspath.Path][]*fileIncludeReason

Testing only

func (*Program) GetJSXRuntimeImportSpecifier

func (p *Program) GetJSXRuntimeImportSpecifier(path tspath.Path) (moduleReference string, specifier *ast.Node)

func (*Program) GetLibFileFromReference

func (p *Program) GetLibFileFromReference(ref *ast.FileReference) *ast.SourceFile

func (*Program) GetModeForUsageLocation

func (p *Program) GetModeForUsageLocation(sourceFile ast.HasFileName, location *ast.StringLiteralLike) core.ResolutionMode

func (*Program) GetNearestAncestorDirectoryWithPackageJson

func (p *Program) GetNearestAncestorDirectoryWithPackageJson(dirname string) string

GetNearestAncestorDirectoryWithPackageJson implements checker.Program.

func (*Program) GetOptionsDiagnostics

func (p *Program) GetOptionsDiagnostics(ctx context.Context) []*ast.Diagnostic

func (*Program) GetPackageJsonInfo

func (p *Program) GetPackageJsonInfo(pkgJsonPath string) modulespecifiers.PackageJsonInfo

GetPackageJsonInfo implements checker.Program.

func (*Program) GetParseFileRedirect

func (p *Program) GetParseFileRedirect(fileName string) string

func (*Program) GetProgramDiagnostics

func (p *Program) GetProgramDiagnostics() []*ast.Diagnostic

func (*Program) GetProjectReferenceFromOutputDts

func (p *Program) GetProjectReferenceFromOutputDts(path tspath.Path) *tsoptions.SourceOutputAndProjectReference

func (*Program) GetProjectReferenceFromSource

func (p *Program) GetProjectReferenceFromSource(path tspath.Path) *tsoptions.SourceOutputAndProjectReference

GetProjectReferenceFromSource implements checker.Program.

func (*Program) GetRedirectForResolution

func (p *Program) GetRedirectForResolution(file ast.HasFileName) *tsoptions.ParsedCommandLine

func (*Program) GetRedirectTargets

func (p *Program) GetRedirectTargets(path tspath.Path) []string

GetRedirectTargets implements checker.Program.

func (*Program) GetResolvedModule

func (p *Program) GetResolvedModule(file ast.HasFileName, moduleReference string, mode core.ResolutionMode) *module.ResolvedModule

func (*Program) GetResolvedModuleFromModuleSpecifier

func (p *Program) GetResolvedModuleFromModuleSpecifier(file ast.HasFileName, moduleSpecifier *ast.StringLiteralLike) *module.ResolvedModule

func (*Program) GetResolvedModules

func (p *Program) GetResolvedModules() map[tspath.Path]module.ModeAwareCache[*module.ResolvedModule]

func (*Program) GetResolvedProjectReferenceFor

func (p *Program) GetResolvedProjectReferenceFor(path tspath.Path) (*tsoptions.ParsedCommandLine, bool)

func (*Program) GetResolvedTypeReferenceDirectiveFromTypeReferenceDirective

func (p *Program) GetResolvedTypeReferenceDirectiveFromTypeReferenceDirective(typeRef *ast.FileReference, sourceFile *ast.SourceFile) *module.ResolvedTypeReferenceDirective

func (*Program) GetResolvedTypeReferenceDirectives

func (p *Program) GetResolvedTypeReferenceDirectives() map[tspath.Path]module.ModeAwareCache[*module.ResolvedTypeReferenceDirective]

func (*Program) GetSemanticDiagnostics

func (p *Program) GetSemanticDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetSemanticDiagnosticsNoFilter

func (p *Program) GetSemanticDiagnosticsNoFilter(ctx context.Context, sourceFiles []*ast.SourceFile) map[*ast.SourceFile][]*ast.Diagnostic

func (*Program) GetSourceFile

func (p *Program) GetSourceFile(filename string) *ast.SourceFile

func (*Program) GetSourceFileByPath

func (p *Program) GetSourceFileByPath(path tspath.Path) *ast.SourceFile

func (*Program) GetSourceFileForResolvedModule

func (p *Program) GetSourceFileForResolvedModule(fileName string) *ast.SourceFile

func (*Program) GetSourceFileFromReference

func (p *Program) GetSourceFileFromReference(origin *ast.SourceFile, ref *ast.FileReference) *ast.SourceFile

* This should have similar behavior to 'processSourceFile' without diagnostics or mutation.

func (*Program) GetSourceFileMetaData

func (p *Program) GetSourceFileMetaData(path tspath.Path) ast.SourceFileMetaData

func (*Program) GetSourceFiles

func (p *Program) GetSourceFiles() []*ast.SourceFile

func (*Program) GetSourceOfProjectReferenceIfOutputIncluded

func (p *Program) GetSourceOfProjectReferenceIfOutputIncluded(file ast.HasFileName) string

gets the original file that was included in program this returns original source file name when including output of project reference otherwise same name Equivalent to originalFileName on SourceFile in Strada

func (*Program) GetSuggestionDiagnostics

func (p *Program) GetSuggestionDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetSyntacticDiagnostics

func (p *Program) GetSyntacticDiagnostics(ctx context.Context, sourceFile *ast.SourceFile) []*ast.Diagnostic

func (*Program) GetTypeChecker

func (p *Program) GetTypeChecker(ctx context.Context) (*checker.Checker, func())

Return the type checker associated with the program.

func (*Program) GetTypeCheckerForFile

func (p *Program) GetTypeCheckerForFile(ctx context.Context, file *ast.SourceFile) (*checker.Checker, func())

Return a checker for the given file. We may have multiple checkers in concurrent scenarios and this method returns the checker that was tasked with checking the file. Note that it isn't possible to mix types obtained from different checkers, so only non-type data (such as diagnostics or string representations of types) should be obtained from checkers returned by this method.

func (*Program) GetTypeCheckers

func (p *Program) GetTypeCheckers(ctx context.Context) ([]*checker.Checker, func())

func (*Program) GetUnresolvedImports

func (p *Program) GetUnresolvedImports() *collections.Set[string]

GetUnresolvedImports returns the unresolved imports for this program. The result is cached and computed only once.

func (*Program) HasSameFileNames

func (p *Program) HasSameFileNames(other *Program) bool

func (*Program) Host

func (p *Program) Host() CompilerHost

func (*Program) IdentifierCount

func (p *Program) IdentifierCount() int

func (*Program) InstantiationCount

func (p *Program) InstantiationCount() int

func (*Program) IsEmitBlocked

func (p *Program) IsEmitBlocked(emitFileName string) bool

func (*Program) IsMissingPath

func (p *Program) IsMissingPath(path tspath.Path) bool

Testing only

func (*Program) IsSourceFileDefaultLibrary

func (p *Program) IsSourceFileDefaultLibrary(path tspath.Path) bool

func (*Program) IsSourceFileFromExternalLibrary

func (p *Program) IsSourceFileFromExternalLibrary(file *ast.SourceFile) bool

func (*Program) IsSourceFromProjectReference

func (p *Program) IsSourceFromProjectReference(path tspath.Path) bool

IsSourceFromProjectReference implements checker.Program.

func (*Program) LineCount

func (p *Program) LineCount() int

func (*Program) Options

func (p *Program) Options() *core.CompilerOptions

func (*Program) SingleThreaded

func (p *Program) SingleThreaded() bool

func (*Program) SourceFileMayBeEmitted

func (p *Program) SourceFileMayBeEmitted(sourceFile *ast.SourceFile, forceDtsEmit bool) bool

func (*Program) SourceFiles

func (p *Program) SourceFiles() []*ast.SourceFile

func (*Program) SymbolCount

func (p *Program) SymbolCount() int

func (*Program) TypeCount

func (p *Program) TypeCount() int

func (*Program) UnsupportedExtensions

func (p *Program) UnsupportedExtensions() []string

UnsupportedExtensions returns a list of all present "unsupported" extensions, e.g. extensions that are not yet supported by the port.

func (*Program) UpdateProgram

func (p *Program) UpdateProgram(changedFilePath tspath.Path, newHost CompilerHost) (*Program, bool)

Return an updated program for which it is known that only the file with the given path has changed. In addition to a new program, return a boolean indicating whether the data of the old program was reused.

func (*Program) UseCaseSensitiveFileNames

func (p *Program) UseCaseSensitiveFileNames() bool

UseCaseSensitiveFileNames implements checker.Program.

func (*Program) UsesUriStyleNodeCoreModules

func (p *Program) UsesUriStyleNodeCoreModules() bool

type ProgramLike

type ProgramLike interface {
	Options() *core.CompilerOptions
	GetSourceFiles() []*ast.SourceFile
	GetConfigFileParsingDiagnostics() []*ast.Diagnostic
	GetSyntacticDiagnostics(ctx context.Context, file *ast.SourceFile) []*ast.Diagnostic
	GetBindDiagnostics(ctx context.Context, file *ast.SourceFile) []*ast.Diagnostic
	GetOptionsDiagnostics(ctx context.Context) []*ast.Diagnostic
	GetProgramDiagnostics() []*ast.Diagnostic
	GetGlobalDiagnostics(ctx context.Context) []*ast.Diagnostic
	GetSemanticDiagnostics(ctx context.Context, file *ast.SourceFile) []*ast.Diagnostic
	GetDeclarationDiagnostics(ctx context.Context, file *ast.SourceFile) []*ast.Diagnostic
	Emit(ctx context.Context, options EmitOptions) *EmitResult
}

type ProgramOptions

type ProgramOptions struct {
	Host                        CompilerHost
	Config                      *tsoptions.ParsedCommandLine
	UseSourceOfProjectReference bool
	SingleThreaded              core.Tristate
	CreateCheckerPool           func(*Program) CheckerPool
	TypingsLocation             string
	ProjectName                 string
	JSDocParsingMode            ast.JSDocParsingMode
}

type SourceFileMayBeEmittedHost

type SourceFileMayBeEmittedHost interface {
	Options() *core.CompilerOptions
	GetProjectReferenceFromSource(path tspath.Path) *tsoptions.SourceOutputAndProjectReference
	IsSourceFileFromExternalLibrary(file *ast.SourceFile) bool
	GetCurrentDirectory() string
	UseCaseSensitiveFileNames() bool
	SourceFiles() []*ast.SourceFile
}

type SourceMapEmitResult

type SourceMapEmitResult struct {
	InputSourceFileNames []string // Input source file (which one can use on program to get the file), 1:1 mapping with the sourceMap.sources list
	SourceMap            *sourcemap.RawSourceMap
	GeneratedFile        string
}

type WriteFile

type WriteFile func(fileName string, text string, writeByteOrderMark bool, data *WriteFileData) error

type WriteFileData

type WriteFileData struct {
	SourceMapUrlPos int
	BuildInfo       any
	Diagnostics     []*ast.Diagnostic
	SkippedDtsWrite bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL