aboutsummaryrefslogtreecommitdiffstats
path: root/prog/encoding.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-12-31 12:49:20 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-12-31 12:49:20 +0100
commit00193447522daf7bae569c70cfa263e45eafc8ca (patch)
treefb7c3a7e9e93a01596e42a4ab49cb140d93e47d1 /prog/encoding.go
parent71ed63015c8a77b1278197f6a0c472bbfef6d12f (diff)
prog: detect argument type mismatch during deserialization
Diffstat (limited to 'prog/encoding.go')
-rw-r--r--prog/encoding.go5
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('/')