diff --git a/src/funcheck/AnalysisComponent.scala b/src/funcheck/AnalysisComponent.scala index bf0d8dd67c2d20bc8e5a704926106a272654dc4c..1b0c267047989130dd1c53ddb983eb87908f471f 100644 --- a/src/funcheck/AnalysisComponent.scala +++ b/src/funcheck/AnalysisComponent.scala @@ -33,8 +33,15 @@ class AnalysisComponent(val global: Global, val pluginInstance: FunCheckPlugin) fresh = unit.fresh val prog: purescala.Definitions.Program = extractCode(unit) - println("Extracted program for " + unit + ": ") - println(prog) + if(pluginInstance.stopAfterExtraction) { + println("Extracted program for " + unit + ": ") + println(prog) + println("Extraction complete. Now terminating the compiler process.") + exit(0) + } else { + println("Extracted program for " + unit + ": ") + println(prog) + } println("Starting analysis.") val analysis = new purescala.Analysis(prog) diff --git a/src/funcheck/FunCheckPlugin.scala b/src/funcheck/FunCheckPlugin.scala index 63ecdb8eb0282fc6bb411d52ed6db0adea85ba44..be396d0a1b49428bc042e2ed075ae2d3d69d650a 100644 --- a/src/funcheck/FunCheckPlugin.scala +++ b/src/funcheck/FunCheckPlugin.scala @@ -12,11 +12,13 @@ class FunCheckPlugin(val global: Global) extends Plugin { val description = "Static analysis for Scala by LARA." var stopAfterAnalysis: Boolean = true + var stopAfterExtraction: Boolean = false /** The help message displaying the options for that plugin. */ override val optionsHelp: Option[String] = Some( " -P:funcheck:uniqid When pretty-printing funcheck trees, show identifiers IDs" + "\n" + " -P:funcheck:with-code Allows the compiler to keep running after the static analysis" + "\n" + + " -P:funcheck:parse Checks only whether the program is valid PureScala" + "\n" + " -P:funcheck:extensions=ex1:... Specifies a list of qualified class names of extensions to be loaded" ) @@ -26,6 +28,7 @@ class FunCheckPlugin(val global: Global) extends Plugin { option match { case "with-code" => stopAfterAnalysis = false case "uniqid" => purescala.Settings.showIDs = true + case "parse" => stopAfterExtraction = true case s if s.startsWith("extensions=") => purescala.Settings.extensionNames = s.substring("extensions=".length, s.length) case _ => error("Invalid option: " + option) }