SCM Repository
[diderot] / branches / vis12 / bugs / bug002.diderot |
View of /branches/vis12/bugs/bug002.diderot
Parent Directory
|
Revision Log
Revision 2146 -
(download)
(annotate)
Sun Feb 17 03:54:05 2013 UTC (9 years, 4 months ago) by glk
File size: 1921 byte(s)
Sun Feb 17 03:54:05 2013 UTC (9 years, 4 months ago) by glk
File size: 1921 byte(s)
bugs, and a place to move the files once they've been fixed
/**************** (there are two programs here; uncomment one) Compiling this program gives: [sqr-bug02.diderot:22.32-38] Error: undeclared variable 'foobar' uncaught exception Fail [Fail: Error in compiling sqr-bug02.diderot] raised at common/phase-timer.sml:76.50-76.52 raised at common/phase-timer.sml:76.50-76.52 raised at driver/main.sml:27.39-27.76 So there is both the "Error" and the "Fail". When there is a descriptive Error message, why have all the uncaught exception stuff? ****************/ real eps = 1.0; strand sqroot(real val) { output real root = val; update { root = (root + val/root)/2; if (|root^2 - val|/val < foobar) stabilize; } } // Strand initialization initially { sqroot(i) | i in 1..1000 }; /**************** But compiling this program gives: ... mid-il DFA: cpu = 0.000 seconds, gc = 0.000 seconds, 4 nodes, 3 visits, 1 iterations low-il DFA: cpu = 0.000 seconds, gc = 0.000 seconds, 3 nodes, 2 visits, 1 iterations low-il DFA: cpu = 0.000 seconds, gc = 0.000 seconds, 3 nodes, 2 visits, 1 iterations low-il DFA: cpu = 0.000 seconds, gc = 0.000 seconds, 18 nodes, 17 visits, 1 iterations low-il DFA: cpu = 0.000 seconds, gc = 0.000 seconds, 4 nodes, 3 visits, 1 iterations uncaught exception Fail [Fail: no output specified for strand sqroot] raised at common/phase-timer.sml:76.50-76.52 raised at common/phase-timer.sml:76.50-76.52 raised at c-target/c-target.sml:151.37-151.83 So there is actually a descriptive error message in the "Fail", but there's no "Error". Why not put descriptive error messages in "Error", and let the "uncaught exception" signify bugs in the compiler? ****************/ /* real eps = 1.0; strand sqroot(real val) { real root = val; update { root = (root + val/root)/2; if (|root^2 - val|/val < eps) stabilize; } } // Strand initialization initially { sqroot(i) | i in 1..1000 }; */
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |