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