summary refs log tree commit diff stats
path: root/tests/run
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2012-04-15 10:02:15 +0200
committerAraq <rumpf_a@web.de>2012-04-15 10:02:15 +0200
commit959e370ae9f5c1e91b735f0633895780bb832235 (patch)
treee9d65e4e118c4285b9ca376ce69d8ad69fdc5f98 /tests/run
parent36287310644b31ed3b65922075d49e58940cdd7e (diff)
downloadNim-959e370ae9f5c1e91b735f0633895780bb832235.tar.gz
@ is a sigil-like operator
Diffstat (limited to 'tests/run')
-rwxr-xr-xtests/run/toprprec.nim21
-rwxr-xr-xtests/run/tpegs.nim14
2 files changed, 28 insertions, 7 deletions
diff --git a/tests/run/toprprec.nim b/tests/run/toprprec.nim
index 17ec91fda..ce33934b5 100755
--- a/tests/run/toprprec.nim
+++ b/tests/run/toprprec.nim
@@ -4,6 +4,22 @@ discard """
 """
 # 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 =  
@@ -12,6 +28,11 @@ proc `^-` (x, y: int): int =
   
 assert 34 ^- 6 ^- 2 == 30
 assert 34 - 6 - 2 == 26
+
+
+var s: TA
+assert init(s) == "4"
+
 echo "done"
 
 
diff --git a/tests/run/tpegs.nim b/tests/run/tpegs.nim
index 8fe302073..4473f90bb 100755
--- a/tests/run/tpegs.nim
+++ b/tests/run/tpegs.nim
@@ -57,8 +57,8 @@ type
     pkBackRef,          ## $i     --> Internal DSL: backref(i)
     pkBackRefIgnoreCase,
     pkBackRefIgnoreStyle,
-    pkSearch,           ## @a     --> Internal DSL: @a
-    pkCapturedSearch,   ## {@} a  --> Internal DSL: @@a
+    pkSearch,           ## @a     --> Internal DSL: !*a
+    pkCapturedSearch,   ## {@} a  --> Internal DSL: !*\a
     pkRule,             ## a <- b
     pkList,             ## a, b
     pkStartAnchor       ## ^      --> Internal DSL: startAnchor()
@@ -212,13 +212,13 @@ proc `*`*(a: TPeg): TPeg {.rtl, extern: "npegsGreedyRep".} =
     result.kind = pkGreedyRep
     result.sons = @[a]
 
-proc `@`*(a: TPeg): TPeg {.rtl, extern: "npegsSearch".} =
+proc `!*`*(a: TPeg): TPeg {.rtl, extern: "npegsSearch".} =
   ## constructs a "search" for the PEG `a`
   result.kind = pkSearch
   result.sons = @[a]
 
-proc `@@`*(a: TPeg): TPeg {.rtl, 
-                            extern: "npgegsCapturedSearch".} =
+proc `!*\`*(a: TPeg): TPeg {.rtl, 
+                             extern: "npgegsCapturedSearch".} =
   ## constructs a "captured search" for the PEG `a`
   result.kind = pkCapturedSearch
   result.sons = @[a]
@@ -1484,10 +1484,10 @@ proc primary(p: var TPegParser): TPeg =
     return !primary(p)
   of tkAt:
     getTok(p)
-    return @primary(p)
+    return !*primary(p)
   of tkCurlyAt:
     getTok(p)
-    return @@primary(p).token(p)
+    return !*\primary(p).token(p)
   else: nil
   case p.tok.kind
   of tkIdentifier: