Revision: 1942
          http://svn.sourceforge.net/vexi/?rev=1942&view=rev
Author:   mkpg2
Date:     2007-07-07 10:14:53 -0700 (Sat, 07 Jul 2007)

Log Message:
-----------
Fix. Only print trap warning once per function. 
  + a small refactorisation.

Modified Paths:
--------------
    core/trunk/org.ibex.js/src/org/ibex/js/JS.jpp
    core/trunk/org.ibex.js/src/org/ibex/js/JSFunction.java
    core/trunk/org.ibex.js/src/org/ibex/js/Parser.java
    core/trunk/org.ibex.js/src/org/ibex/js/Thread.java
    core/trunk/org.vexi.devl/src/org/ibex/js/ScopeInfoManager.java

Modified: core/trunk/org.ibex.js/src/org/ibex/js/JS.jpp
===================================================================
--- core/trunk/org.ibex.js/src/org/ibex/js/JS.jpp       2007-07-07 16:57:13 UTC 
(rev 1941)
+++ core/trunk/org.ibex.js/src/org/ibex/js/JS.jpp       2007-07-07 17:14:53 UTC 
(rev 1942)
@@ -294,8 +294,10 @@
         }
 
         public void addTrap(JS key, JS f) throws JSExn {
-               if (f instanceof JSFunction && !((JSFunction)f).isValidTrap()){
-                       JSU.warn("Trap function has no explicit 
cascade/return");
+               if (f instanceof JSFunction && !((JSFunction)f).validTrap){
+                       // So we only see the error once
+               ((JSFunction)f).validTrap = true;
+                       JSU.warn("Trap function has no explicit cascade/return, 
defined at " + ((JSFunction)f).definedAt());
                }
                
             if (f instanceof JSFunction && (f.getFormalArgs() == null || 
f.getFormalArgs().length > 1))

Modified: core/trunk/org.ibex.js/src/org/ibex/js/JSFunction.java
===================================================================
--- core/trunk/org.ibex.js/src/org/ibex/js/JSFunction.java      2007-07-07 
16:57:13 UTC (rev 1941)
+++ core/trunk/org.ibex.js/src/org/ibex/js/JSFunction.java      2007-07-07 
17:14:53 UTC (rev 1942)
@@ -8,11 +8,7 @@
 class JSFunction extends JS.Immutable implements ByteCodes, Tokens{
     private static final String[] emptyFormalArgs = new String[0];
     
-    private boolean validTrap = false; 
-    public void setValidTrap(){
-       validTrap=true;
-    }
-    public boolean isValidTrap(){return validTrap;}
+    boolean validTrap = false; 
     
     // Fields and Accessors ///////////////////////////////////////////////
 
@@ -83,15 +79,13 @@
         return this;
     }
     
-
+    String definedAt(){return sourceName + ":" + firstLine;};
     // Debugging 
//////////////////////////////////////////////////////////////////////
-
-    String extendedToString() { return "[" + sourceName + ":" + firstLine + 
"]"; }
-
+   
     public String dump() { return dump(""); }
     private  String dump(String prefix) {
         StringBuffer sb = new StringBuffer(1024);
-        sb.append("\n" + sourceName + ": " + firstLine + "\n");
+        sb.append("\n" +definedAt() + "\n");
         for (int i=0; i < size; i++) {
             sb.append(prefix);
             sb.append(i).append(" (").append(line[i]).append("): ");

Modified: core/trunk/org.ibex.js/src/org/ibex/js/Parser.java
===================================================================
--- core/trunk/org.ibex.js/src/org/ibex/js/Parser.java  2007-07-07 16:57:13 UTC 
(rev 1941)
+++ core/trunk/org.ibex.js/src/org/ibex/js/Parser.java  2007-07-07 17:14:53 UTC 
(rev 1942)
@@ -231,7 +231,7 @@
     
     void validTrap() {
        JSFunction f = ((ScopeInfo)scopeStack.peek()).jsfunc;
-       f.setValidTrap();
+       f.validTrap = true;
     }
     
     // Parsing Logic /////////////////////////////////////////////////////////

Modified: core/trunk/org.ibex.js/src/org/ibex/js/Thread.java
===================================================================
--- core/trunk/org.ibex.js/src/org/ibex/js/Thread.java  2007-07-07 16:57:13 UTC 
(rev 1941)
+++ core/trunk/org.ibex.js/src/org/ibex/js/Thread.java  2007-07-07 17:14:53 UTC 
(rev 1942)
@@ -225,7 +225,7 @@
        
        public String description(){
                if(f!=null)
-                       return f.sourceName + ":" + f.firstLine;
+                       return f.definedAt();
                return "thread, f==null"; 
        }
        

Modified: core/trunk/org.vexi.devl/src/org/ibex/js/ScopeInfoManager.java
===================================================================
--- core/trunk/org.vexi.devl/src/org/ibex/js/ScopeInfoManager.java      
2007-07-07 16:57:13 UTC (rev 1941)
+++ core/trunk/org.vexi.devl/src/org/ibex/js/ScopeInfoManager.java      
2007-07-07 17:14:53 UTC (rev 1942)
@@ -136,7 +136,7 @@
                h.put("id", ((JS.Obj)jsvalue).hashCode()+"");
                }else if(jsvalue instanceof JSFunction){
                        type = VARTYPE_FUNCTION;
-                       h.put("location", 
((JSFunction)jsvalue).sourceName+":"+((JSFunction)jsvalue).firstLine);
+                       h.put("location", ((JSFunction)jsvalue).definedAt());
                }else if(jsvalue instanceof JSArray){
                        type = VARTYPE_ARRAY;
                        h.put("length",((JSArray)jsvalue).size()+"");
@@ -181,7 +181,7 @@
                value = JSU.toString(jsvalue);
             }
                }else if(jsvalue instanceof JSFunction){
-                       value = ((JSFunction)jsvalue).extendedToString();
+                       value = "[" + ((JSFunction)jsvalue).definedAt() + "]";
                }
                return value;
        }
@@ -496,7 +496,7 @@
                }
        
        static private String sikey(JSFunction jsfunc, int pc){
-               return (jsfunc.sourceName + ":" + jsfunc.firstLine + ":" + pc);
+               return (jsfunc.definedAt() + ":" + pc);
         }
        
        static void put(Scope scope, JSFunction f, int pc){


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to