lang: funcs: Rename T2 to T3 for future consistency

This makes things more symmetrical with the maplookup function.
This commit is contained in:
James Shubin
2023-10-11 19:21:09 -04:00
parent 9e7b7fbb3a
commit ee1e07f3d7

View File

@@ -76,8 +76,8 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
var invariants []interfaces.Invariant
var invar interfaces.Invariant
// func(list T1, index int, default T2) T2
// (list: []T2 => T2 aka T1 => T2)
// func(list T1, index int, default T3) T3
// (list: []T3 => T3 aka T1 => T3)
listName, err := obj.ArgGen(0)
if err != nil {
@@ -106,7 +106,7 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
}
invariants = append(invariants, invar)
// relationship between T1 and T2
// relationship between T1 and T3
invar = &interfaces.EqualityWrapListInvariant{
Expr1: dummyList,
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
// the full 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 := 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 {
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")
}
// learn!
t1 = typ
t2 = typ.Val
t3 = typ.Val
return nil
}
@@ -227,13 +227,13 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
return nil
}
// validateArg2 checks: list val T2
// validateArg2 checks: list val T3
validateArg2 := func(typ *types.Type) error {
if typ == nil { // unknown so far
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")
}
if t1 != nil {
@@ -243,9 +243,9 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
}
t := &types.Type{ // build t1
Kind: types.KindList,
Val: typ, // t2
Val: typ, // t3
}
if t2 != nil {
if t3 != nil {
if err := t.Cmp(t1); t1 != nil && err != nil {
return errwrap.Wrapf(err, "input type was inconsistent")
}
@@ -254,18 +254,18 @@ func (obj *ListLookupFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant,
// learn!
t1 = t
t2 = typ
t3 = typ
return nil
}
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 {
return nil, errwrap.Wrapf(err, "first list arg type is inconsistent")
}
}
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 {
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?
// 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 {
return nil, errwrap.Wrapf(err, "third default arg type is inconsistent")
}
}
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 {
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)
}
if t2 != nil {
if t3 != nil {
invar := &interfaces.EqualsInvariant{
Expr: dummyDefault,
Type: t2,
Type: t3,
}
invariants = append(invariants, invar)
}