Skip to content

Commit 63e16ed

Browse files
authored
Report assembly error strings for compile API endpoint (#3190)
* Add error strings to v2 TEAL compile endpoint * Move number of errors to end so it is consistent with goal clerk compile * Refactor ReportProblems() to take io.Writer * Don't report number of errors on the API call
1 parent f72764b commit 63e16ed

File tree

5 files changed

+20
-9
lines changed

5 files changed

+20
-9
lines changed

cmd/goal/clerk.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -922,7 +922,7 @@ func assembleFile(fname string) (program []byte) {
922922
}
923923
ops, err := logic.AssembleString(string(text))
924924
if err != nil {
925-
ops.ReportProblems(fname)
925+
ops.ReportProblems(fname, os.Stderr)
926926
reportErrorf("%s: %s", fname, err)
927927
}
928928
_, params := getProto(protoVersion)

cmd/goal/multisig.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121
"io"
2222
"io/ioutil"
23+
"os"
2324

2425
"github.com/spf13/cobra"
2526

@@ -163,7 +164,7 @@ var signProgramCmd = &cobra.Command{
163164
}
164165
ops, err := logic.AssembleString(string(text))
165166
if err != nil {
166-
ops.ReportProblems(programSource)
167+
ops.ReportProblems(programSource, os.Stderr)
167168
reportErrorf("%s: %s", programSource, err)
168169
}
169170
if outname == "" {

cmd/pingpong/runCmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ var runCmd = &cobra.Command{
242242
}
243243
ops, err := logic.AssembleString(programStr)
244244
if err != nil {
245-
ops.ReportProblems(teal)
245+
ops.ReportProblems(teal, os.Stderr)
246246
reportErrorf("Internal error, cannot assemble %v \n", programStr)
247247
}
248248
cfg.Program = ops.Program

daemon/algod/api/server/v2/handlers.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"io"
2525
"math"
2626
"net/http"
27+
"strings"
2728
"time"
2829

2930
"github.com/labstack/echo/v4"
@@ -754,7 +755,9 @@ func (v2 *Handlers) TealCompile(ctx echo.Context) error {
754755
source := buf.String()
755756
ops, err := logic.AssembleString(source)
756757
if err != nil {
757-
return badRequest(ctx, err, err.Error(), v2.Log)
758+
sb := strings.Builder{}
759+
ops.ReportProblems("", &sb)
760+
return badRequest(ctx, err, sb.String(), v2.Log)
758761
}
759762
pd := logic.HashProgram(ops.Program)
760763
addr := basics.Address(pd)

data/transactions/logic/assembler.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"errors"
2828
"fmt"
2929
"io"
30-
"os"
3130
"sort"
3231
"strconv"
3332
"strings"
@@ -2109,19 +2108,27 @@ func (ops *OpStream) warnf(format string, a ...interface{}) error {
21092108
return ops.warn(fmt.Errorf(format, a...))
21102109
}
21112110

2112-
// ReportProblems issues accumulated warnings and errors to stderr.
2113-
func (ops *OpStream) ReportProblems(fname string) {
2111+
// ReportProblems issues accumulated warnings and outputs errors to an io.Writer.
2112+
func (ops *OpStream) ReportProblems(fname string, writer io.Writer) {
21142113
for i, e := range ops.Errors {
21152114
if i > 9 {
21162115
break
21172116
}
2118-
fmt.Fprintf(os.Stderr, "%s: %s\n", fname, e)
2117+
if fname == "" {
2118+
fmt.Fprintf(writer, "%s\n", e)
2119+
} else {
2120+
fmt.Fprintf(writer, "%s: %s\n", fname, e)
2121+
}
21192122
}
21202123
for i, w := range ops.Warnings {
21212124
if i > 9 {
21222125
break
21232126
}
2124-
fmt.Fprintf(os.Stderr, "%s: %s\n", fname, w)
2127+
if fname == "" {
2128+
fmt.Fprintf(writer, "%s\n", w)
2129+
} else {
2130+
fmt.Fprintf(writer, "%s: %s\n", fname, w)
2131+
}
21252132
}
21262133
}
21272134

0 commit comments

Comments
 (0)