compiler

package
v0.90.1-pre Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2020 License: MIT Imports: 31 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Compile

func Compile(r io.Reader) ([]byte, error)

Compile compiles a Go program into bytecode that can run on the NEO virtual machine.

func CompileAndSave

func CompileAndSave(src string, o *Options) ([]byte, error)

CompileAndSave will compile and save the file to disk in the NEF format.

Types

type DebugInfo added in v0.75.0

type DebugInfo struct {
	Hash      util.Uint160      `json:"hash"`
	Documents []string          `json:"documents"`
	Methods   []MethodDebugInfo `json:"methods"`
	Events    []EventDebugInfo  `json:"events"`
}

DebugInfo represents smart-contract debug information.

func CodeGen

func CodeGen(info *buildInfo) ([]byte, *DebugInfo, error)

CodeGen compiles the program to bytecode.

func CompileWithDebugInfo added in v0.75.0

func CompileWithDebugInfo(r io.Reader) ([]byte, *DebugInfo, error)

CompileWithDebugInfo compiles a Go program into bytecode and emits debug info.

type DebugMethodName added in v0.75.0

type DebugMethodName struct {
	Namespace string
	Name      string
}

DebugMethodName is a combination of a namespace and name.

func (*DebugMethodName) MarshalJSON added in v0.75.0

func (d *DebugMethodName) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*DebugMethodName) UnmarshalJSON added in v0.75.0

func (d *DebugMethodName) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type DebugParam added in v0.75.0

type DebugParam struct {
	Name string `json:"name"`
	Type string `json:"type"`
}

DebugParam represents variables's name and type.

func (*DebugParam) MarshalJSON added in v0.75.0

func (d *DebugParam) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*DebugParam) ToManifestParameter added in v0.90.0

func (d *DebugParam) ToManifestParameter() (manifest.Parameter, error)

ToManifestParameter converts DebugParam to manifest.Parameter

func (*DebugParam) UnmarshalJSON added in v0.75.0

func (d *DebugParam) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type DebugRange added in v0.75.0

type DebugRange struct {
	Start uint16
	End   uint16
}

DebugRange represents method's section in bytecode.

func (*DebugRange) MarshalJSON added in v0.75.0

func (d *DebugRange) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*DebugRange) UnmarshalJSON added in v0.75.0

func (d *DebugRange) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type DebugSeqPoint added in v0.75.0

type DebugSeqPoint struct {
	// Opcode is an opcode's address.
	Opcode int
	// Document is an index of file where sequence point occurs.
	Document int
	// StartLine is the first line of the break-pointed statement.
	StartLine int
	// StartCol is the first column of the break-pointed statement.
	StartCol int
	// EndLine is the last line of the break-pointed statement.
	EndLine int
	// EndCol is the last column of the break-pointed statement.
	EndCol int
}

DebugSeqPoint represents break-point for debugger.

func (*DebugSeqPoint) MarshalJSON added in v0.75.0

func (d *DebugSeqPoint) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*DebugSeqPoint) UnmarshalJSON added in v0.75.0

func (d *DebugSeqPoint) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type EventDebugInfo added in v0.75.0

type EventDebugInfo struct {
	ID string `json:"id"`
	// Name is a human-readable event name in a format "{namespace}-{name}".
	Name       string       `json:"name"`
	Parameters []DebugParam `json:"params"`
}

EventDebugInfo represents smart-contract's event debug information.

func (*EventDebugInfo) ToManifestEvent added in v0.90.0

func (e *EventDebugInfo) ToManifestEvent() (manifest.Event, error)

ToManifestEvent converts EventDebugInfo to manifest.Event

type MethodDebugInfo added in v0.75.0

type MethodDebugInfo struct {
	ID string `json:"id"`
	// Name is the name of the method together with the namespace it belongs to.
	Name DebugMethodName `json:"name"`
	// IsExported defines whether method is exported.
	IsExported bool `json:"-"`
	// Range is the range of smart-contract's opcodes corresponding to the method.
	Range DebugRange `json:"range"`
	// Parameters is a list of method's parameters.
	Parameters []DebugParam `json:"params"`
	// ReturnType is method's return type.
	ReturnType string   `json:"return"`
	Variables  []string `json:"variables"`
	// SeqPoints is a map between source lines and byte-code instruction offsets.
	SeqPoints []DebugSeqPoint `json:"sequence-points"`
}

MethodDebugInfo represents smart-contract's method debug information.

func (*MethodDebugInfo) ToManifestMethod added in v0.90.0

func (m *MethodDebugInfo) ToManifestMethod() (manifest.Method, error)

ToManifestMethod converts MethodDebugInfo to manifest.Method

type Options

type Options struct {
	// The extension of the output file default set to .nef
	Ext string

	// The name of the output file.
	Outfile string

	// The name of the output for debug info.
	DebugInfo string

	// The name of the output for contract manifest file.
	ManifestFile string

	// Contract metadata.
	ContractFeatures smartcontract.PropertyState
}

Options contains all the parameters that affect the behaviour of the compiler.

Jump to

Keyboard shortcuts

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