Documentation ¶
Overview ¶
Package eval handles evaluation of parsed Elvish code and provides runtime facilities.
Index ¶
- Constants
- Variables
- func ComposeExceptionsFromPipeline(excs []*Exception) error
- func EachExternal(f func(string))
- func MakeVariableRef(explode bool, ns string, name string) string
- func NewExternalCmdExit(name string, ws syscall.WaitStatus, pid int) error
- func ParseIncompleteVariableRef(text string) (explode bool, ns string, name string)
- func ParseVariableRef(text string) (explode bool, ns string, name string)
- func PurelyEvalCompound(cn *parse.Compound) (string, error)
- func RunTests(evalTests []Test, makeEvaler func() *Evaler) error
- func SplitIncompleteVariableRef(text string) (explodePart, nsPart, name string)
- func SplitVariableRef(text string) (explodePart, nsPart, name string)
- func TakeNoOpt(opts map[string]interface{})
- type AddDirer
- type BuiltinFn
- type Callable
- type Closure
- func (c *Closure) Call(fm *Frame, args []interface{}, opts map[string]interface{}) error
- func (c *Closure) Equal(rhs interface{}) bool
- func (c *Closure) Hash() uint32
- func (c *Closure) Index(k interface{}) (interface{}, bool)
- func (c *Closure) IterateKeys(f func(interface{}) bool)
- func (*Closure) Kind() string
- func (c *Closure) Repr(int) string
- type CompilationError
- type CustomCallable
- type Editor
- type EnvList
- type Evaler
- func (ev *Evaler) AddAfterChdir(f func(string))
- func (ev *Evaler) AddBeforeChdir(f func(string))
- func (ev *Evaler) Chdir(path string) error
- func (ev *Evaler) Close() error
- func (ev *Evaler) Compile(n *parse.Chunk, src *Source) (Op, error)
- func (ev *Evaler) EachNsInTop(f func(s string))
- func (ev *Evaler) EachVariableInTop(ns string, f func(s string))
- func (ev *Evaler) Eval(op Op, ports []*Port, src *Source) error
- func (ev *Evaler) EvalSource(src *Source) error
- func (ev *Evaler) EvalWithStdPorts(op Op, src *Source) error
- func (ev *Evaler) InstallBundled(name, src string)
- func (ev *Evaler) InstallModule(name string, mod Ns)
- func (ev *Evaler) PurelyEvalCompound(cn *parse.Compound) (string, error)
- func (ev *Evaler) PurelyEvalPartialCompound(cn *parse.Compound, upto *parse.Indexing) (string, error)
- func (ev *Evaler) PurelyEvalPrimary(pn *parse.Primary) interface{}
- func (ev *Evaler) SetArgs(args []string)
- func (ev *Evaler) SetLibDir(libDir string)
- func (ev *Evaler) SourceRC(src *Source) error
- type Exception
- func (exc *Exception) Bool() bool
- func (exc *Exception) Equal(rhs interface{}) bool
- func (exc *Exception) Error() string
- func (exc *Exception) Hash() uint32
- func (exc *Exception) Index(k interface{}) (interface{}, bool)
- func (exc *Exception) IterateKeys(f func(interface{}) bool)
- func (exc *Exception) Kind() string
- func (exc *Exception) Pprint(indent string) string
- func (exc *Exception) Repr(indent int) string
- type ExternalCmd
- type ExternalCmdExit
- type Flow
- type Frame
- func (fm *Frame) Call(f Callable, args []interface{}, opts map[string]interface{}) (err error)
- func (fm *Frame) CallWithOutputCallback(fn Callable, args []interface{}, opts map[string]interface{}, ...) error
- func (fm *Frame) CaptureOutput(fn Callable, args []interface{}, opts map[string]interface{}) (vs []interface{}, err error)
- func (fm *Frame) Close() error
- func (ev Frame) EachNsInTop(f func(s string))
- func (ev Frame) EachVariableInTop(ns string, f func(s string))
- func (fm *Frame) Eval(op Op) (err error)
- func (ctx *Frame) ExecAndUnwrap(desc string, op ValuesOp) ValuesUnwrapper
- func (fm *Frame) InputChan() chan interface{}
- func (fm *Frame) InputFile() *os.File
- func (fm *Frame) Interrupts() <-chan struct{}
- func (fm *Frame) IsInterrupted() bool
- func (fm *Frame) IterateInputs(f func(interface{}))
- func (fm *Frame) OutputChan() chan<- interface{}
- func (fm *Frame) OutputFile() *os.File
- func (fm *Frame) ResolveVar(n, name string) vars.Var
- func (ctx *Frame) Unwrap(desc string, begin, end int, vs []interface{}) ValuesUnwrapper
- type GlobFlag
- type GlobPattern
- func (gp GlobPattern) Concat(v interface{}) (interface{}, error)
- func (gp GlobPattern) Equal(a interface{}) bool
- func (gp GlobPattern) Hash() uint32
- func (gp GlobPattern) Index(k interface{}) (interface{}, error)
- func (GlobPattern) Kind() string
- func (gp GlobPattern) RConcat(v interface{}) (interface{}, error)
- func (gp GlobPattern) Repr(int) string
- type Inputs
- type LValuesOp
- type LValuesOpBody
- type Ns
- func (ns Ns) Add(name string, v vars.Var) Ns
- func (ns Ns) AddBuiltinFn(nsName, name string, impl interface{}) Ns
- func (ns Ns) AddBuiltinFnCustom(nsName, name string, impl CustomCallable) Ns
- func (ns Ns) AddBuiltinFns(nsName string, fns map[string]interface{}) Ns
- func (ns Ns) AddFn(name string, v Callable) Ns
- func (ns Ns) AddNs(name string, v Ns) Ns
- func (ns Ns) Clone() Ns
- func (ns Ns) Equal(rhs interface{}) bool
- func (ns Ns) HasName(name string) bool
- func (ns Ns) Hash() uint32
- func (ns Ns) Index(k interface{}) (interface{}, bool)
- func (ns Ns) IterateKeys(f func(interface{}) bool)
- func (Ns) Kind() string
- func (ns Ns) PopName(name string) vars.Var
- func (ns Ns) Repr(int) string
- type Op
- type OpBody
- type PipelineError
- type Port
- type PwdVariable
- type RawOptions
- type Source
- type SrcType
- type Test
- type ValueUnwrapper
- type ValuesOp
- type ValuesOpBody
- type ValuesUnwrapper
- Bugs
Constants ¶
const ( // FnSuffix is the suffix for the variable names of functions. Defining a // function "foo" is equivalent to setting a variable named "foo~", and vice // versa. FnSuffix = "~" // NsSuffix is the suffix for the variable names of namespaces. Defining a // namespace foo is equivalent to setting a variable named "foo:", and vice // versa. NsSuffix = ":" )
Variables ¶
var ( // ErrRelativeUseNotFromMod is thrown by "use" when relative use is used // not from a module ErrRelativeUseNotFromMod = errors.New("relative use not from module") // ErrRelativeUseGoesOutsideLib is thrown when a relative use goes out of // the library directory. ErrRelativeUseGoesOutsideLib = errors.New("module outside library directory") )
var ( ErrBadGlobPattern = errors.New("bad GlobPattern; elvish bug") ErrCannotDetermineUsername = errors.New("cannot determine user name from glob pattern") )
Errors thrown when globbing.
var ( ErrCanOnlyAssignList = errors.New("can only assign compatible values") ErrPathMustBeString = errors.New("path must be string") ErrPathCannotContainColonZero = errors.New(`path cannot contain colon or \0`) )
Errors
var ( ErrExternalCmdOpts = errors.New("external commands don't accept elvish options") ErrCdNoArg = errors.New("implicit cd accepts no arguments") )
var ( ErrMustFollowWildcard = errors.New("must follow wildcard") ErrModifierMustBeString = errors.New("modifier must be string") ErrWildcardNoMatch = errors.New("wildcard has no match") )
var ( // ClosedChan is a closed channel, suitable for use as placeholder channel input. ClosedChan = make(chan interface{}) // BlackholeChan is channel writes onto which disappear, suitable for use as // placeholder channel output. BlackholeChan = make(chan interface{}) // DevNull is /dev/null. DevNull *os.File // DevNullClosedInput is a port made up from DevNull and ClosedChan, // suitable as placeholder input port. DevNullClosedChan *Port )
var ( // NoArgs is an empty argument list. It can be used as an argument to Call. NoArgs = []interface{}{} // NoOpts is an empty option map. It can be used as an argument to Call. NoOpts = map[string]interface{}{} )
var ErrArgs = errors.New("args error")
var ErrArityMismatch = errors.New("arity mismatch")
ErrArityMismatch is thrown by a closure when the number of arguments the user supplies does not match with what is required.
var ErrImpure = errors.New("expression is impure")
var ErrInterrupted = errors.New("interrupted")
var ErrMoreThanOneRest = errors.New("more than one @ lvalue")
ErrMoreThanOneRest is returned when the LHS of an assignment contains more than one rest variables.
var ErrNoOptAccepted = errors.New("no option accepted")
var ErrNotInSameGroup = errors.New("not in the same process group")
var ErrStoreNotConnected = errors.New("store not connected")
var IsBuiltinSpecial = map[string]bool{}
IsBuiltinSpecial is the set of all names of builtin special forms. It is intended for external consumption, e.g. the syntax highlighter.
var OK = &Exception{}
OK is a pointer to the zero value of Exception, representing the absence of exception.
Functions ¶
func ComposeExceptionsFromPipeline ¶
ComposeExceptionsFromPipeline takes a slice of Exception pointers and composes a suitable error. If all elements of the slice are either nil or OK, a nil is returned. If there is exactly non-nil non-OK Exception, it is returned. Otherwise, a PipelineError built from the slice is returned, with nil items turned into OK's for easier access from elvishscript.
func EachExternal ¶
func EachExternal(f func(string))
EachExternal calls f for each name that can resolve to an external command. TODO(xiaq): Windows support
func MakeVariableRef ¶
MakeVariableRef builds a variable reference.
func NewExternalCmdExit ¶
func NewExternalCmdExit(name string, ws syscall.WaitStatus, pid int) error
func ParseIncompleteVariableRef ¶
ParseIncompleteVariableRef parses an incomplete variable reference.
func ParseVariableRef ¶
ParseVariableRef parses a variable reference.
func RunTests ¶
RunTests runs test cases. For each test case, a new Evaler is made by calling makeEvaler.
func SplitIncompleteVariableRef ¶
SplitIncompleteVariableRef splits an incomplete variable reference into three parts: an optional explode operator (either "" or "@"), a namespace part, and a name part.
func SplitVariableRef ¶
SplitVariableRef splits a variable reference into three parts: an optional explode operator (either "" or "@"), a namespace part, and a name part.
Types ¶
type AddDirer ¶
type AddDirer interface { // AddDir adds a directory with the given weight to some storage. AddDir(dir string, weight float64) error }
AddDirer wraps the AddDir function.
type BuiltinFn ¶
type BuiltinFn struct {
// contains filtered or unexported fields
}
BuiltinFn uses reflection to wrap Go functions into Elvish functions. Functions with simple signatures are handled by commonCallable, more elaborate cases are handled by CustomCallable interface, e.g. when importing the necessary types would have created a dependency loop.
Parameters are converted using ScanToGo.
Return values go to the channel part of the stdout port, after being converted using goToElv. If the last return value has type error and is not nil, it is turned into an exception and no ouputting happens. If the last return value is a nil error, it is ignored.
Note: reflect.Call is deliberately not used as it disables DCE (see https://github.com/u-root/u-root/issues/1477).
func NewBuiltinFn ¶
NewBuiltinFn creates a new ReflectBuiltinFn instance.
func NewBuiltinFnCustom ¶
func NewBuiltinFnCustom(name string, impl CustomCallable) *BuiltinFn
NewBuiltinFnCustom creates a new ReflectBuiltinFn instance.
type Callable ¶
type Callable interface { // Call calls the receiver in a Frame with arguments and options. Call(fm *Frame, args []interface{}, opts map[string]interface{}) error }
Callable wraps the Call method.
type Closure ¶
type Closure struct { ArgNames []string // The name for the rest argument. If empty, the function has fixed arity. RestArg string OptNames []string OptDefaults []interface{} Op Op Captured Ns SrcMeta *Source DefBegint int DefEnd int }
Closure is a closure defined in elvish script.
func (*Closure) IterateKeys ¶
type CompilationError ¶
type CompilationError struct { Message string Context util.SourceRange }
CompilationError represents a compilation error and can pretty print it.
func (*CompilationError) Error ¶
func (ce *CompilationError) Error() string
func (*CompilationError) Pprint ¶
func (ce *CompilationError) Pprint(indent string) string
Pprint pretty-prints a compilation error.
type CustomCallable ¶
type CustomCallable interface { // Target returns the callable's target function, needed to examine arguments. Target() interface{} // Call invokes the target function. Call(f *Frame, args []interface{}, opts RawOptions, inputs Inputs) ([]interface{}, error) }
CustomCallable is an interface for functions that have complex signatures not covered by commonCallable.
type Editor ¶
type Editor interface {
Notify(string, ...interface{})
}
Editor is the interface that the line editor has to satisfy. It is needed so that this package does not depend on the edit package.
type EnvList ¶
EnvList is a variable whose value is constructed from an environment variable by splitting at pathListSeparator. Changes to it are also propagated to the corresponding environment variable. Its elements cannot contain pathListSeparator or \0; attempting to put any in its elements will result in an error.
type Evaler ¶
type Evaler struct { Editor Editor // contains filtered or unexported fields }
Evaler is used to evaluate elvish sources. It maintains runtime context shared among all evalCtx instances.
func (*Evaler) AddAfterChdir ¶
AddAfterChdir adds a function to run after changing directory.
func (*Evaler) AddBeforeChdir ¶
AddBeforeChdir adds a function to run before changing directory.
func (*Evaler) Chdir ¶
Chdir changes the current directory. On success it also updates the PWD environment variable and records the new directory in the directory history. It runs the functions in beforeChdir immediately before changing the directory, and the functions in afterChdir immediately after (if chdir was successful). It returns nil as long as the directory changing part succeeds.
func (*Evaler) Close ¶
Close releases resources allocated when creating this Evaler. Currently this does nothing and always returns a nil error.
func (*Evaler) Compile ¶
Compile compiles Elvish code in the global scope. If the error is not nil, it always has type CompilationError.
func (*Evaler) EachNsInTop ¶
func (ev *Evaler) EachNsInTop(f func(s string))
EachNsInTop calls the passed function for each namespace that can be used from the top context.
func (*Evaler) EachVariableInTop ¶
EachVariableInTop calls the passed function for each variable name in namespace ns that can be found from the top context.
func (*Evaler) Eval ¶
Eval sets up the Evaler with the given ports and evaluates an Op. The supplied name and text are used in diagnostic messages.
func (*Evaler) EvalSource ¶
EvalSource evaluates a chunk of Elvish source.
func (*Evaler) EvalWithStdPorts ¶
EvalWithStdPorts sets up the Evaler with standard ports and evaluates an Op. The supplied name and text are used in diagnostic messages.
func (*Evaler) InstallBundled ¶
InstallBundled installs a bundled module to the Evaler.
func (*Evaler) InstallModule ¶
InstallModule installs a module to the Evaler so that it can be used with "use $name" from script.
func (*Evaler) PurelyEvalCompound ¶
func (*Evaler) PurelyEvalPartialCompound ¶
func (*Evaler) PurelyEvalPrimary ¶
PurelyEvalPrimary evaluates a primary node without causing any side effects. If this cannot be done, it returns nil.
Currently, only string literals and variables with no @ can be evaluated.
func (*Evaler) SetLibDir ¶
SetLibDir sets the library directory, in which external modules are to be found.
type Exception ¶
type Exception struct { Cause error Traceback *stackTrace }
Exception represents an elvish exception. It is both a Value accessible to elvishscript, and the type of error returned by public facing evaluation methods like (*Evaler)PEval.
func (*Exception) IterateKeys ¶
type ExternalCmd ¶
type ExternalCmd struct {
Name string
}
ExternalCmd is an external command.
func (ExternalCmd) Call ¶
func (e ExternalCmd) Call(fm *Frame, argVals []interface{}, opts map[string]interface{}) error
Call calls an external command.
func (ExternalCmd) Equal ¶
func (e ExternalCmd) Equal(a interface{}) bool
func (ExternalCmd) Hash ¶
func (e ExternalCmd) Hash() uint32
func (ExternalCmd) Kind ¶
func (ExternalCmd) Kind() string
func (ExternalCmd) Repr ¶
func (e ExternalCmd) Repr(int) string
type ExternalCmdExit ¶
type ExternalCmdExit struct { syscall.WaitStatus CmdName string Pid int }
ExternalCmdExit contains the exit status of external commands. If the command was stopped rather than terminated, the Pid field contains the pid of the process.
func (ExternalCmdExit) Error ¶
func (exit ExternalCmdExit) Error() string
type Frame ¶
type Frame struct { *Evaler // contains filtered or unexported fields }
Frame contains information of the current running function, aknin to a call frame in native CPU execution. A Frame is only modified during and very shortly after creation; new Frame's are "forked" when needed.
func NewTopFrame ¶
NewTopFrame creates a top-level Frame.
func (*Frame) Call ¶
Call calls a function with the given arguments and options. It does so in a protected environment so that exceptions thrown are wrapped in an Error.
func (*Frame) CallWithOutputCallback ¶
func (fm *Frame) CallWithOutputCallback(fn Callable, args []interface{}, opts map[string]interface{}, valuesCb func(<-chan interface{}), bytesCb func(*os.File)) error
CallWithOutputCallback calls a function with the given arguments and options, feeding the outputs to the given callbacks. It does so in a protected environment so that exceptions thrown are wrapped in an Error.
func (*Frame) CaptureOutput ¶
func (fm *Frame) CaptureOutput(fn Callable, args []interface{}, opts map[string]interface{}) (vs []interface{}, err error)
CaptureOutput calls a function with the given arguments and options, capturing and returning the output. It does so in a protected environment so that exceptions thrown are wrapped in an Error.
func (*Frame) Close ¶
Close releases resources allocated for this frame. It always returns a nil error. It may be called only once.
func (Frame) EachNsInTop ¶
func (ev Frame) EachNsInTop(f func(s string))
EachNsInTop calls the passed function for each namespace that can be used from the top context.
func (Frame) EachVariableInTop ¶
EachVariableInTop calls the passed function for each variable name in namespace ns that can be found from the top context.
func (*Frame) Eval ¶
Eval evaluates an op. It does so in a protected environment so that exceptions thrown are wrapped in an Error.
func (*Frame) ExecAndUnwrap ¶
func (ctx *Frame) ExecAndUnwrap(desc string, op ValuesOp) ValuesUnwrapper
ExecAndUnwrap executes a ValuesOp and creates an Unwrapper for the obtained values.
func (*Frame) InputChan ¶
func (fm *Frame) InputChan() chan interface{}
InputChan returns a channel from which input can be read.
func (*Frame) Interrupts ¶
func (fm *Frame) Interrupts() <-chan struct{}
Interrupts returns a channel that is closed when an interrupt signal comes.
func (*Frame) IsInterrupted ¶
IsInterrupted reports whether there has been an interrupt.
func (*Frame) IterateInputs ¶
func (fm *Frame) IterateInputs(f func(interface{}))
IterateInputs calls the passed function for each input element.
func (*Frame) OutputChan ¶
func (fm *Frame) OutputChan() chan<- interface{}
OutputChan returns a channel onto which output can be written.
func (*Frame) OutputFile ¶
OutputFile returns a file onto which output can be written.
func (*Frame) ResolveVar ¶
ResolveVar resolves a variable. When the variable cannot be found, nil is returned.
type GlobPattern ¶
GlobPattern is en ephemeral Value generated when evaluating tilde and wildcards.
func (GlobPattern) Concat ¶
func (gp GlobPattern) Concat(v interface{}) (interface{}, error)
func (GlobPattern) Equal ¶
func (gp GlobPattern) Equal(a interface{}) bool
func (GlobPattern) Hash ¶
func (gp GlobPattern) Hash() uint32
func (GlobPattern) Index ¶
func (gp GlobPattern) Index(k interface{}) (interface{}, error)
func (GlobPattern) Kind ¶
func (GlobPattern) Kind() string
func (GlobPattern) RConcat ¶
func (gp GlobPattern) RConcat(v interface{}) (interface{}, error)
func (GlobPattern) Repr ¶
func (gp GlobPattern) Repr(int) string
type LValuesOp ¶
type LValuesOp struct { Body LValuesOpBody Begin, End int }
LValuesOp is an operation on an Frame that produce Variable's.
type LValuesOpBody ¶
LValuesOpBody is the body of an LValuesOp.
type Ns ¶
Ns is a map from names to variables.
func (Ns) AddBuiltinFn ¶
AddBuiltinFn adds a builtin function to a namespace. It returns the namespace itself.
func (Ns) AddBuiltinFnCustom ¶
func (ns Ns) AddBuiltinFnCustom(nsName, name string, impl CustomCallable) Ns
AddBuiltinFnCustom adds a builtin function to a namespace. It returns the namespace itself.
func (Ns) AddBuiltinFns ¶
AddBuiltinFns adds builtin functions to a namespace. It returns the namespace itself.
func (Ns) IterateKeys ¶
type PipelineError ¶
type PipelineError struct {
Errors []*Exception
}
PipelineError represents the errors of pipelines, in which multiple commands may error.
func (PipelineError) Error ¶
func (pe PipelineError) Error() string
func (PipelineError) Repr ¶
func (pe PipelineError) Repr(indent int) string
type PwdVariable ¶
type PwdVariable struct {
// contains filtered or unexported fields
}
PwdVariable is a variable whose value always reflects the current working directory. Setting it changes the current working directory.
func (PwdVariable) Get ¶
func (PwdVariable) Get() interface{}
func (PwdVariable) Set ¶
func (pwd PwdVariable) Set(v interface{}) error
type RawOptions ¶
type RawOptions map[string]interface{}
func (RawOptions) Scan ¶
func (rawOpts RawOptions) Scan(ptr interface{})
Scan takes a pointer to a struct and scan options into it. A field named FieldName corresponds to the option named field-name, unless the field has a explicit "name" tag.
type Source ¶
type Source struct {
// contains filtered or unexported fields
}
Source describes a piece of source code.
func NewInteractiveSource ¶
NewInteractiveSource returns a Source for a piece of code entered interactively.
func NewInternalSource ¶
func NewModuleSource ¶
NewModuleSource returns a Source for a piece of code used as a module.
func NewScriptSource ¶
NewScriptSource returns a Source for a piece of code used as a script.
func (*Source) IterateKeys ¶
type SrcType ¶
type SrcType int
SrcType records the type of a piece of source code.
const ( // SrcInternal is a special SrcType for internal operations. SrcInternal SrcType = iota // SrcInteractive is the type of source code entered interactively. SrcInteractive // SrcScript is the type of source code used as a script. SrcScript // SrcModule is the type of source code used as a module. SrcModule )
type Test ¶
type Test struct {
// contains filtered or unexported fields
}
Test is a test case for TestEval.
func (Test) DoesNothing ¶
DoesNothing returns t unchanged. It is used to mark that a piece of code should simply does nothing. In particular, it shouldn't have any output and does not error.
func (Test) Errors ¶
Errors returns an altered Test that requires the source code to result in any error when evaluated.
func (Test) ErrorsWith ¶
ErrorsWith returns an altered Test that requires the source code to result in the specified error when evaluted.
func (Test) Prints ¶
Prints returns an altered test that requires the source code to produce the specified output in the byte pipe when evaluated.
func (Test) Puts ¶
Puts returns an altered Test that requires the source code to produce the specified values in the value channel when evaluated.
func (Test) PutsStrings ¶
Puts returns an altered Test that requires the source code to produce the specified strings in the value channel when evaluated.
type ValueUnwrapper ¶
type ValueUnwrapper struct {
// contains filtered or unexported fields
}
ValueUnwrapper unwraps one Value.
func (ValueUnwrapper) Any ¶
func (u ValueUnwrapper) Any() interface{}
func (ValueUnwrapper) Callable ¶
func (u ValueUnwrapper) Callable() Callable
func (ValueUnwrapper) FdOrClose ¶
func (u ValueUnwrapper) FdOrClose() int
func (ValueUnwrapper) Int ¶
func (u ValueUnwrapper) Int() int
func (ValueUnwrapper) NonNegativeInt ¶
func (u ValueUnwrapper) NonNegativeInt() int
func (ValueUnwrapper) String ¶
func (u ValueUnwrapper) String() string
type ValuesOp ¶
type ValuesOp struct { Body ValuesOpBody Begin, End int }
ValuesOp is an operation on an Frame that produce Value's.
type ValuesOpBody ¶
ValuesOpBody is the body of ValuesOp.
type ValuesUnwrapper ¶
type ValuesUnwrapper struct {
// contains filtered or unexported fields
}
ValuesUnwrapper unwraps []Value.
func (ValuesUnwrapper) One ¶
func (u ValuesUnwrapper) One() ValueUnwrapper
One unwraps the value to be exactly one value.
Notes ¶
Bugs ¶
When evaluating closures, async access to global variables and ports can be problematic.
Source Files ¶
- args_walker.go
- boilerplate.go
- builtin_fn.go
- builtin_fn_cmd.go
- builtin_fn_cmd_unix.go
- builtin_fn_fs.go
- builtin_fn_misc.go
- builtin_ns.go
- builtin_special.go
- chdir.go
- closure.go
- compilation_error.go
- compile_lvalue.go
- compile_op.go
- compile_value.go
- compiler.go
- editor.go
- env_list.go
- eval.go
- exception.go
- external_cmd.go
- frame.go
- glob.go
- interrupts.go
- must.go
- ns.go
- port.go
- process_unix.go
- purely_eval.go
- pwd.go
- raw_options.go
- resolve.go
- source.go
- stacktrace.go
- std_ports.go
- testutils.go
- unwrap.go
- util.go
- value.go
- variable_ref.go
Directories ¶
Path | Synopsis |
---|---|
Package bundled keeps bundled modules.
|
Package bundled keeps bundled modules. |
Package vals contains basic facilities for manipulating values used in the Elvish runtime.
|
Package vals contains basic facilities for manipulating values used in the Elvish runtime. |
Package vars contains basic types for manipulating Elvish variables.
|
Package vars contains basic types for manipulating Elvish variables. |