From 00193447522daf7bae569c70cfa263e45eafc8ca Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 31 Dec 2017 12:49:20 +0100 Subject: prog: detect argument type mismatch during deserialization --- prog/encoding.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'prog/encoding.go') 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('/') -- cgit mrf-deployment