<html>
<head>
<script>

function log(message) {
    console.log(message)
}

var funcBody = "(){\n" + 
"   var thisFunc = arguments.callee;\n" +
"   if (!thisFunc.name) thisFunc.displayName = 'f%';\n" + 
"   log(thisFunc.name || thisFunc.displayName);\n" +
"}";

var funcs = [];
var patterns = [
    // proper use of @sourceURL comment
    "//@sourceURL=f%.js\nfuncs.push(function" + funcBody + ")",
    "//@sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
    " //@sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
    "// @sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
    "//@ sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
    "//@sourceURL =f%.js\nfuncs.push(function f%" + funcBody + ")",
    "//@sourceURL= f%.js\nfuncs.push(function f%" + funcBody + ")",
    "//@sourceURL=f%.js \nfuncs.push(function f%" + funcBody + ")",
    " // @ sourceURL = f%.js \nfuncs.push(function f%" + funcBody + ")",
    "//@sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ");\n//@sourceURL=should-not-see\n",
    "funcs.push(function f%" + funcBody + ")\n//@sourceURL=f%.js\n",
    "funcs.push(function f%" + funcBody + ")\n//@sourceURL=f%.js \n",
    "funcs.push(function f%" + funcBody + ")\n//@sourceURL=f%.js",
    
    // improper or non-existant use of @sourceURL comment
    "funcs.push(function f%" + funcBody + ")",
    "//@sourceurl=f%.js\nfuncs.push(function f%" + funcBody + ")",
    "//sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
    "/*@sourceURL=f%.js*/\nfuncs.push(function f%" + funcBody + ")",
    "//\nsourceURL='f%.js';\nfuncs.push(function f%" + funcBody + ")",
    "//@sourceURL=\nfuncs.push(function" + funcBody + ")",
];


for (var i=0; i<patterns.length; i++) {
    eval(patterns[i].replace(/%/g, i));
}

</script>
</head>

<body>
<p>This page's JavaScript calls functions from named eval()'s.
    
<p>Used to test <a href="https://bugs.webkit.org/show_bug.cgi?id=25475">https://bugs.webkit.org/show_bug.cgi?id=25475</a>

<p>Load the Web Inspector and look at
the script's panel, and the script list drop-down control.  
You should see entries for scripts named 
<tt>"(program):f0.js"</tt> through <tt>"(program):f12.js"</tt>.  The entries were named
via proper use of the <tt>//@sourceURL</tt> comment.  There will also be entries
named <tt>"(program)"</tt> for source that does not properly use, or use at all,
the <tt>//@sourceURL</tt> comment.

<p>Now, set a breakpoint in the body of the <tt>"f0"</tt> function in the
<tt>"(program):f0.js"</tt> script.  Then click this button:

<p><input type="button" value="run" onclick="funcs[0]()">

<p>When stopped at the breakpoint, the entry for the function in the
call stack control should the name of the script, <tt>"(program):f0.js"</tt>,
beside the function name <tt>"f0"</tt>.  Note the function name for 
<tt>f0</tt> is set with the new <tt>"displayName"</tt> property.
</body>
</html>
