Documentation ¶
Index ¶
- Variables
- func NewConstraint(y ssa.Value) aConstraint
- func VertexString(v *Vertex) string
- type ArraySliceConstraint
- type ChannelChangeTypeConstraint
- type ChannelInterval
- type Constraint
- func NewArraySliceConstraint(x, lower, upper, y ssa.Value) Constraint
- func NewChannelChangeTypeConstraint(x, y ssa.Value) Constraint
- func NewCopyConstraint(x, y ssa.Value) Constraint
- func NewIntAddConstraint(a, b, y ssa.Value) Constraint
- func NewIntConversionConstraint(x, y ssa.Value) Constraint
- func NewIntIntersectionConstraint(a, b ssa.Value, op token.Token, ranges Ranges, y ssa.Value) Constraint
- func NewIntIntervalConstraint(i IntInterval, y ssa.Value) Constraint
- func NewIntMulConstraint(a, b, y ssa.Value) Constraint
- func NewIntSubConstraint(a, b, y ssa.Value) Constraint
- func NewMakeChannelConstraint(buffer, y ssa.Value) Constraint
- func NewMakeSliceConstraint(size, y ssa.Value) Constraint
- func NewPhiConstraint(vars []ssa.Value, y ssa.Value) Constraint
- func NewSliceAppendConstraint(a, b, y ssa.Value) Constraint
- func NewSliceIntersectionConstraint(x ssa.Value, i IntInterval, y ssa.Value) Constraint
- func NewSliceIntervalConstraint(i IntInterval, y ssa.Value) Constraint
- func NewSliceLengthConstraint(x, y ssa.Value) Constraint
- func NewSliceSliceConstraint(x, lower, upper, y ssa.Value) Constraint
- func NewStringConcatConstraint(a, b, y ssa.Value) Constraint
- func NewStringIntersectionConstraint(a, b ssa.Value, op token.Token, ranges Ranges, y ssa.Value) Constraint
- func NewStringIntervalConstraint(i IntInterval, y ssa.Value) Constraint
- func NewStringLengthConstraint(x ssa.Value, y ssa.Value) Constraint
- func NewStringSliceConstraint(x, lower, upper, y ssa.Value) Constraint
- type CopyConstraint
- type Edge
- type Future
- type Graph
- type IntAddConstraint
- type IntArithmeticConstraint
- type IntConversionConstraint
- type IntIntersectionConstraint
- func (c *IntIntersectionConstraint) Eval(g *Graph) Range
- func (c *IntIntersectionConstraint) Futures() []ssa.Value
- func (c *IntIntersectionConstraint) IsKnown() bool
- func (c *IntIntersectionConstraint) IsResolved() bool
- func (c *IntIntersectionConstraint) MarkResolved()
- func (c *IntIntersectionConstraint) MarkUnresolved()
- func (c *IntIntersectionConstraint) Operands() []ssa.Value
- func (c *IntIntersectionConstraint) Resolve()
- func (c *IntIntersectionConstraint) String() string
- func (c IntIntersectionConstraint) Y() ssa.Value
- type IntInterval
- func (i1 IntInterval) Add(i2 IntInterval) IntInterval
- func (i IntInterval) Empty() bool
- func (i1 IntInterval) Intersection(i2 IntInterval) IntInterval
- func (i IntInterval) IsKnown() bool
- func (i IntInterval) IsMaxRange() bool
- func (i1 IntInterval) Mul(i2 IntInterval) IntInterval
- func (i1 IntInterval) String() string
- func (i1 IntInterval) Sub(i2 IntInterval) IntInterval
- func (i1 IntInterval) Union(other Range) Range
- type IntIntervalConstraint
- type IntMulConstraint
- type IntSubConstraint
- type MakeChannelConstraint
- type MakeSliceConstraint
- type PhiConstraint
- type Range
- type Ranges
- type SliceAppendConstraint
- type SliceIntersectionConstraint
- type SliceInterval
- type SliceIntervalConstraint
- type SliceLengthConstraint
- type SliceSliceConstraint
- type StringConcatConstraint
- type StringIntersectionConstraint
- func (c *StringIntersectionConstraint) Eval(g *Graph) Range
- func (c *StringIntersectionConstraint) Futures() []ssa.Value
- func (c *StringIntersectionConstraint) IsKnown() bool
- func (c *StringIntersectionConstraint) IsResolved() bool
- func (c *StringIntersectionConstraint) MarkResolved()
- func (c *StringIntersectionConstraint) MarkUnresolved()
- func (c *StringIntersectionConstraint) Operands() []ssa.Value
- func (c *StringIntersectionConstraint) Resolve()
- func (c *StringIntersectionConstraint) String() string
- func (c StringIntersectionConstraint) Y() ssa.Value
- type StringInterval
- type StringIntervalConstraint
- type StringLengthConstraint
- type StringSliceConstraint
- type Vertex
- type Z
- type Zs
Constants ¶
This section is empty.
Variables ¶
View Source
var EmptyIntInterval = IntInterval{true, PInfinity, NInfinity}
View Source
var NInfinity = Z{/* contains filtered or unexported fields */}
View Source
var PInfinity = Z{/* contains filtered or unexported fields */}
Functions ¶
func NewConstraint ¶
func VertexString ¶
Types ¶
type ArraySliceConstraint ¶
type ArraySliceConstraint struct { X ssa.Value Lower ssa.Value Upper ssa.Value // contains filtered or unexported fields }
func (*ArraySliceConstraint) Eval ¶
func (c *ArraySliceConstraint) Eval(g *Graph) Range
func (*ArraySliceConstraint) Operands ¶
func (c *ArraySliceConstraint) Operands() []ssa.Value
func (*ArraySliceConstraint) String ¶
func (c *ArraySliceConstraint) String() string
type ChannelChangeTypeConstraint ¶
func (*ChannelChangeTypeConstraint) Eval ¶
func (c *ChannelChangeTypeConstraint) Eval(g *Graph) Range
func (*ChannelChangeTypeConstraint) Operands ¶
func (c *ChannelChangeTypeConstraint) Operands() []ssa.Value
func (*ChannelChangeTypeConstraint) String ¶
func (c *ChannelChangeTypeConstraint) String() string
type ChannelInterval ¶
type ChannelInterval struct {
Size IntInterval
}
func (ChannelInterval) IsKnown ¶
func (c ChannelInterval) IsKnown() bool
func (ChannelInterval) String ¶
func (c ChannelInterval) String() string
func (ChannelInterval) Union ¶
func (c ChannelInterval) Union(other Range) Range
type Constraint ¶
type Constraint interface { Y() ssa.Value String() string Eval(*Graph) Range Operands() []ssa.Value // contains filtered or unexported methods }
func NewArraySliceConstraint ¶
func NewArraySliceConstraint(x, lower, upper, y ssa.Value) Constraint
func NewChannelChangeTypeConstraint ¶
func NewChannelChangeTypeConstraint(x, y ssa.Value) Constraint
func NewCopyConstraint ¶
func NewCopyConstraint(x, y ssa.Value) Constraint
func NewIntAddConstraint ¶
func NewIntAddConstraint(a, b, y ssa.Value) Constraint
func NewIntConversionConstraint ¶
func NewIntConversionConstraint(x, y ssa.Value) Constraint
func NewIntIntervalConstraint ¶
func NewIntIntervalConstraint(i IntInterval, y ssa.Value) Constraint
func NewIntMulConstraint ¶
func NewIntMulConstraint(a, b, y ssa.Value) Constraint
func NewIntSubConstraint ¶
func NewIntSubConstraint(a, b, y ssa.Value) Constraint
func NewMakeChannelConstraint ¶
func NewMakeChannelConstraint(buffer, y ssa.Value) Constraint
func NewMakeSliceConstraint ¶
func NewMakeSliceConstraint(size, y ssa.Value) Constraint
func NewPhiConstraint ¶
func NewPhiConstraint(vars []ssa.Value, y ssa.Value) Constraint
func NewSliceAppendConstraint ¶
func NewSliceAppendConstraint(a, b, y ssa.Value) Constraint
func NewSliceIntersectionConstraint ¶
func NewSliceIntersectionConstraint(x ssa.Value, i IntInterval, y ssa.Value) Constraint
func NewSliceIntervalConstraint ¶
func NewSliceIntervalConstraint(i IntInterval, y ssa.Value) Constraint
func NewSliceLengthConstraint ¶
func NewSliceLengthConstraint(x, y ssa.Value) Constraint
func NewSliceSliceConstraint ¶
func NewSliceSliceConstraint(x, lower, upper, y ssa.Value) Constraint
func NewStringConcatConstraint ¶
func NewStringConcatConstraint(a, b, y ssa.Value) Constraint
func NewStringIntervalConstraint ¶
func NewStringIntervalConstraint(i IntInterval, y ssa.Value) Constraint
func NewStringLengthConstraint ¶
func NewStringLengthConstraint(x ssa.Value, y ssa.Value) Constraint
func NewStringSliceConstraint ¶
func NewStringSliceConstraint(x, lower, upper, y ssa.Value) Constraint
type CopyConstraint ¶
func (*CopyConstraint) Eval ¶
func (c *CopyConstraint) Eval(g *Graph) Range
func (*CopyConstraint) Operands ¶
func (c *CopyConstraint) Operands() []ssa.Value
func (*CopyConstraint) String ¶
func (c *CopyConstraint) String() string
type Future ¶
type Future interface { Constraint Futures() []ssa.Value Resolve() IsKnown() bool MarkUnresolved() MarkResolved() IsResolved() bool }
type Graph ¶
type Graph struct { Vertices map[interface{}]*Vertex Edges []Edge SCCs [][]*Vertex // contains filtered or unexported fields }
func BuildGraph ¶
type IntAddConstraint ¶
type IntAddConstraint struct{ *IntArithmeticConstraint }
type IntArithmeticConstraint ¶
type IntArithmeticConstraint struct { A ssa.Value B ssa.Value Op token.Token Fn func(IntInterval, IntInterval) IntInterval // contains filtered or unexported fields }
func NewIntArithmeticConstraint ¶
func NewIntArithmeticConstraint(a, b, y ssa.Value, op token.Token, fn func(IntInterval, IntInterval) IntInterval) *IntArithmeticConstraint
func (*IntArithmeticConstraint) Eval ¶
func (c *IntArithmeticConstraint) Eval(g *Graph) Range
func (*IntArithmeticConstraint) Operands ¶
func (c *IntArithmeticConstraint) Operands() []ssa.Value
func (*IntArithmeticConstraint) String ¶
func (c *IntArithmeticConstraint) String() string
type IntConversionConstraint ¶
func (*IntConversionConstraint) Eval ¶
func (c *IntConversionConstraint) Eval(g *Graph) Range
func (*IntConversionConstraint) Operands ¶
func (c *IntConversionConstraint) Operands() []ssa.Value
func (*IntConversionConstraint) String ¶
func (c *IntConversionConstraint) String() string
type IntIntersectionConstraint ¶
type IntIntersectionConstraint struct { A ssa.Value B ssa.Value Op token.Token I IntInterval // contains filtered or unexported fields }
func (*IntIntersectionConstraint) Eval ¶
func (c *IntIntersectionConstraint) Eval(g *Graph) Range
func (*IntIntersectionConstraint) Futures ¶
func (c *IntIntersectionConstraint) Futures() []ssa.Value
func (*IntIntersectionConstraint) IsKnown ¶
func (c *IntIntersectionConstraint) IsKnown() bool
func (*IntIntersectionConstraint) IsResolved ¶
func (c *IntIntersectionConstraint) IsResolved() bool
func (*IntIntersectionConstraint) MarkResolved ¶
func (c *IntIntersectionConstraint) MarkResolved()
func (*IntIntersectionConstraint) MarkUnresolved ¶
func (c *IntIntersectionConstraint) MarkUnresolved()
func (*IntIntersectionConstraint) Operands ¶
func (c *IntIntersectionConstraint) Operands() []ssa.Value
func (*IntIntersectionConstraint) Resolve ¶
func (c *IntIntersectionConstraint) Resolve()
func (*IntIntersectionConstraint) String ¶
func (c *IntIntersectionConstraint) String() string
type IntInterval ¶
func InfinityFor ¶
func InfinityFor(v ssa.Value) IntInterval
func NewIntInterval ¶
func NewIntInterval(l, u Z) IntInterval
func (IntInterval) Add ¶
func (i1 IntInterval) Add(i2 IntInterval) IntInterval
func (IntInterval) Empty ¶
func (i IntInterval) Empty() bool
func (IntInterval) Intersection ¶
func (i1 IntInterval) Intersection(i2 IntInterval) IntInterval
func (IntInterval) IsKnown ¶
func (i IntInterval) IsKnown() bool
func (IntInterval) IsMaxRange ¶
func (i IntInterval) IsMaxRange() bool
func (IntInterval) Mul ¶
func (i1 IntInterval) Mul(i2 IntInterval) IntInterval
func (IntInterval) String ¶
func (i1 IntInterval) String() string
func (IntInterval) Sub ¶
func (i1 IntInterval) Sub(i2 IntInterval) IntInterval
func (IntInterval) Union ¶
func (i1 IntInterval) Union(other Range) Range
type IntIntervalConstraint ¶
type IntIntervalConstraint struct { I IntInterval // contains filtered or unexported fields }
func (*IntIntervalConstraint) Eval ¶
func (c *IntIntervalConstraint) Eval(*Graph) Range
func (*IntIntervalConstraint) Operands ¶
func (s *IntIntervalConstraint) Operands() []ssa.Value
func (*IntIntervalConstraint) String ¶
func (c *IntIntervalConstraint) String() string
type IntMulConstraint ¶
type IntMulConstraint struct{ *IntArithmeticConstraint }
type IntSubConstraint ¶
type IntSubConstraint struct{ *IntArithmeticConstraint }
type MakeChannelConstraint ¶
func (*MakeChannelConstraint) Eval ¶
func (c *MakeChannelConstraint) Eval(g *Graph) Range
func (*MakeChannelConstraint) Operands ¶
func (c *MakeChannelConstraint) Operands() []ssa.Value
func (*MakeChannelConstraint) String ¶
func (c *MakeChannelConstraint) String() string
type MakeSliceConstraint ¶
func (*MakeSliceConstraint) Eval ¶
func (c *MakeSliceConstraint) Eval(g *Graph) Range
func (*MakeSliceConstraint) Operands ¶
func (c *MakeSliceConstraint) Operands() []ssa.Value
func (*MakeSliceConstraint) String ¶
func (c *MakeSliceConstraint) String() string
type PhiConstraint ¶
func (*PhiConstraint) Eval ¶
func (c *PhiConstraint) Eval(g *Graph) Range
func (*PhiConstraint) Operands ¶
func (c *PhiConstraint) Operands() []ssa.Value
func (*PhiConstraint) String ¶
func (c *PhiConstraint) String() string
type SliceAppendConstraint ¶
type SliceAppendConstraint struct { A ssa.Value B ssa.Value // contains filtered or unexported fields }
func (*SliceAppendConstraint) Eval ¶
func (c *SliceAppendConstraint) Eval(g *Graph) Range
func (*SliceAppendConstraint) Operands ¶
func (c *SliceAppendConstraint) Operands() []ssa.Value
func (*SliceAppendConstraint) String ¶
func (c *SliceAppendConstraint) String() string
type SliceIntersectionConstraint ¶
type SliceIntersectionConstraint struct { X ssa.Value I IntInterval // contains filtered or unexported fields }
func (*SliceIntersectionConstraint) Eval ¶
func (c *SliceIntersectionConstraint) Eval(g *Graph) Range
func (*SliceIntersectionConstraint) Operands ¶
func (c *SliceIntersectionConstraint) Operands() []ssa.Value
func (*SliceIntersectionConstraint) String ¶
func (c *SliceIntersectionConstraint) String() string
type SliceInterval ¶
type SliceInterval struct {
Length IntInterval
}
func (SliceInterval) IsKnown ¶
func (s SliceInterval) IsKnown() bool
func (SliceInterval) String ¶
func (s SliceInterval) String() string
func (SliceInterval) Union ¶
func (s SliceInterval) Union(other Range) Range
type SliceIntervalConstraint ¶
type SliceIntervalConstraint struct { I IntInterval // contains filtered or unexported fields }
func (*SliceIntervalConstraint) Eval ¶
func (c *SliceIntervalConstraint) Eval(*Graph) Range
func (*SliceIntervalConstraint) Operands ¶
func (s *SliceIntervalConstraint) Operands() []ssa.Value
func (*SliceIntervalConstraint) String ¶
func (c *SliceIntervalConstraint) String() string
type SliceLengthConstraint ¶
func (*SliceLengthConstraint) Eval ¶
func (c *SliceLengthConstraint) Eval(g *Graph) Range
func (*SliceLengthConstraint) Operands ¶
func (c *SliceLengthConstraint) Operands() []ssa.Value
func (*SliceLengthConstraint) String ¶
func (c *SliceLengthConstraint) String() string
type SliceSliceConstraint ¶
type SliceSliceConstraint struct { X ssa.Value Lower ssa.Value Upper ssa.Value // contains filtered or unexported fields }
func (*SliceSliceConstraint) Eval ¶
func (c *SliceSliceConstraint) Eval(g *Graph) Range
func (*SliceSliceConstraint) Operands ¶
func (c *SliceSliceConstraint) Operands() []ssa.Value
func (*SliceSliceConstraint) String ¶
func (c *SliceSliceConstraint) String() string
type StringConcatConstraint ¶
type StringConcatConstraint struct { A ssa.Value B ssa.Value // contains filtered or unexported fields }
func (StringConcatConstraint) Eval ¶
func (c StringConcatConstraint) Eval(g *Graph) Range
func (StringConcatConstraint) Operands ¶
func (c StringConcatConstraint) Operands() []ssa.Value
func (StringConcatConstraint) String ¶
func (c StringConcatConstraint) String() string
type StringIntersectionConstraint ¶
type StringIntersectionConstraint struct { A ssa.Value B ssa.Value Op token.Token I IntInterval // contains filtered or unexported fields }
func (*StringIntersectionConstraint) Eval ¶
func (c *StringIntersectionConstraint) Eval(g *Graph) Range
func (*StringIntersectionConstraint) Futures ¶
func (c *StringIntersectionConstraint) Futures() []ssa.Value
func (*StringIntersectionConstraint) IsKnown ¶
func (c *StringIntersectionConstraint) IsKnown() bool
func (*StringIntersectionConstraint) IsResolved ¶
func (c *StringIntersectionConstraint) IsResolved() bool
func (*StringIntersectionConstraint) MarkResolved ¶
func (c *StringIntersectionConstraint) MarkResolved()
func (*StringIntersectionConstraint) MarkUnresolved ¶
func (c *StringIntersectionConstraint) MarkUnresolved()
func (*StringIntersectionConstraint) Operands ¶
func (c *StringIntersectionConstraint) Operands() []ssa.Value
func (*StringIntersectionConstraint) Resolve ¶
func (c *StringIntersectionConstraint) Resolve()
func (*StringIntersectionConstraint) String ¶
func (c *StringIntersectionConstraint) String() string
type StringInterval ¶
type StringInterval struct {
Length IntInterval
}
func (StringInterval) IsKnown ¶
func (s StringInterval) IsKnown() bool
func (StringInterval) String ¶
func (s StringInterval) String() string
func (StringInterval) Union ¶
func (s StringInterval) Union(other Range) Range
type StringIntervalConstraint ¶
type StringIntervalConstraint struct { I IntInterval // contains filtered or unexported fields }
func (*StringIntervalConstraint) Eval ¶
func (c *StringIntervalConstraint) Eval(*Graph) Range
func (*StringIntervalConstraint) Operands ¶
func (s *StringIntervalConstraint) Operands() []ssa.Value
func (*StringIntervalConstraint) String ¶
func (c *StringIntervalConstraint) String() string
type StringLengthConstraint ¶
func (*StringLengthConstraint) Eval ¶
func (c *StringLengthConstraint) Eval(g *Graph) Range
func (*StringLengthConstraint) Operands ¶
func (c *StringLengthConstraint) Operands() []ssa.Value
func (*StringLengthConstraint) String ¶
func (c *StringLengthConstraint) String() string
type StringSliceConstraint ¶
type StringSliceConstraint struct { X ssa.Value Lower ssa.Value Upper ssa.Value // contains filtered or unexported fields }
func (*StringSliceConstraint) Eval ¶
func (c *StringSliceConstraint) Eval(g *Graph) Range
func (*StringSliceConstraint) Operands ¶
func (c *StringSliceConstraint) Operands() []ssa.Value
func (*StringSliceConstraint) String ¶
func (c *StringSliceConstraint) String() string
Click to show internal directories.
Click to hide internal directories.