From 5692c16a8fbb5c41deaf5fe8a7f7116707adcdc4 Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Wed, 14 Nov 2001 19:54:30 +0000 Subject: [PATCH] updated CALLER_MODULE docs [SVN r11686] --- build_system.htm | 19 ++++++++++++++----- v1/build_system.htm | 19 ++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/build_system.htm b/build_system.htm index 8e90b17a0..6ec1afc93 100644 --- a/build_system.htm +++ b/build_system.htm @@ -1527,24 +1527,33 @@ IMPORT m1 : m2 : r1 x : r2 y ; # imports m2.r1 as r2 and m2.x as y into m1
-rule CALLER_MODULE ( )
+rule CALLER_MODULE ( levels ? )
 
CALLER_MODULE returns the name of the module scope - enclosing the call to its caller. If the scope belongs to the global + enclosing the call to its caller (if levels is supplied, it is + interpreted as an integer number of additional levels of call stack to + traverse to locate the module). If the scope belongs to the global module, or if no such module exists, returns the empty list. For - example, the following prints "{Y}": + example, the following prints "{Y} {X}":
 module X {
     rule get-caller { return [ CALLER_MODULE ] ; }
+    rule get-caller's-caller { return [ CALLER_MODULE 1 ] ; }
+
+    rule call-Y { return Y.call-X2 ; }
+
 }
 module Y {
-    rule call-X { X.get-caller ; }
+    rule call-X { return X.get-caller ; }
+    rule call-X2 { return X.get-caller's-caller ; }
 }
-callers = [ X.get-caller ] [ Y.call-X ] ;
+
+callers = [ X.get-caller ] [ Y.call-X ] [ X.call-Y ] ;
 ECHO {$(callers)} ;
+
 
Like the module declaration syntax and the IMPORT rule, this rule is a diff --git a/v1/build_system.htm b/v1/build_system.htm index 8e90b17a0..6ec1afc93 100644 --- a/v1/build_system.htm +++ b/v1/build_system.htm @@ -1527,24 +1527,33 @@ IMPORT m1 : m2 : r1 x : r2 y ; # imports m2.r1 as r2 and m2.x as y into m1
-rule CALLER_MODULE ( )
+rule CALLER_MODULE ( levels ? )
 
CALLER_MODULE returns the name of the module scope - enclosing the call to its caller. If the scope belongs to the global + enclosing the call to its caller (if levels is supplied, it is + interpreted as an integer number of additional levels of call stack to + traverse to locate the module). If the scope belongs to the global module, or if no such module exists, returns the empty list. For - example, the following prints "{Y}": + example, the following prints "{Y} {X}":
 module X {
     rule get-caller { return [ CALLER_MODULE ] ; }
+    rule get-caller's-caller { return [ CALLER_MODULE 1 ] ; }
+
+    rule call-Y { return Y.call-X2 ; }
+
 }
 module Y {
-    rule call-X { X.get-caller ; }
+    rule call-X { return X.get-caller ; }
+    rule call-X2 { return X.get-caller's-caller ; }
 }
-callers = [ X.get-caller ] [ Y.call-X ] ;
+
+callers = [ X.get-caller ] [ Y.call-X ] [ X.call-Y ] ;
 ECHO {$(callers)} ;
+
 
Like the module declaration syntax and the IMPORT rule, this rule is a