From 0b972c5b4ba0a96253246acc45d28e68ea62dfc3 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Tue, 29 Aug 2023 19:28:00 -0400 Subject: [PATCH] lang: funcs: core: fmt: Add more invariants to printf These don't seem to change the number of passing tests, but add them in case we hit some situation that benefits from them. --- lang/funcs/core/fmt/printf_func.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lang/funcs/core/fmt/printf_func.go b/lang/funcs/core/fmt/printf_func.go index 178bf0e0..27965287 100644 --- a/lang/funcs/core/fmt/printf_func.go +++ b/lang/funcs/core/fmt/printf_func.go @@ -116,6 +116,12 @@ func (obj *PrintfFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant, erro } invariants = append(invariants, invar) + invar = &interfaces.EqualityInvariant{ + Expr1: dummyFormat, + Expr2: dummyOut, + } + invariants = append(invariants, invar) + // dynamic generator function for when the format string is dynamic dynamicFn := func(fnInvariants []interfaces.Invariant, solved map[interfaces.Expr]*types.Type) ([]interfaces.Invariant, error) { for _, invariant := range fnInvariants { @@ -137,6 +143,13 @@ func (obj *PrintfFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant, erro var invariants []interfaces.Invariant var invar interfaces.Invariant + // add the relationship to the format string arg + invar = &interfaces.EqualityInvariant{ + Expr1: cfavInvar.Expr, + Expr2: dummyFormat, + } + invariants = append(invariants, invar) + // add the relationship to the returned value invar = &interfaces.EqualityInvariant{ Expr1: cfavInvar.Expr, @@ -227,6 +240,13 @@ func (obj *PrintfFunc) Unify(expr interfaces.Expr) ([]interfaces.Invariant, erro var invariants []interfaces.Invariant var invar interfaces.Invariant + // add the relationship to the format string arg + invar = &interfaces.EqualityInvariant{ + Expr1: cfavInvar.Expr, + Expr2: dummyFormat, + } + invariants = append(invariants, invar) + // add the relationship to the returned value invar = &interfaces.EqualityInvariant{ Expr1: cfavInvar.Expr,