aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/fixtures/spec_testsuites/core/token.wast
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fixtures/spec_testsuites/core/token.wast')
-rw-r--r--tests/fixtures/spec_testsuites/core/token.wast286
1 files changed, 286 insertions, 0 deletions
diff --git a/tests/fixtures/spec_testsuites/core/token.wast b/tests/fixtures/spec_testsuites/core/token.wast
new file mode 100644
index 0000000..624bdca
--- /dev/null
+++ b/tests/fixtures/spec_testsuites/core/token.wast
@@ -0,0 +1,286 @@
+;; Test tokenization
+
+(assert_malformed
+ (module quote "(func (drop (i32.const0)))")
+ "unknown operator"
+)
+(assert_malformed
+ (module quote "(func br 0drop)")
+ "unknown operator"
+)
+
+
+;; Tokens can be delimited by parentheses
+
+(module
+ (func(nop))
+)
+(module
+ (func (nop)nop)
+)
+(module
+ (func nop(nop))
+)
+(module
+ (func(nop)(nop))
+)
+(module
+ (func $f(nop))
+)
+(module
+ (func br 0(nop))
+)
+(module
+ (table 1 funcref)
+ (func)
+ (elem (i32.const 0)0)
+)
+(module
+ (table 1 funcref)
+ (func $f)
+ (elem (i32.const 0)$f)
+)
+(module
+ (memory 1)
+ (data (i32.const 0)"a")
+)
+(module
+ (import "spectest" "print"(func))
+)
+
+
+;; Tokens can be delimited by comments
+
+(module
+ (func;;bla
+ )
+)
+(module
+ (func (nop);;bla
+ )
+)
+(module
+ (func nop;;bla
+ )
+)
+(module
+ (func $f;;bla
+ )
+)
+(module
+ (func br 0;;bla
+ )
+)
+(module
+ (data "a";;bla
+ )
+)
+
+
+;; Space required between symbols and non-parenthesis tokens
+
+(module
+ (func (block $l (i32.const 0) (br_table 0 $l)))
+)
+(assert_malformed
+ (module quote
+ "(func (block $l (i32.const 0) (br_table 0$l)))"
+ )
+ "unknown operator"
+)
+
+(module
+ (func (block $l (i32.const 0) (br_table $l 0)))
+)
+(assert_malformed
+ (module quote
+ "(func (block $l (i32.const 0) (br_table $l0)))"
+ )
+ "unknown label"
+)
+
+(module
+ (func (block $l (i32.const 0) (br_table $l $l)))
+)
+(assert_malformed
+ (module quote
+ "(func (block $l (i32.const 0) (br_table $l$l)))"
+ )
+ "unknown label"
+)
+
+(module
+ (func (block $l0 (i32.const 0) (br_table $l0)))
+)
+(module
+ (func (block $l$l (i32.const 0) (br_table $l$l)))
+)
+
+
+;; Space required between strings and non-parenthesis tokens
+
+(module
+ (data "a")
+)
+(assert_malformed
+ (module quote
+ "(data\"a\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data $l "a")
+)
+(assert_malformed
+ (module quote
+ "(data $l\"a\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data $l " a")
+)
+(assert_malformed
+ (module quote
+ "(data $l\" a\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data $l "a ")
+)
+(assert_malformed
+ (module quote
+ "(data $l\"a \")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data $l "a " "b")
+)
+(assert_malformed
+ (module quote
+ "(data $l\"a \"\"b\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data $l "")
+)
+(assert_malformed
+ (module quote
+ "(data $l\"\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data $l " ")
+)
+(assert_malformed
+ (module quote
+ "(data $l\" \")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data $l " ")
+)
+(assert_malformed
+ (module quote
+ "(data $l\" \")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data "a" "b")
+)
+(assert_malformed
+ (module quote
+ "(data \"a\"\"b\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data "a" " b")
+)
+(assert_malformed
+ (module quote
+ "(data \"a\"\" b\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data "a " "b")
+)
+(assert_malformed
+ (module quote
+ "(data \"a \"\"b\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data "" "")
+)
+(assert_malformed
+ (module quote
+ "(data \"\"\"\")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data "" " ")
+)
+(assert_malformed
+ (module quote
+ "(data \"\"\" \")"
+ )
+ "unknown operator"
+)
+
+(module
+ (data " " "")
+)
+(assert_malformed
+ (module quote
+ "(data \" \"\"\")"
+ )
+ "unknown operator"
+)
+
+
+(assert_malformed
+ (module quote
+ "(func \"a\"x)"
+ )
+ "unknown operator"
+)
+(assert_malformed
+ (module quote
+ "(func \"a\"0)"
+ )
+ "unknown operator"
+)
+(assert_malformed
+ (module quote
+ "(func 0\"a\")"
+ )
+ "unknown operator"
+)
+(assert_malformed
+ (module quote
+ "(func \"a\"$x)"
+ )
+ "unknown operator"
+)