codedom

package
v0.3.2 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2018 License: BSD-3-Clause Imports: 6 Imported by: 4

Documentation

Overview

codedom package contains types representing a lower-level IR for easier construction of ES5. Expressions and Statements found in the codedom represent a set of primitives to which the SRG can be translated while not losing semantic meaning.

Index

Constants

View Source
const (
	CastFunction               RuntimeFunction = "$t.cast"
	IsTypeFunction             RuntimeFunction = "$t.istype"
	DynamicAccessFunction      RuntimeFunction = "$t.dynamicaccess"
	AssertNotNullFunction      RuntimeFunction = "$t.assertnotnull"
	StreamMemberAccessFunction RuntimeFunction = "$t.streamaccess"
	BoxFunction                RuntimeFunction = "$t.box"
	FastBoxFunction            RuntimeFunction = "$t.fastbox"
	UnboxFunction              RuntimeFunction = "$t.unbox"
	NullableInvokeFunction     RuntimeFunction = "$t.nullableinvoke"

	AsyncNullableComparisonFunction RuntimeFunction = "$t.asyncnullcompare"
	SyncNullableComparisonFunction  RuntimeFunction = "$t.syncnullcompare"

	NewPromiseFunction          RuntimeFunction = "$promise.new"
	ResolvePromiseFunction      RuntimeFunction = "$promise.resolve"
	TranslatePromiseFunction    RuntimeFunction = "$promise.translate"
	ShortCircuitPromiseFunction RuntimeFunction = "$promise.shortcircuit"
	MaybePromiseFunction        RuntimeFunction = "$promise.maybe"

	StatePushResourceFunction RuntimeFunction = "$resources.pushr"
	StatePopResourceFunction  RuntimeFunction = "$resources.popr"

	EmptyGeneratorDirect RuntimeFunction = "$generator.directempty"

	BoxedDataProperty string = "$wrapped"
)

Variables

This section is empty.

Functions

func IsAsynchronous

func IsAsynchronous(statementOrExpression StatementOrExpression, scopegraph *scopegraph.ScopeGraph) bool

IsAsynchronous returns true if the statementOrExpression or one of its child expressions is asynchronous.

func IsManagingResources

func IsManagingResources(statementOrExpression StatementOrExpression) bool

IsManagingResources returns true if the statement or any of its child statements are a ResourceBlockNode.

func IsMaybePromisingMember

func IsMaybePromisingMember(member typegraph.TGMember) bool

IsMaybePromisingMember returns true if the given member *might* be promising (will return false for those that are known to promise).

Types

type AnonymousClosureCallNode

type AnonymousClosureCallNode struct {
	Closure   *FunctionDefinitionNode // The closure to call.
	Arguments []Expression            // The arguments to the function call.
	// contains filtered or unexported fields
}

AnonymousClosureCallNode wraps a function call to an anonymous closure, properly handling whether to await the result.

func (*AnonymousClosureCallNode) IsAsynchronous

func (e *AnonymousClosureCallNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*AnonymousClosureCallNode) IsExpression

func (eb *AnonymousClosureCallNode) IsExpression()

func (*AnonymousClosureCallNode) ManagesResources

func (eb *AnonymousClosureCallNode) ManagesResources() bool

func (*AnonymousClosureCallNode) ReferencedMember

func (eb *AnonymousClosureCallNode) ReferencedMember() (typegraph.TGMember, bool)

type ArrayLiteralNode

type ArrayLiteralNode struct {
	Values []Expression
	// contains filtered or unexported fields
}

ArrayLiteralNode represents a literal array definition.

func (*ArrayLiteralNode) IsAsynchronous

func (e *ArrayLiteralNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*ArrayLiteralNode) IsExpression

func (eb *ArrayLiteralNode) IsExpression()

func (*ArrayLiteralNode) ManagesResources

func (eb *ArrayLiteralNode) ManagesResources() bool

func (*ArrayLiteralNode) ReferencedMember

func (eb *ArrayLiteralNode) ReferencedMember() (typegraph.TGMember, bool)

type ArrowPromiseNode

type ArrowPromiseNode struct {
	ChildExpression      Expression // The child expression containing the promise.
	ResolutionAssignment Expression // Expression assigning the resolution value, if any.
	RejectionAssignment  Expression // Expression assigning the rejection value, if any.
	Target               Statement  // The statement to which the await will jump.
	// contains filtered or unexported fields
}

ArrowPromiseNode represents a wait on a promise expression and assignment to a resolution expression and/or rejection expression once the promise returns.

func (*ArrowPromiseNode) IsJump

func (j *ArrowPromiseNode) IsJump() bool

func (*ArrowPromiseNode) IsLocallyAsynchronous

func (s *ArrowPromiseNode) IsLocallyAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*ArrowPromiseNode) IsReferenceable

func (sb *ArrowPromiseNode) IsReferenceable() bool

func (*ArrowPromiseNode) ManagesResources

func (sb *ArrowPromiseNode) ManagesResources() bool

func (*ArrowPromiseNode) MarkReferenceable

func (sb *ArrowPromiseNode) MarkReferenceable()

func (*ArrowPromiseNode) ReleasesFlow

func (sb *ArrowPromiseNode) ReleasesFlow() bool

func (*ArrowPromiseNode) WalkExpressions

func (s *ArrowPromiseNode) WalkExpressions(walker expressionWalker) bool

func (*ArrowPromiseNode) WalkStatements

func (s *ArrowPromiseNode) WalkStatements(walker statementWalker) bool

type AwaitPromiseNode

type AwaitPromiseNode struct {
	ChildExpression Expression // The child expression.
	// contains filtered or unexported fields
}

AwaitPromiseNode wraps a child expression that returns a promise, waiting for it to complete and return.

func (*AwaitPromiseNode) IsAsynchronous

func (e *AwaitPromiseNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*AwaitPromiseNode) IsExpression

func (eb *AwaitPromiseNode) IsExpression()

func (*AwaitPromiseNode) ManagesResources

func (eb *AwaitPromiseNode) ManagesResources() bool

func (*AwaitPromiseNode) ReferencedMember

func (eb *AwaitPromiseNode) ReferencedMember() (typegraph.TGMember, bool)

type BinaryOperationNode

type BinaryOperationNode struct {
	Operator  string     // The operator.
	LeftExpr  Expression // The left expression.
	RightExpr Expression // The right expression.
	// contains filtered or unexported fields
}

BinaryOperationNode wraps a call to a binary operator.

func (*BinaryOperationNode) IsAsynchronous

func (e *BinaryOperationNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*BinaryOperationNode) IsExpression

func (eb *BinaryOperationNode) IsExpression()

func (*BinaryOperationNode) ManagesResources

func (eb *BinaryOperationNode) ManagesResources() bool

func (*BinaryOperationNode) ReferencedMember

func (eb *BinaryOperationNode) ReferencedMember() (typegraph.TGMember, bool)

type CompoundExpressionNode

type CompoundExpressionNode struct {
	InputVarName string
	InputValue   Expression
	Expressions  []Expression
	OutputValue  Expression
	// contains filtered or unexported fields
}

CompoundExpressionNode represents an expression that executes multiple sub-expressions with an input and output value expression.

func (*CompoundExpressionNode) IsAsynchronous

func (e *CompoundExpressionNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*CompoundExpressionNode) IsExpression

func (eb *CompoundExpressionNode) IsExpression()

func (*CompoundExpressionNode) ManagesResources

func (eb *CompoundExpressionNode) ManagesResources() bool

func (*CompoundExpressionNode) ReferencedMember

func (eb *CompoundExpressionNode) ReferencedMember() (typegraph.TGMember, bool)

type ConditionalJumpNode

type ConditionalJumpNode struct {
	True             Statement  // The statement executed if the branch is true.
	False            Statement  // The statement executed if the branch is false.
	BranchExpression Expression // The expression for branching. Must be a Boolean expression.
	// contains filtered or unexported fields
}

ConditionalJumpNode represents a jump to a true statement if an expression is true, and otherwise to a false statement.

func BranchOn

func BranchOn(branchExpression Expression, basis compilergraph.GraphNode) *ConditionalJumpNode

func (*ConditionalJumpNode) IsJump

func (j *ConditionalJumpNode) IsJump() bool

func (*ConditionalJumpNode) IsReferenceable

func (sb *ConditionalJumpNode) IsReferenceable() bool

func (*ConditionalJumpNode) ManagesResources

func (sb *ConditionalJumpNode) ManagesResources() bool

func (*ConditionalJumpNode) MarkReferenceable

func (sb *ConditionalJumpNode) MarkReferenceable()

func (*ConditionalJumpNode) ReleasesFlow

func (sb *ConditionalJumpNode) ReleasesFlow() bool

func (*ConditionalJumpNode) WalkExpressions

func (s *ConditionalJumpNode) WalkExpressions(walker expressionWalker) bool

func (*ConditionalJumpNode) WalkStatements

func (s *ConditionalJumpNode) WalkStatements(walker statementWalker) bool

type DynamicAccessNode

type DynamicAccessNode struct {
	ChildExpression     Expression // The child expression.
	Name                string     // The name of the member being accessed.
	IsPossiblyPromising bool       // Whether the dynamic access is possibily promising.
	// contains filtered or unexported fields
}

DynamicAccessNode is the access of an unknown named member under a child expression.

func (*DynamicAccessNode) ExprName

func (n *DynamicAccessNode) ExprName() string

func (*DynamicAccessNode) IsAsynchronous

func (e *DynamicAccessNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*DynamicAccessNode) IsExpression

func (eb *DynamicAccessNode) IsExpression()

func (*DynamicAccessNode) ManagesResources

func (eb *DynamicAccessNode) ManagesResources() bool

func (*DynamicAccessNode) ReferencedMember

func (eb *DynamicAccessNode) ReferencedMember() (typegraph.TGMember, bool)

type EmptyStatementNode

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

EmptyStatementNode represents an empty statement. Typically used as a the target of jumps.

func (*EmptyStatementNode) GetNext

func (nsb *EmptyStatementNode) GetNext() Statement

func (*EmptyStatementNode) SetNext

func (nsb *EmptyStatementNode) SetNext(nextStatement Statement)

func (*EmptyStatementNode) WalkNextStatements

func (nsb *EmptyStatementNode) WalkNextStatements(walker statementWalker) bool

func (*EmptyStatementNode) WalkStatements

func (s *EmptyStatementNode) WalkStatements(walker statementWalker) bool

type Expression

type Expression interface {
	// Marks the expression as an expression in the Go type system.
	IsExpression()

	// BasisNode is the node that is the basis of the expression for source mapping.
	BasisNode() compilergraph.GraphNode

	// IsAsynchronous returns true if the expression or one of its child expressions are
	// async.
	IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

	// ReferencedMember returns the member referenced by this expression, if any.
	ReferencedMember() (typegraph.TGMember, bool)
}

Expression represents an expression.

func AnonymousClosureCall

func AnonymousClosureCall(closure *FunctionDefinitionNode, arguments []Expression, basis compilergraph.GraphNode) Expression

func AreEqual

func AreEqual(leftExpr Expression, rightExpr Expression, comparisonType typegraph.TypeReference, tdg *typegraph.TypeGraph, basis compilergraph.GraphNode) Expression

AreEqual returns a call to the comparison operator between the two expressions.

func ArrayLiteral

func ArrayLiteral(values []Expression, basis compilergraph.GraphNode) Expression

func AwaitPromise

func AwaitPromise(childExpression Expression, basis compilergraph.GraphNode) Expression

func BinaryOperation

func BinaryOperation(leftExpr Expression, operator string, rightExpr Expression, basis compilergraph.GraphNode) Expression

func CompoundExpression

func CompoundExpression(inputVarName string, inputValue Expression, expressions []Expression, outputValue Expression, basis compilergraph.GraphNode) Expression

func DynamicAccess

func DynamicAccess(childExpression Expression, name string, isPossiblyPromising bool, basis compilergraph.GraphNode) Expression

func FunctionCall

func FunctionCall(childExpression Expression, arguments []Expression, basis compilergraph.GraphNode) Expression

func GenericSpecification

func GenericSpecification(childExpression Expression, typeArguments []Expression, basis compilergraph.GraphNode) Expression

func InvokeFunction

func InvokeFunction(callExpr Expression, arguments []Expression, callType scopegraph.PromisingAccessType, sg *scopegraph.ScopeGraph, basisNode compilergraph.GraphNode) Expression

InvokeFunction generates the CodeDOM for a function call, properly handling promise awaiting, including maybe wrapping.

func LiteralValue

func LiteralValue(value string, basis compilergraph.GraphNode) Expression

func LocalAssignment

func LocalAssignment(target string, value Expression, basis compilergraph.GraphNode) Expression

func LocalReference

func LocalReference(name string, basis compilergraph.GraphNode) Expression

func MemberAssignment

func MemberAssignment(target typegraph.TGMember, nameExpr Expression, value Expression, basis compilergraph.GraphNode) Expression

func MemberCall

func MemberCall(childExpression Expression, member typegraph.TGMember, arguments []Expression, basis compilergraph.GraphNode) Expression

func MemberCallWithCallType

func MemberCallWithCallType(childExpression Expression, member typegraph.TGMember, arguments []Expression, callType scopegraph.PromisingAccessType, basis compilergraph.GraphNode) Expression

func MemberReference

func MemberReference(childExpression Expression, member typegraph.TGMember, basis compilergraph.GraphNode) Expression

func NativeAccess

func NativeAccess(childExpr Expression, name string, basis compilergraph.GraphNode) Expression

func NativeAssign

func NativeAssign(target Expression, value Expression, basis compilergraph.GraphNode) Expression

func NativeIndexing

func NativeIndexing(childExpression Expression, index Expression, basis compilergraph.GraphNode) Expression

func NativeMemberAccess

func NativeMemberAccess(childExpression Expression, nativeName string, member typegraph.TGMember, basis compilergraph.GraphNode) Expression

func NestedTypeAccess

func NestedTypeAccess(childExpression Expression, innerType typegraph.TypeReference, basis compilergraph.GraphNode) Expression

func NominalRefWrapping

func NominalRefWrapping(childExpression Expression, childExprType typegraph.TypeReference, nominalTypeRef typegraph.TypeReference, basis compilergraph.GraphNode) Expression

func NominalUnwrapping

func NominalUnwrapping(childExpression Expression, childExprType typegraph.TypeReference, basis compilergraph.GraphNode) Expression

func NominalWrapping

func NominalWrapping(childExpression Expression, nominalType typegraph.TGTypeDecl, basis compilergraph.GraphNode) Expression

func NullableMemberCall

func NullableMemberCall(childExpression Expression, member typegraph.TGMember, arguments []Expression, basis compilergraph.GraphNode) Expression

func NullableMemberReference

func NullableMemberReference(childExpression Expression, member typegraph.TGMember, basis compilergraph.GraphNode) Expression

func ObjectLiteral

func ObjectLiteral(entries []ObjectLiteralEntryNode, basis compilergraph.GraphNode) Expression

func RuntimeFunctionCall

func RuntimeFunctionCall(function RuntimeFunction, arguments []Expression, basis compilergraph.GraphNode) Expression

func StaticMemberReference

func StaticMemberReference(member typegraph.TGMember, parentType typegraph.TypeReference, basis compilergraph.GraphNode) Expression

func StaticTypeReference

func StaticTypeReference(typeDecl typegraph.TGTypeDecl, basis compilergraph.GraphNode) Expression

func Ternary

func Ternary(checkExpr Expression, thenExpr Expression, elseExpr Expression, basis compilergraph.GraphNode) Expression

func TypeLiteral

func TypeLiteral(typeRef typegraph.TypeReference, basis compilergraph.GraphNode) Expression

func UnaryOperation

func UnaryOperation(operator string, childExpr Expression, basis compilergraph.GraphNode) Expression

type ExpressionStatementNode

type ExpressionStatementNode struct {
	Expression Expression // The expression being executed.
	// contains filtered or unexported fields
}

ExpressionStatementNode represents a statement of a single expression being executed.

func (*ExpressionStatementNode) GetNext

func (nsb *ExpressionStatementNode) GetNext() Statement

func (*ExpressionStatementNode) SetNext

func (nsb *ExpressionStatementNode) SetNext(nextStatement Statement)

func (*ExpressionStatementNode) WalkExpressions

func (s *ExpressionStatementNode) WalkExpressions(walker expressionWalker) bool

func (*ExpressionStatementNode) WalkNextStatements

func (nsb *ExpressionStatementNode) WalkNextStatements(walker statementWalker) bool

func (*ExpressionStatementNode) WalkStatements

func (s *ExpressionStatementNode) WalkStatements(walker statementWalker) bool

type FunctionCallNode

type FunctionCallNode struct {
	ChildExpression Expression   // The child expression.
	Arguments       []Expression // The arguments to the function call.
	// contains filtered or unexported fields
}

FunctionCallNode wraps a function call.

func (*FunctionCallNode) IsAsynchronous

func (e *FunctionCallNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*FunctionCallNode) IsExpression

func (eb *FunctionCallNode) IsExpression()

func (*FunctionCallNode) ManagesResources

func (eb *FunctionCallNode) ManagesResources() bool

func (*FunctionCallNode) ReferencedMember

func (eb *FunctionCallNode) ReferencedMember() (typegraph.TGMember, bool)

type FunctionDefinitionNode

type FunctionDefinitionNode struct {
	Generics           []string                 // The names of the generics of the function, if any.
	Parameters         []string                 // The names of the parameters of the function, if any.
	Body               StatementOrExpression    // The body for the function.
	RequiresThis       bool                     // Whether the function needs '$this' defined.
	GeneratorYieldType *typegraph.TypeReference // The type of items being yielded, if this is a generator.
	Specialization     SpecializedFunction      // The specialization for this function, if any.
	// contains filtered or unexported fields
}

FunctionDefinitionNode represents the definition of a function.

func FunctionDefinition

func FunctionDefinition(generics []string, parameters []string, body StatementOrExpression, requiresThis bool, specialization SpecializedFunction, basisNode compilergraph.GraphNode) *FunctionDefinitionNode

FunctionDefinition constructs a new function definition.

func GeneratorDefinition added in v0.3.0

func GeneratorDefinition(generics []string, parameters []string, body StatementOrExpression, requiresThis bool, yieldType typegraph.TypeReference, basisNode compilergraph.GraphNode) *FunctionDefinitionNode

GeneratorDefinition constructs a new function definition for a generator function.

func (FunctionDefinitionNode) IsAsynchronous

func (f FunctionDefinitionNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

IsAsynchronous returns whether the function's implementation is asynchronous in some way.

func (*FunctionDefinitionNode) IsExpression

func (eb *FunctionDefinitionNode) IsExpression()

func (FunctionDefinitionNode) IsGenerator

func (f FunctionDefinitionNode) IsGenerator() bool

IsGenerator returns whether the function is a generator.

func (FunctionDefinitionNode) ManagesResources

func (f FunctionDefinitionNode) ManagesResources() bool

ManagesResources returns whether any of the statements in the function's body are ResourceBlock's.

func (*FunctionDefinitionNode) ReferencedMember

func (eb *FunctionDefinitionNode) ReferencedMember() (typegraph.TGMember, bool)

func (FunctionDefinitionNode) UniqueId

func (f FunctionDefinitionNode) UniqueId() string

UniqueId returns a unique ID for this function definition. Note that this is intended to be stable across compilations if the input source has not changed.

func (FunctionDefinitionNode) WorkerExecute

func (f FunctionDefinitionNode) WorkerExecute() bool

WorkerExecute returns whether the function should be executed by an async web worker.

type GenericSpecificationNode

type GenericSpecificationNode struct {
	ChildExpression Expression   // The child expression.
	TypeArguments   []Expression // The specified generic types.
	// contains filtered or unexported fields
}

GenericSpecificationNode wraps a generic specification.

func (*GenericSpecificationNode) IsAsynchronous

func (e *GenericSpecificationNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*GenericSpecificationNode) IsExpression

func (eb *GenericSpecificationNode) IsExpression()

func (*GenericSpecificationNode) ManagesResources

func (eb *GenericSpecificationNode) ManagesResources() bool

func (*GenericSpecificationNode) ReferencedMember

func (e *GenericSpecificationNode) ReferencedMember() (typegraph.TGMember, bool)

type HasNextStatement

type HasNextStatement interface {
	GetNext() Statement // Returns the next statement, if any.
	SetNext(Statement)  // Sets the next statement to thatg specified.
}

HasNextStatement marks a statement as having a next statement in a linked chain of statements.

type LiteralValueNode

type LiteralValueNode struct {
	Value string // The literal value.
	// contains filtered or unexported fields
}

LiteralValueNode refers to a literal value to be emitted.

func (*LiteralValueNode) IsAsynchronous

func (sb *LiteralValueNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*LiteralValueNode) IsExpression

func (eb *LiteralValueNode) IsExpression()

func (*LiteralValueNode) ManagesResources

func (eb *LiteralValueNode) ManagesResources() bool

func (*LiteralValueNode) ReferencedMember

func (eb *LiteralValueNode) ReferencedMember() (typegraph.TGMember, bool)

type LocalAssignmentNode

type LocalAssignmentNode struct {
	Target string     // The item being assigned.
	Value  Expression // The value of the assignment.
	// contains filtered or unexported fields
}

LocalAssignmentNode represents assignment of a value to a target variable or parameter.

func (*LocalAssignmentNode) IsAsynchronous

func (e *LocalAssignmentNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*LocalAssignmentNode) IsExpression

func (eb *LocalAssignmentNode) IsExpression()

func (*LocalAssignmentNode) ManagesResources

func (eb *LocalAssignmentNode) ManagesResources() bool

func (*LocalAssignmentNode) ReferencedMember

func (eb *LocalAssignmentNode) ReferencedMember() (typegraph.TGMember, bool)

type LocalReferenceNode

type LocalReferenceNode struct {
	Name string // The name of the variable or parameter.
	// contains filtered or unexported fields
}

LocalReferenceNode is a named reference to a local variable or parameter.

func (LocalReferenceNode) ExprName

func (n LocalReferenceNode) ExprName() string

func (*LocalReferenceNode) IsAsynchronous

func (sb *LocalReferenceNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*LocalReferenceNode) IsExpression

func (eb *LocalReferenceNode) IsExpression()

func (*LocalReferenceNode) ManagesResources

func (eb *LocalReferenceNode) ManagesResources() bool

func (*LocalReferenceNode) ReferencedMember

func (eb *LocalReferenceNode) ReferencedMember() (typegraph.TGMember, bool)

type LocallyAsynchronousStatement

type LocallyAsynchronousStatement interface {
	IsLocallyAsynchronous(scopegraph *scopegraph.ScopeGraph) bool
}

LocallyAsynchronousStatement matches statements that themselves can be async, outside of their child expressions.

type MemberAssignmentNode

type MemberAssignmentNode struct {
	Target         typegraph.TGMember // The item being assigned.
	NameExpression Expression         // The expression referring to the member.
	Value          Expression         // The value of the assignment.
	// contains filtered or unexported fields
}

MemberAssignmentNode represents assignment of a value to a target member.

func (*MemberAssignmentNode) IsAsynchronous

func (e *MemberAssignmentNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*MemberAssignmentNode) IsExpression

func (eb *MemberAssignmentNode) IsExpression()

func (*MemberAssignmentNode) IsPromise

func (ma *MemberAssignmentNode) IsPromise(sg *scopegraph.ScopeGraph) bool

func (*MemberAssignmentNode) ManagesResources

func (eb *MemberAssignmentNode) ManagesResources() bool

func (*MemberAssignmentNode) ReferencedMember

func (eb *MemberAssignmentNode) ReferencedMember() (typegraph.TGMember, bool)

type MemberCallNode

type MemberCallNode struct {
	ChildExpression Expression                     // The child expression.
	Member          typegraph.TGMember             // The member being accessed.
	Arguments       []Expression                   // The arguments to the function call.
	Nullable        bool                           // Whether the call is on a nullable access.
	CallType        scopegraph.PromisingAccessType // The access type for this call.
	// contains filtered or unexported fields
}

MemberCallNode is the function call of a known named member under a child expression.

func (*MemberCallNode) IsAsynchronous

func (e *MemberCallNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*MemberCallNode) IsExpression

func (eb *MemberCallNode) IsExpression()

func (*MemberCallNode) IsPromise

func (mc *MemberCallNode) IsPromise(sg *scopegraph.ScopeGraph) bool

func (*MemberCallNode) ManagesResources

func (eb *MemberCallNode) ManagesResources() bool

func (*MemberCallNode) ReferencedMember

func (eb *MemberCallNode) ReferencedMember() (typegraph.TGMember, bool)

type MemberReferenceNode

type MemberReferenceNode struct {
	ChildExpression Expression         // The child expression.
	Member          typegraph.TGMember // The member being accessed.
	Nullable        bool               // Whether the access is a nullable access (`?.`)
	// contains filtered or unexported fields
}

MemberReferenceNode is a reference of a known named member under a child expression.

func (MemberReferenceNode) ExprName

func (n MemberReferenceNode) ExprName() string

func (*MemberReferenceNode) IsAsynchronous

func (e *MemberReferenceNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*MemberReferenceNode) IsExpression

func (eb *MemberReferenceNode) IsExpression()

func (*MemberReferenceNode) IsPromise

func (mr *MemberReferenceNode) IsPromise(sg *scopegraph.ScopeGraph) bool

func (*MemberReferenceNode) ManagesResources

func (eb *MemberReferenceNode) ManagesResources() bool

func (*MemberReferenceNode) ReferencedMember

func (e *MemberReferenceNode) ReferencedMember() (typegraph.TGMember, bool)

type Named

type Named interface {
	ExprName() string
}

Named marks an expression with a source mapping name.

type NativeAccessNode

type NativeAccessNode struct {
	ChildExpression Expression // The child expression.
	Name            string     // The name of the member being accessed.
	// contains filtered or unexported fields
}

NativeAccessNode is the access of an unknown native member under a child expression.

func (*NativeAccessNode) ExprName

func (n *NativeAccessNode) ExprName() string

func (*NativeAccessNode) IsAsynchronous

func (e *NativeAccessNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*NativeAccessNode) IsExpression

func (eb *NativeAccessNode) IsExpression()

func (*NativeAccessNode) ManagesResources

func (eb *NativeAccessNode) ManagesResources() bool

func (*NativeAccessNode) ReferencedMember

func (eb *NativeAccessNode) ReferencedMember() (typegraph.TGMember, bool)

type NativeAssignNode

type NativeAssignNode struct {
	TargetExpression Expression // The target expression.
	ValueExpression  Expression // The value expression.
	// contains filtered or unexported fields
}

NativeAssignNode is the assignment of one expression to another expression.

func (*NativeAssignNode) IsAsynchronous

func (e *NativeAssignNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*NativeAssignNode) IsExpression

func (eb *NativeAssignNode) IsExpression()

func (*NativeAssignNode) ManagesResources

func (eb *NativeAssignNode) ManagesResources() bool

func (*NativeAssignNode) ReferencedMember

func (eb *NativeAssignNode) ReferencedMember() (typegraph.TGMember, bool)

type NativeIndexingNode

type NativeIndexingNode struct {
	ChildExpression Expression // The child expression.
	IndexExpression Expression // The index expression.
	// contains filtered or unexported fields
}

NativeIndexingNode is the indexing of one expression by another expression.

func (*NativeIndexingNode) IsAsynchronous

func (e *NativeIndexingNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*NativeIndexingNode) IsExpression

func (eb *NativeIndexingNode) IsExpression()

func (*NativeIndexingNode) ManagesResources

func (eb *NativeIndexingNode) ManagesResources() bool

func (*NativeIndexingNode) ReferencedMember

func (eb *NativeIndexingNode) ReferencedMember() (typegraph.TGMember, bool)

type NativeMemberAccessNode

type NativeMemberAccessNode struct {
	ChildExpression Expression         // The child expression.
	NativeName      string             // The native name to access to reference the member,
	Member          typegraph.TGMember // The member being accessed.
	// contains filtered or unexported fields
}

NativeMemberAccessNode is the access of a named member under a child expression. Unlike a NativeAccessNode, this node is decorated with the referenced member for proper async handling.

func (*NativeMemberAccessNode) ExprName

func (n *NativeMemberAccessNode) ExprName() string

func (*NativeMemberAccessNode) IsAsynchronous

func (e *NativeMemberAccessNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*NativeMemberAccessNode) IsExpression

func (eb *NativeMemberAccessNode) IsExpression()

func (*NativeMemberAccessNode) IsPromise

func (mr *NativeMemberAccessNode) IsPromise(sg *scopegraph.ScopeGraph) bool

func (*NativeMemberAccessNode) ManagesResources

func (eb *NativeMemberAccessNode) ManagesResources() bool

func (*NativeMemberAccessNode) ReferencedMember

func (e *NativeMemberAccessNode) ReferencedMember() (typegraph.TGMember, bool)

type NestedTypeAccessNode

type NestedTypeAccessNode struct {
	ChildExpression Expression              // The child expression.
	InnerType       typegraph.TypeReference // The inner type.
	// contains filtered or unexported fields
}

NestedTypeAccessNode is a reference to an inner type under a structurally inherited class.

func (*NestedTypeAccessNode) IsAsynchronous

func (e *NestedTypeAccessNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*NestedTypeAccessNode) IsExpression

func (eb *NestedTypeAccessNode) IsExpression()

func (*NestedTypeAccessNode) ManagesResources

func (eb *NestedTypeAccessNode) ManagesResources() bool

func (*NestedTypeAccessNode) ReferencedMember

func (eb *NestedTypeAccessNode) ReferencedMember() (typegraph.TGMember, bool)

type NominalUnwrappingNode

type NominalUnwrappingNode struct {
	ChildExpression     Expression
	ChildExpressionType typegraph.TypeReference
	// contains filtered or unexported fields
}

NominalUnwrappingNode is the unwrapping of an instance of a nominal type back to its original type.

func (*NominalUnwrappingNode) IsAsynchronous

func (e *NominalUnwrappingNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*NominalUnwrappingNode) IsExpression

func (eb *NominalUnwrappingNode) IsExpression()

func (*NominalUnwrappingNode) ManagesResources

func (eb *NominalUnwrappingNode) ManagesResources() bool

func (*NominalUnwrappingNode) ReferencedMember

func (eb *NominalUnwrappingNode) ReferencedMember() (typegraph.TGMember, bool)

type NominalWrappingNode

type NominalWrappingNode struct {
	ChildExpression     Expression
	ChildExpressionType typegraph.TypeReference
	NominalTypeRef      typegraph.TypeReference
	IsLiteralWrap       bool
	// contains filtered or unexported fields
}

NominalWrappingNode is the wrapping of an instance in a nominal type.

func (*NominalWrappingNode) IsAsynchronous

func (e *NominalWrappingNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*NominalWrappingNode) IsExpression

func (eb *NominalWrappingNode) IsExpression()

func (*NominalWrappingNode) ManagesResources

func (eb *NominalWrappingNode) ManagesResources() bool

func (*NominalWrappingNode) ReferencedMember

func (eb *NominalWrappingNode) ReferencedMember() (typegraph.TGMember, bool)

type ObjectLiteralEntryNode

type ObjectLiteralEntryNode struct {
	KeyExpression   Expression
	ValueExpression Expression
	BasisNode       compilergraph.GraphNode
}

ObjectLiteralEntryNode represents an entry in an object literal.

func (*ObjectLiteralEntryNode) IsAsynchronous

func (e *ObjectLiteralEntryNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

type ObjectLiteralNode

type ObjectLiteralNode struct {
	Entries []ObjectLiteralEntryNode
	// contains filtered or unexported fields
}

ObjectLiteralNode represents a literal object definition.

func (*ObjectLiteralNode) IsAsynchronous

func (e *ObjectLiteralNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*ObjectLiteralNode) IsExpression

func (eb *ObjectLiteralNode) IsExpression()

func (*ObjectLiteralNode) ManagesResources

func (eb *ObjectLiteralNode) ManagesResources() bool

func (*ObjectLiteralNode) ReferencedMember

func (eb *ObjectLiteralNode) ReferencedMember() (typegraph.TGMember, bool)

type RejectionNode

type RejectionNode struct {
	Value Expression // The value rejected, if any.
	// contains filtered or unexported fields
}

RejectionNode represents the rejection of a function.

func (*RejectionNode) IsJump

func (sb *RejectionNode) IsJump() bool

func (*RejectionNode) IsReferenceable

func (sb *RejectionNode) IsReferenceable() bool

func (*RejectionNode) ManagesResources

func (sb *RejectionNode) ManagesResources() bool

func (*RejectionNode) MarkReferenceable

func (sb *RejectionNode) MarkReferenceable()

func (*RejectionNode) ReleasesFlow

func (sb *RejectionNode) ReleasesFlow() bool

func (*RejectionNode) WalkExpressions

func (s *RejectionNode) WalkExpressions(walker expressionWalker) bool

func (*RejectionNode) WalkStatements

func (s *RejectionNode) WalkStatements(walker statementWalker) bool

type ResolutionNode

type ResolutionNode struct {
	Value Expression // The value resolved, if any.
	// contains filtered or unexported fields
}

ResolutionNode represents the resolution of a function.

func (*ResolutionNode) IsJump

func (sb *ResolutionNode) IsJump() bool

func (*ResolutionNode) IsReferenceable

func (sb *ResolutionNode) IsReferenceable() bool

func (*ResolutionNode) ManagesResources

func (sb *ResolutionNode) ManagesResources() bool

func (*ResolutionNode) MarkReferenceable

func (sb *ResolutionNode) MarkReferenceable()

func (*ResolutionNode) ReleasesFlow

func (sb *ResolutionNode) ReleasesFlow() bool

func (*ResolutionNode) WalkExpressions

func (s *ResolutionNode) WalkExpressions(walker expressionWalker) bool

func (*ResolutionNode) WalkStatements

func (s *ResolutionNode) WalkStatements(walker statementWalker) bool

type ResolveExpressionNode

type ResolveExpressionNode struct {
	ChildExpression Expression // The child expression to be executed.
	ResolutionName  string     // Variable to which the resolution value is assigned, if any.
	RejectionName   string     // Variable to which the rejection value is assigned, if any.
	Target          Statement  // The statement to which the resolve will jump.
	// contains filtered or unexported fields
}

ResolveExpressionNode represents a resolution of an arbitrary expression, with assignment to either a resolved value or a rejected value.

func (*ResolveExpressionNode) IsJump

func (j *ResolveExpressionNode) IsJump() bool

func (*ResolveExpressionNode) IsReferenceable

func (sb *ResolveExpressionNode) IsReferenceable() bool

func (*ResolveExpressionNode) ManagesResources

func (sb *ResolveExpressionNode) ManagesResources() bool

func (*ResolveExpressionNode) MarkReferenceable

func (sb *ResolveExpressionNode) MarkReferenceable()

func (*ResolveExpressionNode) ReleasesFlow

func (sb *ResolveExpressionNode) ReleasesFlow() bool

func (*ResolveExpressionNode) WalkExpressions

func (s *ResolveExpressionNode) WalkExpressions(walker expressionWalker) bool

func (*ResolveExpressionNode) WalkStatements

func (s *ResolveExpressionNode) WalkStatements(walker statementWalker) bool

type ResourceBlockNode

type ResourceBlockNode struct {
	ResourceName  string             // The name for the resource.
	Resource      Expression         // The resource itself.
	Statement     Statement          // The statement to execute with the resource.
	ReleaseMethod typegraph.TGMember // The Release() for the resource.
	// contains filtered or unexported fields
}

ResourceBlockNode represents a resource placed on the resource stack for the duration of a statement call.

func (*ResourceBlockNode) GetNext

func (nsb *ResourceBlockNode) GetNext() Statement

func (*ResourceBlockNode) HasAsyncRelease

func (s *ResourceBlockNode) HasAsyncRelease(sg *scopegraph.ScopeGraph) bool

HasAsyncRelease returns true if the Release() call on the resource managed by this block is async.

func (*ResourceBlockNode) IsLocallyAsynchronous

func (s *ResourceBlockNode) IsLocallyAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*ResourceBlockNode) SetNext

func (nsb *ResourceBlockNode) SetNext(nextStatement Statement)

func (*ResourceBlockNode) WalkExpressions

func (s *ResourceBlockNode) WalkExpressions(walker expressionWalker) bool

func (*ResourceBlockNode) WalkNextStatements

func (nsb *ResourceBlockNode) WalkNextStatements(walker statementWalker) bool

func (*ResourceBlockNode) WalkStatements

func (s *ResourceBlockNode) WalkStatements(walker statementWalker) bool

type RuntimeFunction

type RuntimeFunction string

RuntimeFunction defines a function defined by the runtime.

type RuntimeFunctionCallNode

type RuntimeFunctionCallNode struct {
	Function  RuntimeFunction // The runtime function being called.
	Arguments []Expression    // The arguments for the call.
	// contains filtered or unexported fields
}

RuntimeFunctionCallNode represents a call to an internal runtime function defined for special handling of code.

func (*RuntimeFunctionCallNode) IsAsynchronous

func (e *RuntimeFunctionCallNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*RuntimeFunctionCallNode) IsExpression

func (eb *RuntimeFunctionCallNode) IsExpression()

func (*RuntimeFunctionCallNode) ManagesResources

func (eb *RuntimeFunctionCallNode) ManagesResources() bool

func (*RuntimeFunctionCallNode) ReferencedMember

func (eb *RuntimeFunctionCallNode) ReferencedMember() (typegraph.TGMember, bool)

type SpecializedFunction

type SpecializedFunction int
const (
	// None marks a function as having no specialization.
	NormalFunction SpecializedFunction = iota

	// AsynchronousWorkerFunction marks a function as being executed asynchronously via
	// a worker.
	AsynchronousWorkerFunction

	// GeneratorFunction marks a function as being a generator.
	GeneratorFunction
)

type Statement

type Statement interface {
	// BasisNode is the node that is the basis of the statement for source mapping.
	BasisNode() compilergraph.GraphNode

	// IsJump returns whether this statement is a jump of some kind.
	IsJump() bool

	// IsReferencable returns whether this statement must be referenceable and therefore
	// generated as its own statement.
	IsReferenceable() bool

	// MarkReferenceable marks a statement as being referencable.
	MarkReferenceable()

	// ReleasesFlow returns whether the statement releases the flow of the current
	// state machine. Statements which yield will release flow.
	ReleasesFlow() bool

	// WalkStatements walks the full structure of the statements.
	WalkStatements(walker statementWalker) bool

	// WalkExpressions walks the list of expressions immediately under this statement.
	WalkExpressions(walker expressionWalker) bool
}

Statement represents a statement.

func ArrowPromise

func ArrowPromise(childExpr Expression, resolution Expression, rejection Expression, targetState Statement, basis compilergraph.GraphNode) Statement

func AssignNextStatement

func AssignNextStatement(statement Statement, nextStatement Statement) Statement

AssignNextStatement assigns the given statement the given next statement and returns the next statement. If the given statement is not next-able, it is returned.

func ConditionalJump

func ConditionalJump(branchExpression Expression, trueTarget Statement, falseTarget Statement, basis compilergraph.GraphNode) Statement

func EmptyStatement

func EmptyStatement(basis compilergraph.GraphNode) Statement

func ExpressionStatement

func ExpressionStatement(expression Expression, basis compilergraph.GraphNode) Statement

func Rejection

func Rejection(value Expression, basis compilergraph.GraphNode) Statement

func Resolution

func Resolution(value Expression, basis compilergraph.GraphNode) Statement

func ResolveExpression

func ResolveExpression(childExpr Expression, resolutionName string, rejectionName string, targetState Statement, basis compilergraph.GraphNode) Statement

func ResourceBlock

func ResourceBlock(resourceName string, resource Expression, statement Statement, releaseMethod typegraph.TGMember, basis compilergraph.GraphNode) Statement

func UnconditionalJump

func UnconditionalJump(target Statement, basis compilergraph.GraphNode) Statement

func VarDefinition

func VarDefinition(name string, basis compilergraph.GraphNode) Statement

func VarDefinitionWithInit

func VarDefinitionWithInit(name string, initializer Expression, basis compilergraph.GraphNode) Statement

func YieldBreak

func YieldBreak(basis compilergraph.GraphNode) Statement

func YieldStream

func YieldStream(streamValue Expression, streamType typegraph.TypeReference, basis compilergraph.GraphNode) Statement

func YieldValue

func YieldValue(value Expression, basis compilergraph.GraphNode) Statement

type StatementOrExpression

type StatementOrExpression interface {
	BasisNode() compilergraph.GraphNode
}

StatementOrExpression represents a statement or expression.

type StaticMemberReferenceNode

type StaticMemberReferenceNode struct {
	Member     typegraph.TGMember      // The member to which we are referring statically.
	ParentType typegraph.TypeReference // The full parent type (including resolved generics) for the member.
	// contains filtered or unexported fields
}

StaticMemberReferenceNode refers statically to a member path.

func (*StaticMemberReferenceNode) ExprName

func (n *StaticMemberReferenceNode) ExprName() string

func (*StaticMemberReferenceNode) IsAsynchronous

func (sb *StaticMemberReferenceNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*StaticMemberReferenceNode) IsExpression

func (eb *StaticMemberReferenceNode) IsExpression()

func (*StaticMemberReferenceNode) ManagesResources

func (eb *StaticMemberReferenceNode) ManagesResources() bool

func (*StaticMemberReferenceNode) ReferencedMember

func (e *StaticMemberReferenceNode) ReferencedMember() (typegraph.TGMember, bool)

type StaticTypeReferenceNode

type StaticTypeReferenceNode struct {
	Type typegraph.TGTypeDecl // The type to which we are referring statically.
	// contains filtered or unexported fields
}

StaticTypeReferenceNode refers statically to a type path.

func (StaticTypeReferenceNode) ExprName

func (n StaticTypeReferenceNode) ExprName() string

func (*StaticTypeReferenceNode) IsAsynchronous

func (sb *StaticTypeReferenceNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*StaticTypeReferenceNode) IsExpression

func (eb *StaticTypeReferenceNode) IsExpression()

func (*StaticTypeReferenceNode) ManagesResources

func (eb *StaticTypeReferenceNode) ManagesResources() bool

func (*StaticTypeReferenceNode) ReferencedMember

func (eb *StaticTypeReferenceNode) ReferencedMember() (typegraph.TGMember, bool)

type TernaryNode

type TernaryNode struct {
	CheckExpr Expression // The check expression.
	ThenExpr  Expression // The then expression.
	ElseExpr  Expression // The else expression.
	// contains filtered or unexported fields
}

TernaryNode wraps a call to a ternary expr.

func (*TernaryNode) IsAsynchronous

func (e *TernaryNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*TernaryNode) IsExpression

func (eb *TernaryNode) IsExpression()

func (*TernaryNode) ManagesResources

func (eb *TernaryNode) ManagesResources() bool

func (*TernaryNode) ReferencedMember

func (eb *TernaryNode) ReferencedMember() (typegraph.TGMember, bool)

type TypeLiteralNode

type TypeLiteralNode struct {
	TypeRef typegraph.TypeReference // The type reference.
	// contains filtered or unexported fields
}

TypeLiteralNode refers to a type instance.

func (TypeLiteralNode) ExprName

func (n TypeLiteralNode) ExprName() string

func (*TypeLiteralNode) IsAsynchronous

func (sb *TypeLiteralNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*TypeLiteralNode) IsExpression

func (eb *TypeLiteralNode) IsExpression()

func (*TypeLiteralNode) ManagesResources

func (eb *TypeLiteralNode) ManagesResources() bool

func (*TypeLiteralNode) ReferencedMember

func (eb *TypeLiteralNode) ReferencedMember() (typegraph.TGMember, bool)

type UnaryOperationNode

type UnaryOperationNode struct {
	Operator        string     // The operator.
	ChildExpression Expression // The child expression.
	// contains filtered or unexported fields
}

UnaryOperationNode wraps a call to a unary operator.

func (*UnaryOperationNode) IsAsynchronous

func (e *UnaryOperationNode) IsAsynchronous(scopegraph *scopegraph.ScopeGraph) bool

func (*UnaryOperationNode) IsExpression

func (eb *UnaryOperationNode) IsExpression()

func (*UnaryOperationNode) ManagesResources

func (eb *UnaryOperationNode) ManagesResources() bool

func (*UnaryOperationNode) ReferencedMember

func (eb *UnaryOperationNode) ReferencedMember() (typegraph.TGMember, bool)

type UnconditionalJumpNode

type UnconditionalJumpNode struct {
	Target Statement // The target statement.
	// contains filtered or unexported fields
}

UnconditionalJumpNode represents a jump to another statement.

func (*UnconditionalJumpNode) IsJump

func (j *UnconditionalJumpNode) IsJump() bool

func (*UnconditionalJumpNode) IsReferenceable

func (sb *UnconditionalJumpNode) IsReferenceable() bool

func (*UnconditionalJumpNode) ManagesResources

func (sb *UnconditionalJumpNode) ManagesResources() bool

func (*UnconditionalJumpNode) MarkReferenceable

func (sb *UnconditionalJumpNode) MarkReferenceable()

func (*UnconditionalJumpNode) ReleasesFlow

func (sb *UnconditionalJumpNode) ReleasesFlow() bool

func (*UnconditionalJumpNode) WalkExpressions

func (sb *UnconditionalJumpNode) WalkExpressions(walker expressionWalker) bool

func (*UnconditionalJumpNode) WalkStatements

func (s *UnconditionalJumpNode) WalkStatements(walker statementWalker) bool

type VarDefinitionNode

type VarDefinitionNode struct {
	Name        string     // The name of the variable.
	Initializer Expression // The initializer expression, if any.
	// contains filtered or unexported fields
}

VarDefinitionNode represents a variable defined in the scope.

func (*VarDefinitionNode) GetNext

func (nsb *VarDefinitionNode) GetNext() Statement

func (*VarDefinitionNode) SetNext

func (nsb *VarDefinitionNode) SetNext(nextStatement Statement)

func (*VarDefinitionNode) WalkExpressions

func (s *VarDefinitionNode) WalkExpressions(walker expressionWalker) bool

func (*VarDefinitionNode) WalkNextStatements

func (nsb *VarDefinitionNode) WalkNextStatements(walker statementWalker) bool

func (*VarDefinitionNode) WalkStatements

func (s *VarDefinitionNode) WalkStatements(walker statementWalker) bool

type YieldNode

type YieldNode struct {
	Value       Expression               // The value yielded, if any.
	StreamValue Expression               // The stream yielded, if any.
	StreamType  *typegraph.TypeReference // The type of the stream being yielded from, if any.
	// contains filtered or unexported fields
}

YieldNode represents a yield of some sort under a generator function.

func (*YieldNode) GetNext

func (nsb *YieldNode) GetNext() Statement

func (*YieldNode) IsLocallyAsynchronous

func (s *YieldNode) IsLocallyAsynchronous(sg *scopegraph.ScopeGraph) bool

func (*YieldNode) ReleasesFlow

func (yn *YieldNode) ReleasesFlow() bool

func (*YieldNode) SetNext

func (nsb *YieldNode) SetNext(nextStatement Statement)

func (*YieldNode) WalkExpressions

func (s *YieldNode) WalkExpressions(walker expressionWalker) bool

func (*YieldNode) WalkNextStatements

func (nsb *YieldNode) WalkNextStatements(walker statementWalker) bool

func (*YieldNode) WalkStatements

func (s *YieldNode) WalkStatements(walker statementWalker) bool

Jump to

Keyboard shortcuts

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