Use: ant ...to compile the project. Use: ant dist ...to generate the plugin jar file and a script to run scalac with the plugin. Then, try for instance: ./scalac-funcheck -Xshow-phases ...and notice that funcheck runs right after refchecks. Note that ./scalac-funcheck is generated and contains the full path to the jar file, so you can use it from any location and it will find what it needs. You may want to symbolically link to it from ~/bin, for instance. You can also try: ./scalac-funcheck -Xplugin-list Try: ./scalac-funcheck Test.scala ...and notice that the plugin does something (in particular, the compilation stops right after the plugin). Try: ./scalac-funcheck -P:funcheck:with-code Test.scala ...to achieve the same result but with letting the compiler continue its work. To clean up: ant clean Useful for showing Scala AST ----------------------------- Try: ./scalac-funcheck -Yshow-trees -Xprint:funcheck Test.scala ...to print the program's AST on the standard output Try: ./scalac-funcheck -Ybrowse:funcheck Test.scala ...to print a Swing-based GUI for browsing the program's AST ForAll Transformation: How does it work ----------------------------- First, look at Test4.scala to get an idea of how we can declare properties using "our" Spec library (which has a forAll combinator) Second, compile the whole project if you didn't yet (simply type: ant) Third, compile the Test4.scala using scalac extended with the funcheck plugin. You can do this by typing: ./scalac-funcheck -cp bin:lib/ScalaCheck-1.5.jar Test4.scala Now run the compiled program using standard the scala environment as follow: scala -cp lib/ScalaCheck-1.5.jar:. HeapTest And you should see a similar output: + OK, passed 100 tests. //Nice!! This means the property was ok! ! Falsified after 1 passed tests. //Good, The property was indeed wrong > ARG_0: "1" java.lang.ExceptionInInitializerError [...] Note: The ScalaCheck-1.5.jar library needs to be in the classpath for both compilation and execution because the FunCheck plugin rely on it for transforming every Spec.forAll (internal to our library) call to a scalacheck Prop.forAll call.
Name | Last commit | Last update |
---|---|---|
.. | ||
doc/phd-project-2009-07 | ||
examples | ||
lib | ||
liquid_benchs | ||
src | ||
tests | ||
tmp | ||
.classpath | ||
.project | ||
README | ||
Test1.scala | ||
Test2.scala | ||
Test3.scala | ||
Test4.scala | ||
build.xml | ||
forall-tests.sh | ||
scalac-plugin.xml | ||
test-leftist | ||
test-splay |