Nice/src/nice/tools/visibility tests.nice,1.2,1.3 impl.nice,1.1,1.2

Daniel Bonniot <[email protected]>
Newsgroups gmane.comp.lang.nice.cvs
Message-ID <[email protected]>
Update of /cvsroot/nice/Nice/src/nice/tools/visibility
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1884/src/nice/tools/visibility

Modified Files:
	tests.nice impl.nice 
Log Message:
Put 'general' symbols at the highest possible level so their are viewed
globally.


Index: impl.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/nice/tools/visibility/impl.nice,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** impl.nice	6 Mar 2005 12:55:56 -0000	1.1
--- impl.nice	6 Mar 2005 15:52:07 -0000	1.2
***************
*** 20,24 ****
  
  private <Sym> ?List<Sym> maybeGet(?Scope<Sym> s, String key) =
!   s == null ? null : s.map[key];
  
  add(Scope this, key, value, visibility) = map.add(key, value);
--- 20,24 ----
  
  private <Sym> ?List<Sym> maybeGet(?Scope<Sym> s, String key) =
!   s == null ? null : (s.map[key] || s.opens[key] || s.parent.maybeGet(key));
  
  add(Scope this, key, value, visibility) = map.add(key, value);
***************
*** 31,36 ****
  add(Scope this, key, value, general)
  {
!   super;
!   publicMap.add(key, value);
  }
  
--- 31,44 ----
  add(Scope this, key, value, general)
  {
!   // Put the symbol at the highest possible level
!   if (parent != null)
!     notNull(parent).add(key, value, general);
!   else
!     {
!       // General implies familial
!       this.add(key, value, familial);
! 
!       publicMap.add(key, value);
!     }
  }
  
***************
*** 45,49 ****
  <Sym> get(Scope this, root, key) = this.getScope(root).maybeGet(key) || empty;
  
! <Sym> get(Scope this, key) = map[key] || parent.maybeGet(key) || opens[key] || empty;
  
  <Sym> ?List<Sym> get(List<Scope<Sym>> scopes, String key)
--- 53,57 ----
  <Sym> get(Scope this, root, key) = this.getScope(root).maybeGet(key) || empty;
  
! <Sym> get(Scope this, key) = this.maybeGet(key) || empty;
  
  <Sym> ?List<Sym> get(List<Scope<Sym>> scopes, String key)

Index: tests.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/nice/tools/visibility/tests.nice,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** tests.nice	6 Mar 2005 13:28:11 -0000	1.2
--- tests.nice	6 Mar 2005 15:52:07 -0000	1.3
***************
*** 201,204 ****
--- 201,235 ----
  }
  
+ void _testNestedVisibility()
+ {
+   Scope<char> root1 = new Scope(name: "root1", parent: null);
+   Scope<char> inner1 = new Scope(name: "inner1", parent: root1);
+ 
+   Scope<char> root2 = new Scope(name: "root2", parent: null);
+   Scope<char> inner2 = new Scope(name: "inner2", parent: root2);
+ 
+   root2.addImplicitOpen(root1);
+ 
+   List<char> res;
+ 
+   inner1.add("i", 'i', intimate);
+   res = inner2.get("i");
+   assert res.size == 0;
+   res = root2.get("i");
+   assert res.size == 0;
+ 
+   inner1.add("f", 'f', familial);
+   res = inner2.get("f");
+   assert res.size == 0;
+   res = root2.get("f");
+   assert res.size == 0;
+ 
+   inner1.add("g", 'g', general);
+   res = inner2.get("g");
+   assert res.size == 1 && res[0] == 'g';
+   res = root2.get("g");
+   assert res.size == 1 && res[0] == 'g';
+ }
+ 
  void _testGeneralVisibility()
  {



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.