From 8fb1b1aaffa5167bb7f6986ddcd06f9f4436b2bf Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Thu, 3 Feb 2011 15:08:36 +0000 Subject: Switched back to StoreReporter for presentation... Switched back to StoreReporter for presentation compiler tests. This eats up error messages, but if the output is correct we don't mind a spurious error here and there. Renabled simple presentation compiler tests. no review. --- test/files/presentation/simple-tests.check | 398 +++++++++++++++++++++ test/files/presentation/simple-tests.javaopts | 1 + .../simple-tests/SimpleInteractiveTest.scala | 11 + .../presentation/simple-tests/src/Tester.scala | 204 +++++++++++ 4 files changed, 614 insertions(+) create mode 100644 test/files/presentation/simple-tests.check create mode 100644 test/files/presentation/simple-tests.javaopts create mode 100644 test/files/presentation/simple-tests/SimpleInteractiveTest.scala create mode 100644 test/files/presentation/simple-tests/src/Tester.scala (limited to 'test/files') diff --git a/test/files/presentation/simple-tests.check b/test/files/presentation/simple-tests.check new file mode 100644 index 0000000000..a1fbddfa2a --- /dev/null +++ b/test/files/presentation/simple-tests.check @@ -0,0 +1,398 @@ +reload: Tester.scala +askTypeCompletion at Tester.scala(16,25) + +================================================================================ +[response] aksTypeCompletion at (16,25) +retreived 74 members +TypeMember(method $asInstanceOf,[T0]()T0,true,false,method any2stringadd) +TypeMember(method !=,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method !=,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ##,()Int,true,false,method any2stringadd) +TypeMember(method $isInstanceOf,[T0]()Boolean,true,false,method any2stringadd) +TypeMember(method ->,[B](y: B)(Tester.this.settings.BooleanSetting, B),true,false,method any2ArrowAssoc) +TypeMember(method +,(other: String)java.lang.String,true,false,method any2stringadd) +TypeMember(method →,[B](y: B)(Tester.this.settings.BooleanSetting, B),true,false,method any2ArrowAssoc) +TypeMember(constructor BooleanSetting,(name: String,descr: String)Tester.this.settings.BooleanSetting,true,false,) +TypeMember(constructor Object,()java.lang.Object,true,true,) +TypeMember(constructor StringAdd,(self: Any)scala.runtime.StringAdd,true,false,method any2stringadd) +TypeMember(constructor ArrowAssoc,(x: Tester.this.settings.BooleanSetting)ArrowAssoc[Tester.this.settings.BooleanSetting],true,false,method any2ArrowAssoc) +TypeMember(type T,Tester.this.settings.verbose.T,true,false,) +TypeMember(method _abbreviations,=> List[String],false,true,) +TypeMember(method _helpSyntax,=> String,false,true,) +TypeMember(method _postSetHook,=> (Tester.this.settings.verbose.type) => Unit,false,true,) +TypeMember(method abbreviations,=> List[String],true,true,) +TypeMember(method asInstanceOf,[T0]=> T0,true,true,) +TypeMember(method choices,=> List[String],true,true,) +TypeMember(method clone,()java.lang.Object,false,true,) +TypeMember(method compare,(that: Tester.this.settings.Setting)Int,true,true,) +TypeMember(method compareTo,(that: Tester.this.settings.Setting)Int,true,true,) +TypeMember(method dependencies,=> List[(Tester.this.settings.Setting, String)],true,true,) +TypeMember(method dependency,=> Option[(Tester.this.settings.Setting, String)],false,true,) +TypeMember(method dependsOn,(s: Tester.this.settings.Setting,value: String)Tester.this.settings.verbose.type,true,true,) +TypeMember(value descr,String,false,false,) +TypeMember(method ensuring,(cond: (Tester.this.settings.BooleanSetting) => Boolean,msg: => Any)Tester.this.settings.BooleanSetting,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: (Tester.this.settings.BooleanSetting) => Boolean)Tester.this.settings.BooleanSetting,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean,msg: => Any)Tester.this.settings.BooleanSetting,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean)Tester.this.settings.BooleanSetting,true,false,method any2Ensuring) +TypeMember(method eq,(x$1: AnyRef)Boolean,true,true,) +TypeMember(method equals,(that: Any)Boolean,true,true,) +TypeMember(method errorAndValue,[T](msg: String,x: T)T,true,true,) +TypeMember(method finalize,()Unit,false,true,) +TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd) +TypeMember(method hashCode,()Int,true,true,) +TypeMember(value helpDescription,=> String,true,true,) +TypeMember(method helpSyntax,=> String,true,true,) +TypeMember(method isAdvanced,=> Boolean,true,true,) +TypeMember(method isDefault,=> Boolean,true,true,) +TypeMember(method isForDebug,=> Boolean,true,true,) +TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,) +TypeMember(method isInternalOnly,=> Boolean,true,true,) +TypeMember(method isPrivate,=> Boolean,true,true,) +TypeMember(method isStandard,=> Boolean,true,true,) +TypeMember(value name,String,false,false,) +TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,) +TypeMember(method notify,()Unit,true,true,) +TypeMember(method notifyAll,()Unit,true,true,) +TypeMember(method postSetHook,()Unit,true,true,) +TypeMember(method respondsTo,(label: String)Boolean,true,true,) +TypeMember(value self,Any,false,false,method any2stringadd) +TypeMember(method setByUser,=> Boolean,false,true,) +TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,) +TypeMember(method toString,()String,true,true,) +TypeMember(method tryToSet,(args: List[String])Some[List[String]],true,false,) +TypeMember(method tryToSetColon,(args: List[String])Option[Tester.this.settings.ResultOfTryToSet],true,true,) +TypeMember(method tryToSetFromPropertyValue,(s: String)Unit,true,false,) +TypeMember(method tryToSetProperty,(args: List[String])Option[Tester.this.settings.ResultOfTryToSet],true,true,) +TypeMember(method unparse,=> List[String],true,false,) +TypeMember(method v,=> Boolean,false,false,) +TypeMember(variable v,Boolean,false,false,) +TypeMember(method value,=> Tester.this.settings.verbose.T,true,true,) +TypeMember(method wait,()Unit,true,true,) +TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,) +TypeMember(method wait,(x$1: Long)Unit,true,true,) +TypeMember(method withAbbreviation,(s: String)Tester.this.settings.verbose.type,true,true,) +TypeMember(method withHelpSyntax,(s: String)Tester.this.settings.verbose.type,true,true,) +TypeMember(method withPostSetHook,(f: (Tester.this.settings.verbose.type) => Unit)Tester.this.settings.verbose.type,true,true,) +TypeMember(value x,=> Tester.this.settings.BooleanSetting,true,false,method any2ArrowAssoc) +TypeMember(value x,Tester.this.settings.BooleanSetting,false,false,method any2ArrowAssoc) +askTypeCompletion at Tester.scala(23,24) + +================================================================================ +[response] aksTypeCompletion at (23,24) +retreived 52 members +TypeMember(method $asInstanceOf,[T0]()T0,true,false,method any2stringadd) +TypeMember(method !=,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method !=,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ##,()Int,true,false,method any2stringadd) +TypeMember(method $isInstanceOf,[T0]()Boolean,true,false,method any2stringadd) +TypeMember(method ->,[B](y: B)(scala.tools.nsc.interactive.Response[U], B),true,false,method any2ArrowAssoc) +TypeMember(method +,(other: String)java.lang.String,true,false,method any2stringadd) +TypeMember(method →,[B](y: B)(scala.tools.nsc.interactive.Response[U], B),true,false,method any2ArrowAssoc) +TypeMember(constructor Response,()scala.tools.nsc.interactive.Response[U],true,false,) +TypeMember(constructor StringAdd,(self: Any)scala.runtime.StringAdd,true,false,method any2stringadd) +TypeMember(constructor ArrowAssoc,(x: scala.tools.nsc.interactive.Response[U])ArrowAssoc[scala.tools.nsc.interactive.Response[U]],true,false,method any2ArrowAssoc) +TypeMember(method asInstanceOf,[T0]=> T0,true,true,) +TypeMember(method cancel,()Unit,true,false,) +TypeMember(method cancelled,=> Boolean,false,false,) +TypeMember(variable cancelled,Boolean,false,false,) +TypeMember(method clear,()Unit,true,false,) +TypeMember(method clone,()java.lang.Object,false,true,) +TypeMember(method complete,=> Boolean,false,false,) +TypeMember(variable complete,Boolean,false,false,) +TypeMember(method data,=> Option[Either[U,Throwable]],false,false,) +TypeMember(variable data,Option[Either[U,Throwable]],false,false,) +TypeMember(method ensuring,(cond: (scala.tools.nsc.interactive.Response[U]) => Boolean,msg: => Any)scala.tools.nsc.interactive.Response[U],true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: (scala.tools.nsc.interactive.Response[U]) => Boolean)scala.tools.nsc.interactive.Response[U],true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean,msg: => Any)scala.tools.nsc.interactive.Response[U],true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean)scala.tools.nsc.interactive.Response[U],true,false,method any2Ensuring) +TypeMember(method eq,(x$1: AnyRef)Boolean,true,true,) +TypeMember(method equals,(x$1: Any)Boolean,true,true,) +TypeMember(method finalize,()Unit,false,true,) +TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd) +TypeMember(method get,=> Either[U,Throwable],true,false,) +TypeMember(method get,(timeout: Long)Option[Either[U,Throwable]],true,false,) +TypeMember(method hashCode,()Int,true,true,) +TypeMember(method isCancelled,=> Boolean,true,false,) +TypeMember(method isComplete,=> Boolean,true,false,) +TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,) +TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,) +TypeMember(method notify,()Unit,true,true,) +TypeMember(method notifyAll,()Unit,true,true,) +TypeMember(method raise,(exc: Throwable)Unit,true,false,) +TypeMember(value self,Any,false,false,method any2stringadd) +TypeMember(method set,(x: U)Unit,true,false,) +TypeMember(method setProvisionally,(x: U)Unit,true,false,) +TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,) +TypeMember(method toString,()java.lang.String,true,true,) +TypeMember(method wait,()Unit,true,true,) +TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,) +TypeMember(method wait,(x$1: Long)Unit,true,true,) +TypeMember(value x,=> scala.tools.nsc.interactive.Response[U],true,false,method any2ArrowAssoc) +TypeMember(value x,scala.tools.nsc.interactive.Response[U],false,false,method any2ArrowAssoc) +askTypeCompletion at Tester.scala(27,23) + +================================================================================ +[response] aksTypeCompletion at (27,23) +retreived 196 members +TypeMember(method $asInstanceOf,[T0]()T0,true,false,method any2stringadd) +TypeMember(method !=,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method !=,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ##,()Int,true,false,method any2stringadd) +TypeMember(method $isInstanceOf,[T0]()Boolean,true,false,method any2stringadd) +TypeMember(method ->,[B](y: B)(scala.tools.nsc.Settings, B),true,false,method any2ArrowAssoc) +TypeMember(method +,(other: String)java.lang.String,true,false,method any2stringadd) +TypeMember(method →,[B](y: B)(scala.tools.nsc.Settings, B),true,false,method any2ArrowAssoc) +TypeMember(constructor Settings,(errorFn: (String) => Unit)scala.tools.nsc.Settings,true,false,) +TypeMember(constructor Settings,()scala.tools.nsc.Settings,true,false,) +TypeMember(constructor StringAdd,(self: Any)scala.runtime.StringAdd,true,false,method any2stringadd) +TypeMember(constructor ArrowAssoc,(x: scala.tools.nsc.Settings)ArrowAssoc[scala.tools.nsc.Settings],true,false,method any2ArrowAssoc) +TypeMember(trait AbsSetting,Tester.this.settings.AbsSetting,true,true,) +TypeMember(trait AbsSettingValue,Tester.this.settings.AbsSettingValue,true,true,) +TypeMember(class BooleanSetting,Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method BooleanSetting,(name: String,descr: String)Tester.this.settings.BooleanSetting,true,true,) +TypeMember(class ChoiceSetting,Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(method ChoiceSetting,(name: String,helpArg: String,descr: String,choices: List[String],default: String)Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(class IntSetting,Tester.this.settings.IntSetting,true,true,) +TypeMember(method IntSetting,(name: String,descr: String,default: Int,range: Option[(Int, Int)],parser: (String) => Option[Int])Tester.this.settings.IntSetting,true,true,) +TypeMember(trait InternalSetting,Tester.this.settings.InternalSetting,true,true,) +TypeMember(class MultiStringSetting,Tester.this.settings.MultiStringSetting,true,true,) +TypeMember(method MultiStringSetting,(name: String,arg: String,descr: String)Tester.this.settings.MultiStringSetting,true,true,) +TypeMember(class OutputDirs,Tester.this.settings.OutputDirs,true,true,) +TypeMember(class OutputSetting,Tester.this.settings.OutputSetting,true,true,) +TypeMember(method OutputSetting,(outputDirs: Tester.this.settings.OutputDirs,default: String)Tester.this.settings.OutputSetting,true,true,) +TypeMember(class PathSetting,Tester.this.settings.PathSetting,true,true,) +TypeMember(method PathSetting,(name: String,descr: String,default: String)Tester.this.settings.PathSetting,true,true,) +TypeMember(class PhasesSetting,Tester.this.settings.PhasesSetting,true,true,) +TypeMember(method PhasesSetting,(name: String,descr: String)Tester.this.settings.PhasesSetting,true,true,) +TypeMember(type ResultOfTryToSet,Tester.this.settings.ResultOfTryToSet,true,true,) +TypeMember(class Setting,Tester.this.settings.Setting,true,true,) +TypeMember(class SettingGroup,Tester.this.settings.SettingGroup,true,true,) +TypeMember(lazy value SettingOrdering,=> Ordering[Tester.this.settings.Setting],true,true,) +TypeMember(trait SettingValue,Tester.this.settings.SettingValue,true,true,) +TypeMember(method StringSetting,(name: String,arg: String,descr: String,default: String)Tester.this.settings.StringSetting,true,true,) +TypeMember(class StringSetting,Tester.this.settings.StringSetting,true,true,) +TypeMember(method XO,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xchecknull,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xcloselim,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xdce,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xexperimental,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xhelp,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xlinearizer,=> Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(value XlogImplicits,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xmigration28,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xnojline,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xprint,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(value Xprintpos,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xshowcls,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value Xshowobj,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value Xshowtrees,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xwarnfatal,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Xwarninit,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ybuilderdebug,=> Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(value Ybuildmanagerdebug,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ycompacttrees,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ycompletion,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value YdepMethTpes,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Yhelp,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Yidedebug,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ylogcp,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value YmethodInfer,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ynogenericsig,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ynosqueeze,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ynotnull,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ypmatdebug,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ypmatnaive,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value YpresentationDebug,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value YpresentationLog,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value YpresentationReplay,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value YpresentationVerbose,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Yprofile,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(value YprofileClass,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value YprofileMem,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Yrangepos,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Yrecursion,=> Tester.this.settings.IntSetting,true,true,) +TypeMember(value Yrepldebug,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value YrichExes,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Yshow,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(value Ystatistics,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value Ytyperdebug,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value YvirtClasses,=> Boolean,true,true,) +TypeMember(value Ywarndeadcode,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method add,[T <: Tester.this.settings.Setting](s: T)T,false,true,) +TypeMember(lazy value allSettings,=> scala.collection.mutable.HashSet[Tester.this.settings.Setting],false,true,) +TypeMember(value argfiles,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method asInstanceOf,[T0]=> T0,true,true,) +TypeMember(value assemextdirs,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value assemname,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value assemrefs,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value bootclasspath,=> Tester.this.settings.PathSetting,true,true,) +TypeMember(value browse,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(value check,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(method checkDependencies,=> Boolean,true,true,) +TypeMember(value checkInit,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value classpath,=> Tester.this.settings.PathSetting,true,true,) +TypeMember(method clone,()java.lang.Object,false,true,) +TypeMember(method copy,()scala.tools.nsc.Settings,true,true,) +TypeMember(value d,=> Tester.this.settings.OutputSetting,true,true,) +TypeMember(value debug,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method debuginfo,=> Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(method dependenciesFile,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value dependencyfile,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value deprecation,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value disable,=> Tester.this.settings.MultiStringSetting,true,true,) +TypeMember(method disable,(s: Tester.this.settings.Setting)scala.collection.mutable.HashSet[Tester.this.settings.Setting],true,true,) +TypeMember(value elidebelow,=> Tester.this.settings.IntSetting,true,true,) +TypeMember(method embeddedDefaults,(loader: java.lang.ClassLoader)Unit,true,true,) +TypeMember(method embeddedDefaults,[T](implicit evidence$1: Manifest[T])Unit,true,true,) +TypeMember(value encoding,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(method ensuring,(cond: (scala.tools.nsc.Settings) => Boolean,msg: => Any)scala.tools.nsc.Settings,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: (scala.tools.nsc.Settings) => Boolean)scala.tools.nsc.Settings,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean,msg: => Any)scala.tools.nsc.Settings,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean)scala.tools.nsc.Settings,true,false,method any2Ensuring) +TypeMember(method eq,(x$1: AnyRef)Boolean,true,true,) +TypeMember(method equals,(that: Any)Boolean,true,true,) +TypeMember(value errorFn,(String) => Unit,false,false,) +TypeMember(value explaintypes,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method explicitParentLoader,=> Option[java.lang.ClassLoader],true,true,) +TypeMember(value extdirs,=> Tester.this.settings.PathSetting,true,true,) +TypeMember(method finalize,()Unit,false,true,) +TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd) +TypeMember(value future,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value g,=> Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(value genPhaseGraph,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(method getClasspath,(id: String,loader: java.lang.ClassLoader)Option[String],false,true,) +TypeMember(method hashCode,()Int,true,true,) +TypeMember(value help,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value inline,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,) +TypeMember(value javabootclasspath,=> Tester.this.settings.PathSetting,true,true,) +TypeMember(value javaextdirs,=> Tester.this.settings.PathSetting,true,true,) +TypeMember(value log,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(method lookupSetting,(cmd: String)Option[Tester.this.settings.Setting],true,true,) +TypeMember(value make,=> Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,) +TypeMember(value noCompletion,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value noForwarders,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value noSelfCheck,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value noassertions,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value noimports,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value nospecialization,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method notify,()Unit,true,true,) +TypeMember(method notifyAll,()Unit,true,true,) +TypeMember(value nouescape,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value nowarn,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method nowarnings,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value optimise,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method outdir,=> Tester.this.settings.OutputSetting,true,true,) +TypeMember(lazy value outputDirs,=> Tester.this.settings.OutputDirs,true,true,) +TypeMember(method parseParams,(args: List[String])List[String],false,true,) +TypeMember(value plugin,=> Tester.this.settings.MultiStringSetting,true,true,) +TypeMember(value pluginOptions,=> Tester.this.settings.MultiStringSetting,true,true,) +TypeMember(value pluginsDir,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value print,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method printLate,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value printtypes,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method processArgumentString,(params: String)(Boolean, List[String]),true,true,) +TypeMember(method processArguments,(arguments: List[String],processAll: Boolean)(Boolean, List[String]),true,true,) +TypeMember(value prompt,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method recreateArgs,=> List[String],true,true,) +TypeMember(value refinementMethodDispatch,=> Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(value require,=> Tester.this.settings.MultiStringSetting,true,true,) +TypeMember(value resident,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value script,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value self,Any,false,false,method any2stringadd) +TypeMember(value selfInAnnots,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value showPhases,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value showPlugins,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value skip,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(value sourceReader,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value sourcedir,=> Tester.this.settings.StringSetting,true,true,) +TypeMember(value sourcepath,=> Tester.this.settings.PathSetting,true,true,) +TypeMember(method splitParams,(line: String)List[String],true,true,) +TypeMember(value stop,=> Tester.this.settings.PhasesSetting,true,true,) +TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,) +TypeMember(value target,=> Tester.this.settings.ChoiceSetting,true,true,) +TypeMember(method toConciseString,=> String,true,true,) +TypeMember(method toString,()String,true,true,) +TypeMember(value unchecked,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value uniqid,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value usejavacp,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method userSetSettings,=> scala.collection.Set[Tester.this.settings.Setting],true,true,) +TypeMember(value verbose,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value version,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(method visibleSettings,=> scala.collection.Set[Tester.this.settings.Setting],true,true,) +TypeMember(method wait,()Unit,true,true,) +TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,) +TypeMember(method wait,(x$1: Long)Unit,true,true,) +TypeMember(value writeICode,=> Tester.this.settings.BooleanSetting,true,true,) +TypeMember(value x,=> scala.tools.nsc.Settings,true,false,method any2ArrowAssoc) +TypeMember(value x,scala.tools.nsc.Settings,false,false,method any2ArrowAssoc) +askTypeCompletion at Tester.scala(105,29) + +================================================================================ +[response] aksTypeCompletion at (105,29) +retreived 53 members +TypeMember(method $asInstanceOf,[T0]()T0,true,false,method any2stringadd) +TypeMember(method !=,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method !=,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: AnyRef)Boolean,true,false,method any2stringadd) +TypeMember(method ==,(x$1: Any)Boolean,true,false,method any2stringadd) +TypeMember(method ##,()Int,true,false,method any2stringadd) +TypeMember(method $isInstanceOf,[T0]()Boolean,true,false,method any2stringadd) +TypeMember(method ->,[B](y: B)(scala.tools.nsc.util.SourceFile, B),true,false,method any2ArrowAssoc) +TypeMember(method +,(other: String)java.lang.String,true,false,method any2stringadd) +TypeMember(method →,[B](y: B)(scala.tools.nsc.util.SourceFile, B),true,false,method any2ArrowAssoc) +TypeMember(constructor SourceFile,()scala.tools.nsc.util.SourceFile,true,false,) +TypeMember(constructor StringAdd,(self: Any)scala.runtime.StringAdd,true,false,method any2stringadd) +TypeMember(constructor ArrowAssoc,(x: scala.tools.nsc.util.SourceFile)ArrowAssoc[scala.tools.nsc.util.SourceFile],true,false,method any2ArrowAssoc) +TypeMember(method asInstanceOf,[T0]=> T0,true,true,) +TypeMember(method beginsWith,(offset: Int,text: String)Boolean,true,false,) +TypeMember(method clone,()java.lang.Object,false,true,) +TypeMember(method content,=> Array[Char],true,false,) +TypeMember(method dbg,(offset: Int)java.lang.String,true,false,) +TypeMember(method ensuring,(cond: (scala.tools.nsc.util.SourceFile) => Boolean,msg: => Any)scala.tools.nsc.util.SourceFile,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: (scala.tools.nsc.util.SourceFile) => Boolean)scala.tools.nsc.util.SourceFile,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean,msg: => Any)scala.tools.nsc.util.SourceFile,true,false,method any2Ensuring) +TypeMember(method ensuring,(cond: Boolean)scala.tools.nsc.util.SourceFile,true,false,method any2Ensuring) +TypeMember(method eq,(x$1: AnyRef)Boolean,true,true,) +TypeMember(method equals,(x$1: Any)Boolean,true,true,) +TypeMember(method file,=> scala.tools.nsc.io.AbstractFile,true,false,) +TypeMember(method finalize,()Unit,false,true,) +TypeMember(method formatted,(fmtstr: String)String,true,false,method any2stringadd) +TypeMember(method hashCode,()Int,true,true,) +TypeMember(method identifier,(pos: scala.tools.nsc.util.Position,compiler: scala.tools.nsc.Global)Option[String],true,false,) +TypeMember(method isInstanceOf,[T0]=> Boolean,true,true,) +TypeMember(method isLineBreak,(idx: Int)Boolean,true,false,) +TypeMember(method isSelfContained,=> Boolean,true,false,) +TypeMember(method length,=> Int,true,false,) +TypeMember(method lineToOffset,(index: Int)Int,true,false,) +TypeMember(method lineToString,(index: Int)String,true,false,) +TypeMember(method ne,(x$1: AnyRef)Boolean,true,true,) +TypeMember(method notify,()Unit,true,true,) +TypeMember(method notifyAll,()Unit,true,true,) +TypeMember(method offsetToLine,(offset: Int)Int,true,false,) +TypeMember(method path,=> String,true,false,) +TypeMember(method position,(offset: Int)scala.tools.nsc.util.Position,true,false,) +TypeMember(method position,(line: Int,column: Int)scala.tools.nsc.util.Position,true,false,) +TypeMember(method positionInUltimateSource,(position: scala.tools.nsc.util.Position)scala.tools.nsc.util.Position,true,false,) +TypeMember(value self,Any,false,false,method any2stringadd) +TypeMember(method skipWhitespace,(offset: Int)Int,true,false,) +TypeMember(method synchronized,[T0](x$1: T0)T0,true,true,) +TypeMember(method toString,()String,true,false,) +TypeMember(method wait,()Unit,true,true,) +TypeMember(method wait,(x$1: Long,x$2: Int)Unit,true,true,) +TypeMember(method wait,(x$1: Long)Unit,true,true,) +TypeMember(value x,=> scala.tools.nsc.util.SourceFile,true,false,method any2ArrowAssoc) +TypeMember(value x,scala.tools.nsc.util.SourceFile,false,false,method any2ArrowAssoc) +askTypeAt at Tester.scala(18,13) +[response] askTypeAt at (18,13) +val limit: Long = java.this.lang.System.currentTimeMillis().+(Tester.this.randomDelayMillis) +askTypeAt at Tester.scala(19,11) +[response] askTypeAt at (19,11) +val res: scala.tools.nsc.interactive.Response[U] = new scala.tools.nsc.interactive.Response[U]() diff --git a/test/files/presentation/simple-tests.javaopts b/test/files/presentation/simple-tests.javaopts new file mode 100644 index 0000000000..4af888f9c2 --- /dev/null +++ b/test/files/presentation/simple-tests.javaopts @@ -0,0 +1 @@ +-Dfile.encoding=UTF-8 \ No newline at end of file diff --git a/test/files/presentation/simple-tests/SimpleInteractiveTest.scala b/test/files/presentation/simple-tests/SimpleInteractiveTest.scala new file mode 100644 index 0000000000..014fd24b6f --- /dev/null +++ b/test/files/presentation/simple-tests/SimpleInteractiveTest.scala @@ -0,0 +1,11 @@ +import scala.tools.nsc.interactive.tests._ + +/** Simple test that shows how to use the InteractiveTest class. It uses the + * inherited runTest method that runs completion and typedAt tests on all + * sources found under src/ + */ +object Test extends InteractiveTest { + override val runRandomTests = false +// settings.YpresentationDebug.value = true +// override val synchronousRequests = false +} diff --git a/test/files/presentation/simple-tests/src/Tester.scala b/test/files/presentation/simple-tests/src/Tester.scala new file mode 100644 index 0000000000..cb62187514 --- /dev/null +++ b/test/files/presentation/simple-tests/src/Tester.scala @@ -0,0 +1,204 @@ +package scala.tools.nsc +package interactive +package tests + +import util._ +import reporters._ +import io.AbstractFile +import collection.mutable.ArrayBuffer + +class Tester(ntests: Int, inputs: Array[SourceFile], settings: Settings) { + + val reporter = new StoreReporter + val compiler = new Global(settings, reporter) + + def askAndListen[T, U](msg: String, arg: T, op: (T, Response[U]) => Unit) { + if (settings.verbose./*!*/value) print(msg+" "+arg+": ") + val TIMEOUT = 10 // ms + val limit/*?*/ = System.currentTimeMillis() + randomDelayMillis + val res/*?*/ = new Response[U] + op(arg, res) + while (!res.isComplete && !res.isCancelled) { + if (System.currentTimeMillis() > limit) { + print("c"); res./*!*/cancel() + } else res.get(TIMEOUT) match { + case Some(Left(t)) => + /**/ + if (settings./*!*/verbose.value) println(t) + case Some(Right(ex)) => + ex.printStackTrace() + println(ex) + case None => + } + } + } + + def askReload(sfs: SourceFile*) = askAndListen("reload", sfs.toList, compiler.askReload) + def askTypeAt(pos: Position) = askAndListen("type at", pos, compiler.askTypeAt) + def askTypeCompletion(pos: Position) = askAndListen("type at", pos, compiler.askTypeCompletion) + def askScopeCompletion(pos: Position) = askAndListen("type at", pos, compiler.askScopeCompletion) + + val rand = new java.util.Random() + + private def randomInverse(n: Int) = n / (rand.nextInt(n) + 1) + + private def randomDecreasing(n: Int) = { + var r = rand.nextInt((1 to n).sum) + var limit = n + var result = 0 + while (r > limit) { + result += 1 + r -= limit + limit -= 1 + } + result + } + + def randomSourceFileIdx() = rand.nextInt(inputs.length) + + def randomBatchesPerSourceFile(): Int = randomDecreasing(100) + + def randomChangesPerBatch(): Int = randomInverse(50) + + def randomPositionIn(sf: SourceFile) = rand.nextInt(sf.content.length) + + def randomNumChars() = randomInverse(100) + + def randomDelayMillis = randomInverse(10000) + + class Change(sfidx: Int, start: Int, nchars: Int, toLeft: Boolean) { + + private var pos = start + private var deleted: List[Char] = List() + + override def toString = + "In "+inputs(sfidx)+" at "+start+" take "+nchars+" to "+ + (if (toLeft) "left" else "right") + + def deleteOne() { + val sf = inputs(sfidx) + deleted = sf.content(pos) :: deleted + val sf1 = new BatchSourceFile(sf.file, sf.content.take(pos) ++ sf.content.drop(pos + 1)) + inputs(sfidx) = sf1 + askReload(sf1) + } + + def deleteAll() { + print("/"+nchars) + for (i <- 0 until nchars) { + if (toLeft) { + if (pos > 0 && pos <= inputs(sfidx).length) { + pos -= 1 + deleteOne() + } + } else { + if (pos < inputs(sfidx).length) { + deleteOne() + } + } + } + } + + def insertAll() { + for (chr <- if (toLeft) deleted else deleted.reverse) { + val sf = inputs(sfidx) + val (pre, post) = sf./*!*/content splitAt pos + pos += 1 + val sf1 = new BatchSourceFile(sf.file, pre ++ (chr +: post)) + inputs(sfidx) = sf1 + askReload(sf1) + } + } + } + + val testComment = "/**/" + + def testFileChanges(sfidx: Int) = { + lazy val testPositions: Seq[Int] = { + val sf = inputs(sfidx) + val buf = new ArrayBuffer[Int] + var pos = sf.content.indexOfSlice(testComment) + while (pos > 0) { + buf += pos + pos = sf.content.indexOfSlice(testComment, pos + 1) + } + buf + } + def otherTest() { + if (testPositions.nonEmpty) { + val pos = new OffsetPosition(inputs(sfidx), rand.nextInt(testPositions.length)) + rand.nextInt(3) match { + case 0 => askTypeAt(pos) + case 1 => askTypeCompletion(pos) + case 2 => askScopeCompletion(pos) + } + } + } + for (i <- 0 until randomBatchesPerSourceFile()) { + val changes = Vector.fill(/**/randomChangesPerBatch()) { + /**/ + new Change(sfidx, randomPositionIn(inputs(sfidx)), randomNumChars(), rand.nextBoolean()) + } + doTest(sfidx, changes, testPositions, otherTest) match { + case Some(errortrace) => + println(errortrace) + minimize(errortrace) + case None => + } + } + } + + def doTest(sfidx: Int, changes: Seq[Change], testPositions: Seq[Int], otherTest: () => Unit): Option[ErrorTrace] = { + print("new round with "+changes.length+" changes:") + changes foreach (_.deleteAll()) + otherTest() + def errorCount() = compiler.ask(() => reporter.ERROR.count) +// println("\nhalf test round: "+errorCount()) + changes.view.reverse foreach (_.insertAll()) + otherTest() + println("done test round: "+errorCount()) + if (errorCount() != 0) + Some(ErrorTrace(sfidx, changes, reporter.infos, inputs(sfidx).content)) + else + None + } + + case class ErrorTrace( + sfidx: Int, changes: Seq[Change], infos: collection.Set[reporter.Info], content: Array[Char]) { + override def toString = + "Sourcefile: "+inputs(sfidx)+ + "\nChanges:\n "+changes.mkString("\n ")+ + "\nErrors:\n "+infos.mkString("\n ")+ + "\nContents:\n"+content.mkString + } + + def minimize(etrace: ErrorTrace) {} + + /**/ + def run() { + askReload(inputs: _*) + for (i <- 0 until ntests) + testFileChanges(randomSourceFileIdx()) + } +} + +/* A program to do presentation compiler stress tests. + * Usage: + * + * scala scala.tools.nsc.interactive.test.Tester + * + * where is the number os tests to be run and is the set of files to test. + * This will do random deletions and re-insertions in any of the files. + * At places where an empty comment /**/ appears it will in addition randomly + * do ask-types, type-completions, or scope-completions. + */ +object Tester { + def main(args: Array[String]) { + val settings = new Settings() + val (_, filenames) = settings.processArguments(args.toList.tail, true) + println("filenames = "+filenames) + val files = filenames.toArray map (str => new BatchSourceFile(AbstractFile.getFile(str)): SourceFile) + new Tester(args(0).toInt, files, settings).run() + sys.exit(0) + } +} -- cgit v1.2.3