summary refs log tree commit diff stats
path: root/tests/operator
diff options
context:
space:
mode:
Diffstat (limited to 'tests/operator')
-rw-r--r--tests/operator/tofopr.nim26
-rw-r--r--tests/operator/toprprec.nim39
-rw-r--r--tests/operator/tprecedence.nim11
3 files changed, 76 insertions, 0 deletions
diff --git a/tests/operator/tofopr.nim b/tests/operator/tofopr.nim
new file mode 100644
index 000000000..961d81bd3
--- /dev/null
+++ b/tests/operator/tofopr.nim
@@ -0,0 +1,26 @@
+discard """
+  file: "tofopr.nim"
+  output: "falsetrue"
+"""
+# Test is operator
+
+type
+  TMyType = object {.inheritable.}
+    len: int
+    data: string
+    
+  TOtherType = object of TMyType
+   
+proc p(x: TMyType): bool = 
+  return x of TOtherType
+    
+var
+  m: TMyType
+  n: TOtherType
+
+write(stdout, p(m))
+write(stdout, p(n))
+
+#OUT falsetrue
+
+
diff --git a/tests/operator/toprprec.nim b/tests/operator/toprprec.nim
new file mode 100644
index 000000000..ce33934b5
--- /dev/null
+++ b/tests/operator/toprprec.nim
@@ -0,0 +1,39 @@
+discard """
+  file: "toprprec.nim"
+  output: "done"
+"""
+# Test operator precedence: 
+
+template `@` (x: expr): expr {.immediate.} = self.x
+template `@!` (x: expr): expr {.immediate.} = x
+template `===` (x: expr): expr {.immediate.} = x
+
+type
+  TO = object
+    x: int
+  TA = tuple[a, b: int, obj: TO]
+  
+proc init(self: var TA): string =
+  @a = 3
+  === @b = 4
+  @obj.x = 4
+  @! === result = "abc"
+  result = @b.`$`
+
+assert 3+5*5-2 == 28- -26-28
+
+proc `^-` (x, y: int): int =  
+  # now right-associative!
+  result = x - y
+  
+assert 34 ^- 6 ^- 2 == 30
+assert 34 - 6 - 2 == 26
+
+
+var s: TA
+assert init(s) == "4"
+
+echo "done"
+
+
+
diff --git a/tests/operator/tprecedence.nim b/tests/operator/tprecedence.nim
new file mode 100644
index 000000000..6b1b250a2
--- /dev/null
+++ b/tests/operator/tprecedence.nim
@@ -0,0 +1,11 @@
+discard """
+  output: "true"
+"""
+
+# Test the new predence rules
+
+proc `\+` (x, y: int): int = result = x + y
+proc `\*` (x, y: int): int = result = x * y
+
+echo 5 \+ 1 \* 9 == 14
+