# 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.

0x42		### unexpected int, expecting comment, define, include, resource, identifier
foo		### unexpected '\n', expecting '(', '{', '[', '='
%		### illegal character U+0025 '%'

int_flags0 = 0, 0x1, 0xab
int_flags1 = 123ab0x			### bad integer "123ab0x"
int_flags1 == 0, 1			### unexpected '=', expecting int, identifier, string
int_flags = 0, "foo"			### unexpected string, expecting int, identifier
int_flags2 = '				### char literal is not terminated
int_flags3 = 'a				### char literal is not terminated
int_flags3 = 'a, 1			### char literal is not terminated
int_flags4 = 1, -2-			### bad integer "-2-"

str_flags0 = "foo", "bar"
str_flags1 = "non terminated		### string literal is not terminated
str_flags2 = "bad chars здесь"		### illegal character U+00D0 'Ð' in string literal
str_flags3 = "string", not a string	### unexpected identifier, expecting string
str_flags4 = "string", 42		### unexpected int, expecting string

call(foo ,int32 , bar int32)		### unexpected ',', expecting int, identifier, string
call(foo int32:"bar")			### unexpected string, expecting int, identifier

define FOO `bar`
define FOO `bar				### C expression is not terminated

foo(x int32[1:2:3, opt])		### unexpected ':', expecting ']'

s0 {
	f0	string[""]
}

sf0 = "", "1"

include <linux/foo.h>
include "linux/foo.h"
incdir </foo/bar>
incdir "/foo/bar"

s2 {
	f1	int8

	# comment

	f2	int8

	# comment

}

s3 {
	f1	int8
} [attribute[1, "foo"], another[and[another]]]

type mybool8 int8
type net_port proc[1, 2, int16be]
type mybool16				### unexpected '\n', expecting '[', identifier
type type4:4 int32			### unexpected ':', expecting '[', identifier

type templ0[] int8			### unexpected ']', expecting identifier
type templ1[A,] int8			### unexpected ']', expecting identifier
type templ2[,] int8			### unexpected ',', expecting identifier
type templ3[				### unexpected '\n', expecting identifier
type templ4[A]				### unexpected '\n', expecting int, identifier, string
type templ5[A] const[A]
type templ6[A, B] const[A, B]
type templ7[0] ptr[in, int8]		### unexpected int, expecting identifier

type templ_struct0[A, B] {
	len	len[parent, int16]
	typ	const[A, int16]
	data	B
} [align_4]
