lang: funcs: Rename T2 to T3 for future consistency
This makes things more symmetrical with the maplookup function.
This commit is contained in:
@@ -76,8 +76,8 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
var invariants []interfaces.Invariant
|
var invariants []interfaces.Invariant
|
||||||
var invar interfaces.Invariant
|
var invar interfaces.Invariant
|
||||||
|
|
||||||
// func(list T1, index int, default T2) T2
|
// func(list T1, index int, default T3) T3
|
||||||
// (list: []T2 => T2 aka T1 => T2)
|
// (list: []T3 => T3 aka T1 => T3)
|
||||||
|
|
||||||
listName, err := obj.ArgGen(0)
|
listName, err := obj.ArgGen(0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -106,7 +106,7 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
}
|
}
|
||||||
invariants = append(invariants, invar)
|
invariants = append(invariants, invar)
|
||||||
|
|
||||||
// relationship between T1 and T2
|
// relationship between T1 and T3
|
||||||
invar = &interfaces.EqualityWrapListInvariant{
|
invar = &interfaces.EqualityWrapListInvariant{
|
||||||
Expr1: dummyList,
|
Expr1: dummyList,
|
||||||
Expr2Val: dummyDefault,
|
Expr2Val: dummyDefault,
|
||||||
@@ -185,7 +185,7 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
// If we figure out either of these types, we'll know
|
// If we figure out either of these types, we'll know
|
||||||
// the full type...
|
// the full type...
|
||||||
var t1 *types.Type // list type
|
var t1 *types.Type // list type
|
||||||
var t2 *types.Type // list val type
|
var t3 *types.Type // list val type
|
||||||
|
|
||||||
// validateArg0 checks: list T1
|
// validateArg0 checks: list T1
|
||||||
validateArg0 := func(typ *types.Type) error {
|
validateArg0 := func(typ *types.Type) error {
|
||||||
@@ -206,13 +206,13 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
if err := typ.Cmp(t1); t1 != nil && err != nil {
|
if err := typ.Cmp(t1); t1 != nil && err != nil {
|
||||||
return errwrap.Wrapf(err, "input type was inconsistent")
|
return errwrap.Wrapf(err, "input type was inconsistent")
|
||||||
}
|
}
|
||||||
if err := typ.Val.Cmp(t2); t2 != nil && err != nil {
|
if err := typ.Val.Cmp(t3); t3 != nil && err != nil {
|
||||||
return errwrap.Wrapf(err, "input val type was inconsistent")
|
return errwrap.Wrapf(err, "input val type was inconsistent")
|
||||||
}
|
}
|
||||||
|
|
||||||
// learn!
|
// learn!
|
||||||
t1 = typ
|
t1 = typ
|
||||||
t2 = typ.Val
|
t3 = typ.Val
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,13 +227,13 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// validateArg2 checks: list val T2
|
// validateArg2 checks: list val T3
|
||||||
validateArg2 := func(typ *types.Type) error {
|
validateArg2 := func(typ *types.Type) error {
|
||||||
if typ == nil { // unknown so far
|
if typ == nil { // unknown so far
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := typ.Cmp(t2); t2 != nil && err != nil {
|
if err := typ.Cmp(t3); t3 != nil && err != nil {
|
||||||
return errwrap.Wrapf(err, "input val type was inconsistent")
|
return errwrap.Wrapf(err, "input val type was inconsistent")
|
||||||
}
|
}
|
||||||
if t1 != nil {
|
if t1 != nil {
|
||||||
@@ -243,9 +243,9 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
}
|
}
|
||||||
t := &types.Type{ // build t1
|
t := &types.Type{ // build t1
|
||||||
Kind: types.KindList,
|
Kind: types.KindList,
|
||||||
Val: typ, // t2
|
Val: typ, // t3
|
||||||
}
|
}
|
||||||
if t2 != nil {
|
if t3 != nil {
|
||||||
if err := t.Cmp(t1); t1 != nil && err != nil {
|
if err := t.Cmp(t1); t1 != nil && err != nil {
|
||||||
return errwrap.Wrapf(err, "input type was inconsistent")
|
return errwrap.Wrapf(err, "input type was inconsistent")
|
||||||
}
|
}
|
||||||
@@ -254,18 +254,18 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
|
|
||||||
// learn!
|
// learn!
|
||||||
t1 = t
|
t1 = t
|
||||||
t2 = typ
|
t3 = typ
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if typ, err := cfavInvar.Args[0].Type(); err == nil { // is it known?
|
if typ, err := cfavInvar.Args[0].Type(); err == nil { // is it known?
|
||||||
// this sets t1 and t2 on success if it learned
|
// this sets t1 and t3 on success if it learned
|
||||||
if err := validateArg0(typ); err != nil {
|
if err := validateArg0(typ); err != nil {
|
||||||
return nil, errwrap.Wrapf(err, "first list arg type is inconsistent")
|
return nil, errwrap.Wrapf(err, "first list arg type is inconsistent")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if typ, exists := solved[cfavInvar.Args[0]]; exists { // alternate way to lookup type
|
if typ, exists := solved[cfavInvar.Args[0]]; exists { // alternate way to lookup type
|
||||||
// this sets t1 and t2 on success if it learned
|
// this sets t1 and t3 on success if it learned
|
||||||
if err := validateArg0(typ); err != nil {
|
if err := validateArg0(typ); err != nil {
|
||||||
return nil, errwrap.Wrapf(err, "first list arg type is inconsistent")
|
return nil, errwrap.Wrapf(err, "first list arg type is inconsistent")
|
||||||
}
|
}
|
||||||
@@ -285,13 +285,13 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if typ, err := cfavInvar.Args[2].Type(); err == nil { // is it known?
|
if typ, err := cfavInvar.Args[2].Type(); err == nil { // is it known?
|
||||||
// this sets t1 and t2 on success if it learned
|
// this sets t1 and t3 on success if it learned
|
||||||
if err := validateArg2(typ); err != nil {
|
if err := validateArg2(typ); err != nil {
|
||||||
return nil, errwrap.Wrapf(err, "third default arg type is inconsistent")
|
return nil, errwrap.Wrapf(err, "third default arg type is inconsistent")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if typ, exists := solved[cfavInvar.Args[2]]; exists { // alternate way to lookup type
|
if typ, exists := solved[cfavInvar.Args[2]]; exists { // alternate way to lookup type
|
||||||
// this sets t1 and t2 on success if it learned
|
// this sets t1 and t3 on success if it learned
|
||||||
if err := validateArg2(typ); err != nil {
|
if err := validateArg2(typ); err != nil {
|
||||||
return nil, errwrap.Wrapf(err, "third default arg type is inconsistent")
|
return nil, errwrap.Wrapf(err, "third default arg type is inconsistent")
|
||||||
}
|
}
|
||||||
@@ -306,10 +306,10 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
|
|||||||
}
|
}
|
||||||
invariants = append(invariants, invar)
|
invariants = append(invariants, invar)
|
||||||
}
|
}
|
||||||
if t2 != nil {
|
if t3 != nil {
|
||||||
invar := &interfaces.EqualsInvariant{
|
invar := &interfaces.EqualsInvariant{
|
||||||
Expr: dummyDefault,
|
Expr: dummyDefault,
|
||||||
Type: t2,
|
Type: t3,
|
||||||
}
|
}
|
||||||
invariants = append(invariants, invar)
|
invariants = append(invariants, invar)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user