diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-09-04 19:52:51 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-09-04 20:25:22 +0200 |
| commit | 8c64b078d1c954972b9f0132a753cdcec1b80d9b (patch) | |
| tree | f6213a794bf72ccb3e38f6892d7fb229b2b78414 /pkg/compiler/testdata/errors2.txt | |
| parent | b06c1bd324d3aff0f132381727c85940bcf93b2f (diff) | |
pkg/compiler: detect resources without ctors
Fixes #217
Diffstat (limited to 'pkg/compiler/testdata/errors2.txt')
| -rw-r--r-- | pkg/compiler/testdata/errors2.txt | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/pkg/compiler/testdata/errors2.txt b/pkg/compiler/testdata/errors2.txt new file mode 100644 index 000000000..1687a1f9b --- /dev/null +++ b/pkg/compiler/testdata/errors2.txt @@ -0,0 +1,87 @@ +# Copyright 2017 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +# Recursive resources. + +resource r0[r0] ### recursive resource r0->r0 +resource r1[r2] ### recursive resource r1->r2->r1 +resource r2[r1] ### recursive resource r2->r1->r2 + +foo$0(a0 ptr[out, r0], a1 ptr[out, r1], a2 ptr[out, r2]) + +# Recursive structs/unions. + +sr1 { + f1 sr1 ### recursive declaration: sr1.f1 -> sr1 (mark some pointers as opt) +} + +sr2 { + f1 sr3 + f2 sr4 +} + +sr3 { + f1 ptr[in, sr3] ### recursive declaration: sr3.f1 -> sr3 (mark some pointers as opt) +} + +sr4 { + f1 ptr[in, sr3] + f2 array[ptr[in, sr5], 4] ### recursive declaration: sr4.f2 -> sr5.f2 -> sr6.f1 -> sr4 (mark some pointers as opt) +} + +sr5 [ + f1 int32 + f2 sr6 +] + +sr6 { + f1 sr4 +} + +sr7 { + f1 ptr[in, sr7, opt] +} + +# Len target tests. + +foo$100(a int32, b len[a]) +foo$101(a len[a]) ### len target a refer to itself +foo$102(a ptr[in, len[a, int8]]) ### len target a refer to itself +foo$103(a int32, b len[c]) ### len target c does not exist +foo$104(a len[parent]) ### len target parent does not exist +foo$105(a ptr[in, int32], b ptr[in, array[len[a, int32]]]) +foo$106(a int32, b ptr[in, csum[a, inet, int32]]) +foo$107(a int32, b ptr[in, csum[c, inet, int32]]) ### csum target c does not exist + +s1 { + f1 len[s2, int32] ### len target s2 does not exist +} + +s2 { + f1 s1 +} + +foo$200(a ptr[in, s2]) +foo$201(a ptr[in, s1]) + +# Resource ctor tests. + +resource r100[int32] ### resource r100 can't be created (never mentioned as a syscall return value or output argument/field) +resource r101[int32] +resource r102[r101] +resource r103[r102] +resource r104[int8] +resource r105[int8] +resource r106[int8] ### resource r106 can't be created (never mentioned as a syscall return value or output argument/field) +resource r107[int8] ### resource r107 can't be created (never mentioned as a syscall return value or output argument/field) + +foo$300(a ptr[out, array[r103]], b ptr[in, s300], c r107) r104 + +s300 { + f1 ptr[inout, s301] + f2 r106 +} + +s301 { + f2 r105 +} |
