checker

package
v0.0.0-...-0893d3e Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2024 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package checker implements the Elk type checker

Package checker implements the Elk type checker

Package checker implements the Elk type checker

Index

Constants

View Source
const (
	NEW_CONST constState = iota
	CHECKING_CONST
	CHECKED_CONST
)
View Source
const (
	NEW_TYPEDEF typedefState = iota
	CHECKING_TYPEDEF
	CHECKED_TYPEDEF
)

Variables

This section is empty.

Functions

func CheckAST

func CheckAST(sourceName string, ast *ast.ProgramNode, globalEnv *types.GlobalEnvironment, headerMode bool) (*vm.BytecodeFunction, error.ErrorList)

Check the types of an Elk AST.

func CheckFile

func CheckFile(fileName string, globalEnv *types.GlobalEnvironment, headerMode bool) (*vm.BytecodeFunction, error.ErrorList)

Check the types of an Elk file.

func CheckSource

func CheckSource(sourceName string, source string, globalEnv *types.GlobalEnvironment, headerMode bool) (*vm.BytecodeFunction, error.ErrorList)

Check the types of Elk source code.

func I

func I(typ types.Type) string

Types

type CheckExpressionFunc

type CheckExpressionFunc func(ast.ExpressionNode) ast.ExpressionNode

type Checker

type Checker struct {
	Filename string               // name of the current source file
	Errors   *error.SyncErrorList // list of typechecking errors

	IsHeader bool // whether the currently checked file is an Elk header file `.elh`
	// contains filtered or unexported fields
}

Holds the state of the type checking process

func New

func New() *Checker

Instantiate a new Checker instance.

func NewWithEnv

func NewWithEnv(env *types.GlobalEnvironment) *Checker

Instantiate a new Checker instance.

func (*Checker) CanBeFalsy

func (c *Checker) CanBeFalsy(typ types.Type) bool

Type can be falsy

func (*Checker) CanBeTruthy

func (c *Checker) CanBeTruthy(typ types.Type) bool

Type can be truthy

func (*Checker) CheckSource

func (c *Checker) CheckSource(sourceName string, source string) (*vm.BytecodeFunction, error.ErrorList)

Used in the REPL to typecheck and compile the input

func (*Checker) ClearErrors

func (c *Checker) ClearErrors()

func (*Checker) Env

func (c *Checker) Env() *types.GlobalEnvironment

func (*Checker) IsFalsy

func (c *Checker) IsFalsy(typ types.Type) bool

Type is always falsy.

func (*Checker) IsNil

func (c *Checker) IsNil(typ types.Type) bool

Type is always `nil`

func (*Checker) IsNilable

func (c *Checker) IsNilable(typ types.Type) bool

Type can be `nil`

func (*Checker) IsNotNilable

func (c *Checker) IsNotNilable(typ types.Type) bool

Type cannot be `nil`

func (*Checker) IsSubtype

func (c *Checker) IsSubtype(a, b types.Type) bool

func (*Checker) IsTheSameNamespace

func (c *Checker) IsTheSameNamespace(a, b types.Namespace) bool

Check whether the two given types represent the same type. Return true if they do, otherwise false.

func (*Checker) IsTheSameType

func (c *Checker) IsTheSameType(a, b types.Type) bool

func (*Checker) IsTruthy

func (c *Checker) IsTruthy(typ types.Type) bool

Type is always truthy.

func (*Checker) NewNormalisedIntersection

func (c *Checker) NewNormalisedIntersection(elements ...types.Type) types.Type

func (*Checker) NewNormalisedUnion

func (c *Checker) NewNormalisedUnion(elements ...types.Type) types.Type

func (*Checker) NormaliseType

func (c *Checker) NormaliseType(typ types.Type) types.Type

func (*Checker) Std

func (c *Checker) Std(name value.Symbol) types.Type

func (*Checker) StdAnyInt

func (c *Checker) StdAnyInt() types.Type

func (*Checker) StdArrayList

func (c *Checker) StdArrayList() *types.Class

func (*Checker) StdArrayTuple

func (c *Checker) StdArrayTuple() *types.Class

func (*Checker) StdBigFloat

func (c *Checker) StdBigFloat() *types.Class

func (*Checker) StdBool

func (c *Checker) StdBool() *types.Class

func (*Checker) StdClass

func (c *Checker) StdClass() *types.Class

func (*Checker) StdFalse

func (c *Checker) StdFalse() *types.Class

func (*Checker) StdFloat

func (c *Checker) StdFloat() *types.Class

func (*Checker) StdHashMap

func (c *Checker) StdHashMap() *types.Class

func (*Checker) StdHashRecord

func (c *Checker) StdHashRecord() *types.Class

func (*Checker) StdHashSet

func (c *Checker) StdHashSet() *types.Class

func (*Checker) StdInspectable

func (c *Checker) StdInspectable() types.Type

func (*Checker) StdInt

func (c *Checker) StdInt() *types.Class

func (*Checker) StdList

func (c *Checker) StdList() *types.Mixin

func (*Checker) StdMap

func (c *Checker) StdMap() *types.Mixin

func (*Checker) StdNil

func (c *Checker) StdNil() *types.Class

func (*Checker) StdPrimitiveIterable

func (c *Checker) StdPrimitiveIterable() *types.Interface

func (*Checker) StdRange

func (c *Checker) StdRange() *types.Mixin

func (*Checker) StdRecord

func (c *Checker) StdRecord() *types.Mixin

func (*Checker) StdSet

func (c *Checker) StdSet() *types.Mixin

func (*Checker) StdString

func (c *Checker) StdString() types.Type

func (*Checker) StdStringConvertible

func (c *Checker) StdStringConvertible() types.Type

func (*Checker) StdTrue

func (c *Checker) StdTrue() *types.Class

func (*Checker) StdTuple

func (c *Checker) StdTuple() *types.Mixin

func (*Checker) ToNilable

func (c *Checker) ToNilable(typ types.Type) types.Type

func (*Checker) ToNonFalsy

func (c *Checker) ToNonFalsy(typ types.Type) types.Type

func (*Checker) ToNonLiteral

func (c *Checker) ToNonLiteral(typ types.Type, widenSingletonTypes bool) types.Type

func (*Checker) ToNonNilable

func (c *Checker) ToNonNilable(typ types.Type) types.Type

func (*Checker) ToNonTruthy

func (c *Checker) ToNonTruthy(typ types.Type) types.Type

func (*Checker) TypeOf

func (c *Checker) TypeOf(node ast.Node) types.Type

func (*Checker) TypesIntersect

func (c *Checker) TypesIntersect(a, b types.Type) bool

Check whether the two given types intersect. Return true if they do, otherwise false.

Jump to

Keyboard shortcuts

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