diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-12-31 12:49:20 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-12-31 12:49:20 +0100 |
| commit | 00193447522daf7bae569c70cfa263e45eafc8ca (patch) | |
| tree | fb7c3a7e9e93a01596e42a4ab49cb140d93e47d1 /prog/encoding.go | |
| parent | 71ed63015c8a77b1278197f6a0c472bbfef6d12f (diff) | |
prog: detect argument type mismatch during deserialization
Diffstat (limited to 'prog/encoding.go')
| -rw-r--r-- | prog/encoding.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/prog/encoding.go b/prog/encoding.go index 7f0844dea..98aa8ff37 100644 --- a/prog/encoding.go +++ b/prog/encoding.go @@ -239,6 +239,11 @@ func (target *Target) parseArg(typ Type, p *parser, vars map[string]Arg) (Arg, e if !ok || v == nil { return nil, fmt.Errorf("result %v references unknown variable (vars=%+v)", id, vars) } + if _, ok := v.(ArgUsed); !ok { + // TODO(dvyukov): this happens during loading of old programs. + // Figure out when exactly this happens and if it is repairable. + return nil, fmt.Errorf("result %v references vad type %#v", id, v) + } arg = MakeResultArg(typ, v, 0) if p.Char() == '/' { p.Parse('/') |
